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