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