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