Наработка объектов эксплуатации / Модуль объекта

файл
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПриКопировании(ОбъектКопирования)
	
	ИнициализироватьДокумент();
	
КонецПроцедуры

Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
	
	ТипДанныхЗаполнения = ТипЗнч(ДанныеЗаполнения);
	
	Если ТипДанныхЗаполнения = Тип("Структура") Тогда
		
		Если ДанныеЗаполнения.Свойство("ДокументОснование") И ТипЗнч(ДанныеЗаполнения.ДокументОснование) = Тип("Массив") Тогда
			
			ЗаполнитьНаОснованииМассиваРаспоряжений(ДанныеЗаполнения.ДокументОснование);
			
		Иначе
			
			ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
			
		КонецЕсли;
		
	ИначеЕсли ТипДанныхЗаполнения = Тип("СправочникСсылка.ОбъектыЭксплуатации")
		Тогда
		
		ЗаполнитьДокументНаОснованииОбъектаЭксплуатации(ДанныеЗаполнения);
		
	КонецЕсли;
	
	ИнициализироватьДокумент(ДанныеЗаполнения);
	
КонецПроцедуры

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	
	МассивНепроверяемыхРеквизитов = Новый Массив;
	
	МассивНепроверяемыхРеквизитов.Добавить("Наработки.ОбъектЭксплуатации");
	
	Документы.НаработкаОбъектовЭксплуатации.ПроверкаТаблицыНаработок(ЭтотОбъект, Наработки, Отказ);
	
	ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов);
	
КонецПроцедуры

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(ЭтотОбъект);
	
	ПроведениеДокументов.ПередЗаписьюДокумента(ЭтотОбъект, РежимЗаписи, РежимПроведения);
	
	
КонецПроцедуры

Процедура ПриЗаписи(Отказ)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ПроведениеДокументов.ПриЗаписиДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	ПроведениеДокументов.ОбработкаПроведенияДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

Процедура ОбработкаУдаленияПроведения(Отказ)
	
	ПроведениеДокументов.ОбработкаУдаленияПроведенияДокумента(ЭтотОбъект, Отказ);
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// Инициализирует документ
//
Процедура ИнициализироватьДокумент(ДанныеЗаполнения = Неопределено)
	
	Дата = ТекущаяДатаСеанса();
	Ответственный = Пользователи.ТекущийПользователь();
	
КонецПроцедуры

// Заполняет документ на основании массива
//
Процедура ЗаполнитьНаОснованииМассиваРаспоряжений(МассивРаспоряжений)
	
	Наработки.Очистить();
	Для Каждого Распоряжение Из МассивРаспоряжений Цикл
		НоваяСтрока = Наработки.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, Распоряжение);
	КонецЦикла;
	
КонецПроцедуры

// Заполняет документ на основании объекта 
//
Процедура ЗаполнитьДокументНаОснованииОбъектаЭксплуатации(ДанныеЗаполнения)
	
	Наработки.Очистить();
	
	УстановитьПривилегированныйРежим(Истина);
	
	ТекстЗапроса = РегистрацияНаработокЛокализация.ТекстЗапросаДляЗаполненияДокументаНаОснованииОбъектаЭксплуатации();
	
	Если ТекстЗапроса = Неопределено Тогда
		
		ТекстЗапроса =
		"
		|ВЫБРАТЬ
		|	Объекты.Ссылка КАК ОбъектЭксплуатации,
		|	ЕСТЬ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='объекта эксплуатации'"),
					Выборка.ОбъектЭксплуатации);
				ВызватьИсключение ТекстОшибки;
			КонецЕсли;
			
			ЗаполнитьЗначенияСвойств(Наработки.Добавить(), Выборка);
		КонецЦикла;
		
	КонецЕсли;
	
	
КонецПроцедуры


#КонецОбласти

#КонецЕсли

Связанные материалы