Списание из эксплуатации / Модуль объекта

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

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

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

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

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

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

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

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

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

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

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

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

#Область Заполнение

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

	ЗаполнениеОбъектовПоСтатистике.ЗаполнитьРеквизитыОбъекта(ЭтотОбъект, ДанныеЗаполнения);
	
КонецПроцедуры

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

Процедура ЗаполнитьНаОснованииИнвентаризации(Знач ДанныеЗаполнения)
	
	Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
		ДокументОснование = ДанныеЗаполнения.ДокументОснование;
		МассивНомеровСтрок = ДанныеЗаполнения.МассивНомеровСтрок;
		СообщатьОбОшибках = ДанныеЗаполнения.СообщатьОбОшибках;
	Иначе
		ДокументОснование = ДанныеЗаполнения;
		МассивНомеровСтрок = Неопределено;
		СообщатьОбОшибках = Истина;
	КонецЕсли;
	
	ОперацияВыполнена = Документы.СписаниеИзЭксплуатации.ЗаполнитьНаОснованииИнвентаризации(ЭтотОбъект, МассивНомеровСтрок);
	
	Если НЕ ОперацияВыполнена И СообщатьОбОшибках Тогда
		
		ТекстОшибки = НСтр("ru='В документе %1 отсутствуют строки требующие списания'");
		ТекстОшибки = СтрШаблон(ТекстОшибки, ДокументОснование);
		ОбщегоНазначения.СообщитьПользователю(ТекстОшибки,, "Объект.ДокументОснование");
		
	КонецЕсли; 
	
КонецПроцедуры

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

#Область ПроверкаЗаполнения

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

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

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

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

#КонецЕсли

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