Счет-фактура выданный (аванс) / Выбор товаров по заказам клиентов / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	ЗаполнитьДеревоТоваров(Параметры.ПлатежныйДокумент); 
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиЭлементовФормы

&НаКлиенте
Процедура ТоварыПометкаПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
	Для каждого ПодчиненнаяСтрока Из ТекущаяСтрока.ПолучитьЭлементы() Цикл
		ПодчиненнаяСтрока.Пометка = ТекущаяСтрока.Пометка;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПередУдалением(Элемент, Отказ)
	Отказ = Истина;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	Отказ = Истина;
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ПеренестиВДокумент(Команда)
	
	ПеренестиТоварыВДокумент();
	
КонецПроцедуры

&НаКлиенте
Процедура УстановитьПометки(Команда)
	
	ИзменитьПометкуДляВсехСтрок(Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура СнятьПометки(Команда)
	
	ИзменитьПометкуДляВсехСтрок(Ложь);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаСервере
Процедура ЗаполнитьДеревоТоваров(ПлатежныйДокумент)
	
	ТаблицаТоваров = Документы.СчетФактураВыданныйАванс.ТоварыЗаказовКлиентов(ПлатежныйДокумент);
	
	ТаблицаЗаказыКлиента = ТаблицаТоваров.Скопировать();
	ТаблицаЗаказыКлиента.Свернуть("ЗаказКлиента, Валюта", "СуммаСНДС, СуммаНДС");
	
	Для каждого СтрокаЗаказ Из ТаблицаЗаказыКлиента Цикл
		НоваяСтрокаЗаказ = Товары.ПолучитьЭлементы().Добавить();
		НоваяСтрокаЗаказ.Пометка = Истина;
		ЗаполнитьЗначенияСвойств(НоваяСтрокаЗаказ, СтрокаЗаказ);
		
		Отбор = Новый Структура("ЗаказКлиента", СтрокаЗаказ.ЗаказКлиента);
		СтрокиТовары = ТаблицаТоваров.НайтиСтроки(Отбор);
		Для каждого СтрокаТовар Из СтрокиТовары Цикл
			НоваяСтрокаТовары = НоваяСтрокаЗаказ.ПолучитьЭлементы().Добавить();
			НоваяСтрокаТовары.Пометка = Истина;
			ЗаполнитьЗначенияСвойств(НоваяСтрокаТовары, СтрокаТовар, , "ЗаказКлиента");
			НоваяСтрокаТовары.ИндексНабора = ?(ЗначениеЗаполнено(НоваяСтрокаТовары.НоменклатураНабора), 1, 0);
		КонецЦикла;
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ПеренестиТоварыВДокумент()
	
	// Снятие модифицированности, т.к. перед закрытием признак проверяется.
	Модифицированность = Ложь;
	АдресТоваровВХранилище = ПоместитьТоварыВХранилище();
	Закрыть(АдресТоваровВХранилище);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ИзменитьПометкуДляВсехСтрок(Пометка)
	
	Для каждого СтрокаЗаказа Из Товары.ПолучитьЭлементы() Цикл
		СтрокаЗаказа.Пометка = Пометка;
		Для каждого СтрокаНоменклатура Из СтрокаЗаказа.ПолучитьЭлементы() Цикл
			СтрокаНоменклатура.Пометка = Пометка;
		КонецЦикла;
	КонецЦикла;
	
КонецПроцедуры

#КонецОбласти

Связанные материалы