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