Top.Mail.Ru
Ответы

Нужна помощь с кодом в 1С

Ниже представлен код он по виду товара ищет цену в регистре сведений и заполняет ее в документе, но он заполняет только первую строку дальше не заполняет нужна помощь

&НаКлиенте
Процедура ПрибылоВид_хлебаПриИзменении(Элемент)
ИнформацияОЦене = ПолучитьЦену(Объект.Прибыло[0].Вид_хлеба);
Объект.Прибыло.Цена_закупки = ИнформацияОЦене.Цена_закупки;

КонецПроцедуры


&НаСервереБезКонтекста
Функция ПолучитьЦену(Название)

Результат = Новый Структура("Цена_закупки", 0);

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦенаСрезПоследних.Цена_закупки КАК Цена_закупки
|ИЗ
| РегистрСведений.Цена.СрезПоследних(&Дата, Вид_хлеба = &Вид_хлеба) КАК ЦенаСрезПоследних
|ГДЕ
| ЦенаСрезПоследних.Вид_хлеба = &Вид_хлеба";

Запрос.УстановитьПараметр("Вид_хлеба", Название);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Результат.Цена_закупки = Выборка.Цена_закупки;
КонецЕсли;
КонецЕсли;

Возврат Результат;
КонецФункции

По дате
По рейтингу
Аватар пользователя
Просветленный

В вашем коде проблема в том, что вы изменяете значение только для первой строки таблицы значений "Прибыло". Чтобы исправить это, вам нужно пройти по всем строкам таблицы и для каждой строки вызвать функцию получения цены и затем заполнить значение цены в соответствующей строке.

1234567891011121314151617181920212223242526272829303132333435
 &НаКлиенте  
Процедура ПрибылоВид_хлебаПриИзменении(Элемент)   
    Для каждого Строка из Объект.Прибыло Цикл 
        ИнформацияОЦене = ПолучитьЦену(Строка.Вид_хлеба);  
        Строка.Цена_закупки = ИнформацияОЦене.Цена_закупки;  
    КонецЦикла; 
КонецПроцедуры  
 
&НаСервереБезКонтекста  
Функция ПолучитьЦену(Название)  
    Результат = Новый Структура("Цена_закупки", 0);  
 
    Запрос = Новый Запрос;  
    Запрос.Текст =   
    "ВЫБРАТЬ  
    |	ЦенаСрезПоследних.Цена_закупки КАК Цена_закупки  
    |ИЗ  
    |	РегистрСведений.Цена.СрезПоследних(&Дата, Вид_хлеба = &Вид_хлеба) КАК ЦенаСрезПоследних  
    |ГДЕ  
    |    ЦенаСрезПоследних.Вид_хлеба = &Вид_хлеба";  
 
    Запрос.УстановитьПараметр("Вид_хлеба", Название);  
    Запрос.УстановитьПараметр("Дата", ТекущаяДата());  
 
    РезультатЗапроса = Запрос.Выполнить();  
    Если Не РезультатЗапроса.Пустой() Тогда  
        Выборка = РезультатЗапроса.Выбрать();  
        Если Выборка.Следующий() Тогда  
            Результат.Цена_закупки = Выборка.Цена_закупки;  
        КонецЕсли;  
    КонецЕсли;  
 
    Возврат Результат;      
КонецФункции 
 
Аватар пользователя
Знаток
7мес

Удаленное обслуживание программ 1С по всем регионам России!
Ремонт компьютерной техники через Интернет | Подключение с AnyDesk!
Работаю с 09:00 до 19:00 (МСК) Понедельник-Воскресенье, без праздников!
Очень дешевые цены на обслуживание, перейдите на мой сайт по ссылке ниже!
https://indicator-tradingview.bitrix24site.ru/my-capabilities_page/