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