Skip to content

Программное указание серий в Перемещении товаров

Для программного заполнения документа номенклатурой, оприходованной по сериям, нужно в документе ПеремещениеТоваров заполнить 2 табличные части - Товары и Серии.

После заполнения этих табличных частей необходимо их согласовать. Для этого выполняются следующие методы:

ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(НовыйДокумент, Документы.ПеремещениеТоваров);
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(НовыйДокумент, ПараметрыУказанияСерий);

Пример

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