Отгрузка товаров со склада / Настройки / Модуль формы

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

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

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

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

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

&НаКлиенте
Процедура НастройкаФормированияПоПомещениямПриИзменении(Элемент)
	Если НастройкаФормированияПоПомещениям = "0" Тогда
		ПоОдномуПомещению = Ложь;
	Иначе	
		ПоОдномуПомещению = Истина;		
	КонецЕсли;			
	
	УстановитьУмолчания();
	УстановитьДоступность()

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

&НаКлиенте
Процедура ПомещениеПриИзменении(Элемент)
	
	ПомещениеПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ЗакрытьССохранением(Команда)
	
	ОчиститьСообщения();
	ОшибкаПроверки = Ложь;

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

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

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

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

#Область Прочее

&НаКлиенте
Процедура ПомещениеПриИзмененииНаСервере()	
	ИспользоватьАдресноеХранение = ИспользоватьАдресноеХранение(Склад, Помещение);
	Элементы.НазначатьЗонуОтгрузки.Видимость = ИспользоватьАдресноеХранение;
	Элементы.ЗонаОтгрузки.Видимость			 = ИспользоватьАдресноеХранение;	
	
	УстановитьУмолчания();
	УстановитьДоступность();
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция ИспользоватьАдресноеХранение(Склад, Помещение)
	
	Возврат СкладыСервер.ИспользоватьАдресноеХранение(Склад, Помещение)
		
КонецФункции

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

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

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

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

Функция ТребуетсяВзвестиИЗаблокироватьНазначитьЗонуОтгрузки()
	
	Если Элементы.НазначатьЗонуОтгрузки.Видимость
		И Элементы.Помещение.Видимость
		И ПоОдномуПомещению Тогда
		Возврат Истина;
	ИначеЕсли Элементы.НазначатьЗонуОтгрузки.Видимость
		И Элементы.Помещение.Видимость
		И Не ПоОдномуПомещению Тогда
		Возврат Ложь;
	ИначеЕсли Элементы.НазначатьЗонуОтгрузки.Видимость
		И Не Элементы.Помещение.Видимость Тогда
		Возврат Истина;
	КонецЕсли;
	
	Возврат Ложь;
	
КонецФункции

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

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

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