Отбор (размещение) товаров / Настройки / Модуль формы

файл

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

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

	СобытияФорм.ПриСозданииНаСервере(ЭтаФорма, Отказ, СтандартнаяОбработка);

КонецПроцедуры

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

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

&НаКлиенте
Процедура РабочийУчастокПриИзменении(Элемент)
	РабочийУчастокПриИзмененииСервер();	
КонецПроцедуры

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

&НаКлиенте
Процедура ОграничиватьПоВесуПриИзменении(Элемент)
	Элементы.ГруппаОграничениеПоВесу.Доступность = ОграничиватьПоВесу;
КонецПроцедуры

&НаКлиенте
Процедура НазначатьИсполнителяПриИзменении(Элемент)
	Элементы.Исполнитель.Доступность		   	= НазначитьИсполнителя;
КонецПроцедуры

&НаКлиенте
Процедура ПечататьЗаданияПриИзменении(Элемент)
	Элементы.ПечатьНаПринтер.Доступность		= ПечататьЗадания;
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ЗакрытьБезСохранения(Команда)
	Закрыть(КодВозвратаДиалога.Отмена);
КонецПроцедуры

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

	Если Элементы.НастройкиЗаданияНаОтбор.Видимость Тогда
		ВладелецФормыРасширенная.НастройкаФормированияПоРабочимУчасткам = НастройкаФормированияПоРабочимУчасткам;	
		ВладелецФормыРасширенная.ОграничениеПоВесу = ОграничениеПоВесу;
		ВладелецФормыРасширенная.ОграничениеПоОбъему = ОграничениеПоОбъему;
		ВладелецФормыРасширенная.ОграничиватьПоВесу = ОграничиватьПоВесу;
		ВладелецФормыРасширенная.ОграничиватьПоОбъему = ОграничиватьПоОбъему;
		ВладелецФормыРасширенная.РабочийУчасток = РабочийУчасток;
	КонецЕсли;
	
	Если Элементы.ПечататьЗадания.Видимость Тогда
		ВладелецФормыРасширенная.ПечататьЗадания = ПечататьЗадания;		
	КонецЕсли;
	Если Элементы.ПечатьНаПринтер.Видимость Тогда
		ВладелецФормыРасширенная.ПечатьНаПринтер = ПечатьНаПринтер;		
	КонецЕсли;	
	
	ИдентификаторСкладаПомещения = Строка(Склад.УникальныйИдентификатор()) + Строка(Помещение.УникальныйИдентификатор());

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

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтаФорма, Команда);
	
КонецПроцедуры

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

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

&НаСервереБезКонтекста
Процедура ХранилищеОбщихНастроекСохранить(ВладелецНастроек, Операция, ИдентификаторСкладаПомещения, ПараметрыЗакрытия)
	
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
		"ФормаОтборРазмещениеФормаНастроекНастройкиФормы" + ВладелецНастроек + Операция + ИдентификаторСкладаПомещения,
		 "",
		ПараметрыЗакрытия);
	
КонецПроцедуры

&НаСервере
Процедура РабочийУчастокПриИзмененииСервер()
	ЗаполнитьОграниченияПоРабочемуУчастку();
	УстановитьДоступность();
КонецПроцедуры

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

&НаСервере
Процедура УстановитьВидимость()

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

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

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

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

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