4.7 KiB
4.7 KiB
title, slug
title | slug |
---|---|
Программное указание серий в документе "Перемещение товаров" | примеры-сниппеты-бсп-и-типовые-erp-серии-номенклатуры/программное-указание-серий-в-документе-перемещение-товаров |
Для программного заполнения документа номенклатурой, оприходованной по сериям, нужно в документе ПеремещениеТоваров
заполнить 2 табличные части - Товары
и Серии
.
После заполнения этих табличных частей необходимо их согласовать. Для этого выполняются следующие методы:
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(НовыйДокумент, Документы.ПеремещениеТоваров);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(НовыйДокумент, ПараметрыУказанияСерий);
Пример
&НаСервереБезКонтекста
Процедура СоздатьДокументПеремещенияНаСервере(СписаниеТоваров, ДокументПеремещение = Неопределено)
СписаниеОбъект = СписаниеТоваров.ПолучитьОбъект();
НовыйДокумент = Документы.ПеремещениеТоваров.СоздатьДокумент();
...
// Инициализация
...
// Заполняем номенклатуру
Для Каждого Строка Из СписаниеОбъект.СписокНоменклатуры Цикл
СтрокаТовары = НовыйДокумент.Товары.Добавить();
СтрокаТовары.Номенклатура = Строка.Номенклатура;
СтрокаТовары.Количество = Строка.Количество;
СтрокаТовары.КоличествоУпаковок = Строка.Количество;
КонецЦикла;
// заполняем серии
Для Каждого Строка Из СписаниеОбъект.СписокНоменклатуры Цикл
Если ЗначениеЗаполнено(Строка.Серия) Тогда
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Серия", Строка.Серия);
ПараметрыОтбора.Вставить("Номенклатура", Строка.Номенклатура);
ПараметрыОтбора.Вставить("Характеристика", Строка.Характеристика);
ПараметрыОтбора.Вставить("Назначение", Строка.Назначение);
НайденныеСтроки = НовыйДокумент.Серии.НайтиСтроки(ПараметрыОтбора);
Если НайденныеСтроки.Количество() > 0 Тогда
СтрокаСерии = НайденныеСтроки.Получить(0);
СтрокаСерии.Количество = СтрокаСерии.Количество + Строка.Количество;
Иначе
СтрокаСерии = НовыйДокумент.Серии.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаСерии, ПараметрыОтбора);
СтрокаСерии.НазначениеОтправителя = Строка.Назначение;
СтрокаСерии.Количество = Строка.Количество;
КонецЕсли;
КонецЕсли;
КонецЦикла;
// волшебство
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(НовыйДокумент, Документы, ПеремещениеТоваров);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(НовыйДокумент, ПараметрыУказанияСерий);
НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
КонецПроцедуры