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