silverbook fd07bd2918 фвв
2025-05-14 09:09:27 +05:00

4.7 KiB

title, slug
title slug
Программное указание серий в документе "Перемещение товаров" примеры-сниппеты-бсп-и-типовые-erp-серии-номенклатуры/программное-указание-серий-в-документе-перемещение-товаров

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

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

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

Пример

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

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