Ввод остатков внеоборотных активов / Модуль объекта

файл

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

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

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

КонецПроцедуры

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

		МассивНепроверяемыхРеквизитов.Добавить("Партнер");
		МассивНепроверяемыхРеквизитов.Добавить("Контрагент");
		МассивНепроверяемыхРеквизитов.Добавить("ГруппаФинансовогоУчета");
		МассивНепроверяемыхРеквизитов.Добавить("Местонахождение");
		
		МассивНепроверяемыхРеквизитов.Добавить("ПрочиеРасходы.ВнеоборотныйАктив");
		МассивНепроверяемыхРеквизитов.Добавить("ПрочиеРасходы.Сумма");
		МассивНепроверяемыхРеквизитов.Добавить("ПрочиеРасходы.СуммаРегл");
		МассивНепроверяемыхРеквизитов.Добавить("ПрочиеРасходы.СуммаБезНДС");
		
		ПроверитьЗаполнениеТЧ("ПрочиеРасходы", ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов, Отказ);

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

		МассивНепроверяемыхРеквизитов.Добавить("ГруппаФинансовогоУчета");
		МассивНепроверяемыхРеквизитов.Добавить("ВидАктивов");
		МассивНепроверяемыхРеквизитов.Добавить("Местонахождение");
		МассивНепроверяемыхРеквизитов.Добавить("РасчетыПоДоговорамАренды.СуммаРегл");
		
		Если НЕ ОтражатьВБУиНУ И НЕ ОтражатьВУУ Тогда
			МассивНепроверяемыхРеквизитов.Добавить("РасчетыПоДоговорамАренды.СчетУчета");
		КонецЕсли;

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

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

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

КонецПроцедуры

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

КонецПроцедуры

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

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

КонецПроцедуры

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

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

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

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

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

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

Процедура ПроверитьЗаполнениеТЧ(ИмяТЧ, ПроверяемыеРеквизиты, МассивНепроверяемыхРеквизитов, Отказ) Экспорт

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

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

Процедура УниверсальнаяПроверкаТЧ(ИмяТЧ, ПроверяемыеРеквизиты, Отказ)

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

Процедура ПроверкаТабличнойЧастиПрочиеРасходы(Отказ)

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

Процедура ПроверитьРеквизитыТЧ(ИмяТЧ, Отказ)

	Если НЕ ОтражатьВОперативномУчете Тогда
		Возврат;
	КонецЕсли;

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

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

#Область ОбработкаПередЗаписью

Процедура ЗаполнитьРеквизитыПередЗаписью()
		
	ВалютаУпр = Константы.ВалютаУправленческогоУчета.Получить();
	ВалютаРегл = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
	
	Для каждого ДанныеСтроки Из ОС Цикл
		
		Если НЕ НастройкиНалоговУчетныхПолитикПовтИсп.РеглУчетВНАВедетсяНезависимо(Организация, КонецМесяца(?(Дата <> '000101010000', Дата, ТекущаяДатаСеанса())))
			И ВалютаУпр = ВалютаРегл Тогда
	
			ДанныеСтроки.ТекущаяСтоимостьУУ = ДанныеСтроки.ТекущаяСтоимостьБУ;
			ДанныеСтроки.НакопленнаяАмортизацияУУ = ДанныеСтроки.НакопленнаяАмортизацияБУ;
			ДанныеСтроки.ПервоначальнаяСтоимостьУУ = ДанныеСтроки.ПервоначальнаяСтоимостьБУ;
			ДанныеСтроки.РезервПереоценкиСтоимости = ДанныеСтроки.РезервПереоценкиСтоимостиРегл;
			ДанныеСтроки.ЛиквидационнаяСтоимость = ДанныеСтроки.ЛиквидационнаяСтоимостьРегл;
		КонецЕсли;
		 
	КонецЦикла; 
		
	Для каждого ДанныеСтроки Из НМА Цикл
		
		Если НЕ НастройкиНалоговУчетныхПолитикПовтИсп.РеглУчетВНАВедетсяНезависимо(Организация, КонецМесяца(?(Дата <> '000101010000', Дата, ТекущаяДатаСеанса())))
			И ВалютаУпр = ВалютаРегл Тогда
				
			ДанныеСтроки.ТекущаяСтоимостьУУ = ДанныеСтроки.ТекущаяСтоимостьБУ;
			ДанныеСтроки.НакопленнаяАмортизацияУУ = ДанныеСтроки.НакопленнаяАмортизацияБУ;
			ДанныеСтроки.ПервоначальнаяСтоимостьУУ = ДанныеСтроки.ПервоначальнаяСтоимостьБУ;
			ДанныеСтроки.РезервПереоценкиСтоимости = ДанныеСтроки.РезервПереоценкиСтоимостиРегл;
		КонецЕсли;
		 
	КонецЦикла; 
	
	Документы.ВводОстатковВнеоборотныхАктивов2_4.ЗаполнитьСуммуНДСРасчетовПоДоговорамАренды(ЭтотОбъект);
	
	ВводОстатковВнеоборотныхАктивовЛокализация.ОбработатьОСПередЗаписью(ЭтотОбъект);
	ВводОстатковВнеоборотныхАктивовЛокализация.ОбработатьНМАПередЗаписью(ЭтотОбъект);
	
КонецПроцедуры

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

#Область Прочее

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

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

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

#КонецЕсли

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