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