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