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