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