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