Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
5.5 kB
3
Indexable
Never
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Отправление") Тогда
		ДокументОтправления = ДанныеЗаполнения.Ссылка;
	КонецЕсли;
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	// ДВИЖЕНИЯ ПО РЕГИСТРУ УПРАВЛЕНЧЕСКИЙ (СТАРАЯ МЕТОДИКА ПРОВЕДЕНИЯ)
	
	Движения.Управленческий.Записывать = Истина;
	Движения.Управленческий.Записать();	

	// Установка блокировки данных в регистре Управленческий по счету ТоварыВПути и документу отправления
	Блокировка = Новый БлокировкаДанных;
	ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
	ЭлементБлокировки.УстановитьЗначение("Счет", ПланыСчетов.Управленческий.ТоварыВПути);
	ЭлементБлокировки.УстановитьЗначение(ПланыВидовХарактеристик.ВидыСубконто.ДокументОтправления, ДокументОтправления);
	ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
	Блокировка.Заблокировать();
	
	// Получение остаточных данных по регистру для формирования движений
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	УправленческийОстатки.Субконто2 КАК Номенклатура,
	|	УправленческийОстатки.КоличествоОстаток КАК КоличествоОстаток,
	|	УправленческийОстатки.СуммаОстаток КАК СуммаОстаток
	|ИЗ
	|	РегистрБухгалтерии.Управленческий.Остатки(&МоментВремени, Счет = &СчетТоварыВПути, &Субконто, Субконто1 = &ДокументОтправления) КАК УправленческийОстатки";
	
	Субконто = Новый Массив (2);
	Субконто[0] = ПланыВидовХарактеристик.ВидыСубконто.ДокументОтправления;
	Субконто[1] = ПланыВидовХарактеристик.ВидыСубконто.Номенклатура;
	
	Запрос.УстановитьПараметр("Субконто", Субконто);	
	Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
	Запрос.УстановитьПараметр("СчетТоварыВПути", ПланыСчетов.Управленческий.ТоварыВПути);
	Запрос.УстановитьПараметр("ДокументОтправления", ДокументОтправления);
	
	// Обход результатов запроса, формирование движений в регистр бухгалтерии
	Результат = Запрос.Выполнить();
	
	Если Не Результат.Пустой() Тогда
		Выборка = Результат.Выбрать();
		Пока Выборка.Следующий() Цикл
			// Проводка отражения прибытия товара
			Проводка = Движения.Управленческий.Добавить();
			Проводка.Период = Дата;
			Проводка.СчетДт = ПланыСчетов.Управленческий.Товары;
			Проводка.СчетКт = ПланыСчетов.Управленческий.ТоварыВПути;
			
			Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
			Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склады] = Склад;
			
			Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура;
			Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ДокументОтправления] = ДокументОтправления;
			Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.ДатаПрибытия] = Дата;
			
			Проводка.КоличествоДт = Выборка.КоличествоОстаток;
			Проводка.КоличествоКт = Выборка.КоличествоОстаток;
			
			Проводка.Сумма = Выборка.СуммаОстаток;
		КонецЦикла;
	КонецЕсли;           		
	
КонецПроцедуры