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