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