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