Панель администрирования УТ / Склад и доставка / Модуль формы

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем ОбновитьИнтерфейс;

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

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

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

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
	Если ЗавершениеРаботы Тогда
		Возврат;
	КонецЕсли;
	ОбновитьИнтерфейсПрограммы();
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПрочееОприходованиеТоваровПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура РедактироватьАдресаДоставкиТолькоВДиалогеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры

&НаКлиенте
Процедура ШаблонЭтикеткиДляДоставкиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);
КонецПроцедуры

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

// Параметры:
// 	Результат - СправочникСсылка.ШаблоныЭтикетокИЦенников
// 	ДополнительныеПараметры - Структура:
//		*Элемент - ПолеФормы
&НаКлиенте
Процедура ШаблонЭтикеткиДляДоставкиНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    Элемент = ДополнительныеПараметры.Элемент;
    
    
    ШаблонЭтикетки =
    Результат;
    Если ШаблонЭтикетки = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    НаборКонстант.ШаблонЭтикеткиДляДоставки = ШаблонЭтикетки;
    
    Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);

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

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

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

// Параметры:
// 	Результат - СправочникСсылка.ШаблоныЭтикетокИЦенников
// 	ДополнительныеПараметры - Структура:
//		*Элемент - ПолеФормы
&НаКлиенте
Процедура ШаблонЭтикеткиУпаковочногоЛистаНачалоВыбораЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    Элемент = ДополнительныеПараметры.Элемент;
    
    
    ШаблонЭтикетки =
    Результат;
    Если ШаблонЭтикетки = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    НаборКонстант.ШаблонЭтикеткиУпаковочногоЛиста = ШаблонЭтикетки;
    
    Подключаемый_ПриИзмененииРеквизита(Элемент, Ложь);

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

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

&НаКлиенте
Процедура ИспользоватьПеремещениеТоваровПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьЗаказыНаПеремещениеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьПеремещениеПоНесколькимЗаказамПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьСтатусыПеремещенийТоваровПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьСтатусыЗаказовНаПеремещениеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ПеремещатьТоварыДругихОрганизацийПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

&НаКлиенте
Процедура ИспользоватьЗаказыНаВнутреннееПотреблениеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

&НаКлиенте
Процедура НеЗакрыватьЗаказыНаВнутреннееПотреблениеБезПолнойОтгрузкиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ВариантОбособленияТоваровВоВнутреннемПотребленииПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура НеЗакрыватьЗаказыНаПеремещениеБезПолнойОтгрузкиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ВариантОбособленияТоваровВПеремещенииПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьВнутреннееПотреблениеПоНесколькимЗаказамПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура НеЗакрыватьЗаказыНаСборкуБезПолнойОтгрузкиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура РежимОформленияНакладныхПриИзменении(Элемент)	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура РежимФормированияПриходныхОрдеровПриИзменении(Элемент)
	
	Подключаемый_ПриИзмененииРеквизита(Элемент);
	ПриИзмененииРежимаФормированияПриходныхОрдеровНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ПриИзмененииРежимаФормированияПриходныхОрдеровНаСервере()
	
	Элементы.РежимФормированияРасходныхОрдеров.Подсказка =
		Перечисления.РежимыФормированияРасходныхОрдеров.ПодсказкаПоРежимуФормирования(НаборКонстант.РежимФормированияРасходныхОрдеров);
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура РазрешитьОбособлениеТоваровСверхПотребностиПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ФормированиеЗаказовПоПотребностямУпрощенноеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ФормированиеЗаказовПоПотребностямРасширенноеПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура КонтролироватьЗапасыТоваровПодлежащихРезервированиюПоМереПоступленияПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ОформлениеОрдераПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаКлиенте
Процедура ОформлениеОрдераОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

&НаКлиенте
Процедура ВариантОбособленияОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

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

&НаКлиенте
Процедура ВыводитьНаправлениеДеятельностиИГКПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура ВыключитьКонтрольРезервовТоваровПоЗаказам(Команда)
	
	ВыключитьКонтрольРезервовТоваровПоЗаказамСервер();
	
КонецПроцедуры

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

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

#Область Клиент

&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент, ОбновлятьИнтерфейс = Истина)
	
	КонстантаИмя = ПриИзмененииРеквизитаСервер(Элемент.Имя);
	
	Если ОбновлятьИнтерфейс Тогда
		ОбновитьИнтерфейс = Истина;
		ПодключитьОбработчикОжидания("ОбновитьИнтерфейсПрограммы", 2, Истина);
	КонецЕсли;
	
	Если КонстантаИмя <> "" Тогда
		Оповестить("Запись_НаборКонстант", Новый Структура, КонстантаИмя);
	КонецЕсли;
	
	НастройкиСистемыКлиентЛокализация.ПриИзмененииРеквизита_СкладИДоставка(Элемент, ЭтотОбъект);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьИнтерфейсПрограммы()
	
	Если ОбновитьИнтерфейс = Истина Тогда
		ОбновитьИнтерфейс = Ложь;
		ОбщегоНазначенияКлиент.ОбновитьИнтерфейсПрограммы();
	КонецЕсли;
	
КонецПроцедуры

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

#Область ВызовСервера

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

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

#Область Сервер

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

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

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

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

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


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


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

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

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

		УстановитьДоступностьФормированиеЗаказовПоПотребностям();

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

&НаСервере
Процедура ОтображениеПредупрежденияПриРедактировании(РеквизитПутьКДанным)
	
	СтруктураКонстант = Новый Структура(
		"ИспользоватьСтатусыПеремещенийТоваров,
		|ИспользоватьСтатусыСборокТоваров,
		|РазрешитьОбособлениеТоваровСверхПотребности");
	
	Для Каждого КлючИЗначение Из СтруктураКонстант Цикл
		ОбщегоНазначенияУТКлиентСервер.ОтображениеПредупрежденияПриРедактировании(
			Элементы[КлючИЗначение.Ключ],
			НаборКонстант[КлючИЗначение.Ключ]);
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура РежимФормированияРасходныхОрдеровНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ОткрытьФорму("Перечисление.РежимыФормированияРасходныхОрдеров.Форма.ВыборРежимаФормирования",
				Новый Структура("РежимФормированияРасходныхОрдеров", НаборКонстант.РежимФормированияРасходныхОрдеров),
				Элемент,
				,
				,
				,
				,
				РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ИспользоватьАктыРасхожденийПослеПеремещенияПриИзменении(Элемент)
	Подключаемый_ПриИзмененииРеквизита(Элемент);
КонецПроцедуры

&НаСервере
Процедура УстановитьДоступностьФормированиеЗаказовПоПотребностям()

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

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


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

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

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

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

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

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