Нужна помощь с кодом в 1С
Ниже представлен код он по виду товара ищет цену в регистре сведений и заполняет ее в документе, но он заполняет только первую строку дальше не заполняет нужна помощь
&НаКлиенте
Процедура ПрибылоВид_хлебаПриИзменении(Элемент)
ИнформацияОЦене = ПолучитьЦену(Объект.Прибыло[0].Вид_хлеба);
Объект.Прибыло.Цена_закупки = ИнформацияОЦене.Цена_закупки;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьЦену(Название)
Результат = Новый Структура("Цена_закупки", 0);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦенаСрезПоследних.Цена_закупки КАК Цена_закупки
|ИЗ
| РегистрСведений.Цена.СрезПоследних(&Дата, Вид_хлеба = &Вид_хлеба) КАК ЦенаСрезПоследних
|ГДЕ
| ЦенаСрезПоследних.Вид_хлеба = &Вид_хлеба";
Запрос.УстановитьПараметр("Вид_хлеба", Название);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Результат.Цена_закупки = Выборка.Цена_закупки;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
В вашем коде проблема в том, что вы изменяете значение только для первой строки таблицы значений "Прибыло". Чтобы исправить это, вам нужно пройти по всем строкам таблицы и для каждой строки вызвать функцию получения цены и затем заполнить значение цены в соответствующей строке.
&НаКлиенте
Процедура ПрибылоВид_хлебаПриИзменении(Элемент)
Для каждого Строка из Объект.Прибыло Цикл
ИнформацияОЦене = ПолучитьЦену(Строка.Вид_хлеба);
Строка.Цена_закупки = ИнформацияОЦене.Цена_закупки;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьЦену(Название)
Результат = Новый Структура("Цена_закупки", 0);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦенаСрезПоследних.Цена_закупки КАК Цена_закупки
|ИЗ
| РегистрСведений.Цена.СрезПоследних(&Дата, Вид_хлеба = &Вид_хлеба) КАК ЦенаСрезПоследних
|ГДЕ
| ЦенаСрезПоследних.Вид_хлеба = &Вид_хлеба";
Запрос.УстановитьПараметр("Вид_хлеба", Название);
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Результат.Цена_закупки = Выборка.Цена_закупки;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Удаленное обслуживание программ 1С по всем регионам России!
Ремонт компьютерной техники через Интернет | Подключение с AnyDesk!
Работаю с 09:00 до 19:00 (МСК) Понедельник-Воскресенье, без праздников!
Очень дешевые цены на обслуживание, перейдите на мой сайт по ссылке ниже!
https://indicator-tradingview.bitrix24site.ru/my-capabilities_page/
