Принятие к учету ОС (2.2) / Форма документа / Модуль формы

файл

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)

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

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

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

&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

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

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

	МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтаФорма, ПараметрыЗаписи);

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

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
	
	СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);

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

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ДокументНаОснованииПриИзменении(Элемент)
	
	Если Объект.ДокументНаОсновании Тогда
		Если СписокТиповДокументаОснования.Количество() > 0 Тогда
			СписокТиповДокументаОснования.ПоказатьВыборЭлемента(Новый ОписаниеОповещения("ВыборТипаДокументаОснования", ЭтаФорма), НСтр("ru='Документ основание'"));
		Иначе
			ОткрытьФорму("Документ.ИнвентаризацияОС.ФормаВыбора", , ЭтаФорма, ЭтаФорма,,, Новый ОписаниеОповещения("ВыборДокументаОснования", ЭтаФорма));
		КонецЕсли;
	Иначе
		Объект.ДокументОснование = Неопределено;
		Объект.ДокументНаОснованииИнвентаризации = Ложь;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура БУПорядокУчетаПриИзменении(Элемент)
	
	ПорядокУчетаНУ = СоответствиеПорядковУчета.Получить(Объект.ПорядокУчетаБУ);
	Объект.ПорядокУчетаНУ = ?(ПорядокУчетаНУ = Неопределено, Объект.ПорядокУчетаНУ, ПорядокУчетаНУ);
	
	ОбновитьСвойстваЭлементов("ПорядокУчетаБУ, ПорядокУчетаНУ");
	
КонецПроцедуры

&НаКлиенте
Процедура БУНачислятьАмортизациюПриИзменении(Элемент)
	
	Если Объект.НачислятьАмортизациюБУ <> Объект.НачислятьАмортизациюНУ Тогда
		Объект.НачислятьАмортизациюНУ = Объект.НачислятьАмортизациюБУ;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура БУМетодНачисленияАмортизацииПриИзменении(Элемент)
	
	БУМетодНачисленияАмортизацииПриИзмененииНаСервере();
	
КонецПроцедуры

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

&НаКлиенте
Процедура БУСрокИспользованияПриИзменении(Элемент)
	
	Если Объект.СрокИспользованияНУ = 0
		Или СрокИспользованияБУ = Объект.СрокИспользованияНУ Тогда
		
		Объект.СрокИспользованияНУ = Объект.СрокИспользованияБУ;
		НУСрокИспользованияРасшифровка = ВнеоборотныеАктивыКлиентСервер.ПредставлениеКоличестваМесяцевСтрокой(
			Объект.СрокИспользованияНУ);
		
	КонецЕсли;
	
	БУСрокИспользованияРасшифровка = ВнеоборотныеАктивыКлиентСервер.ПредставлениеКоличестваМесяцевСтрокой(
		Объект.СрокИспользованияБУ);
	
	СрокИспользованияБУ = Объект.СрокИспользованияБУ;
	
КонецПроцедуры

&НаКлиенте
Процедура ВариантРаздельногоУчетаНДСПриИзменении(Элемент)
	ОбновитьСвойстваЭлементов("НДС");
КонецПроцедуры

&НаКлиенте
Процедура НУПорядокУчетаПриИзменении(Элемент)
	ОбновитьСвойстваЭлементов("ПорядокУчетаНУ");
КонецПроцедуры

&НаКлиенте
Процедура НУСрокИспользованияПриИзменении(Элемент)
	
	НУСрокИспользованияРасшифровка = ВнеоборотныеАктивыКлиентСервер.ПредставлениеКоличестваМесяцевСтрокой(
		Объект.СрокИспользованияНУ);
	
КонецПроцедуры

&НаКлиенте
Процедура НУВключитьАмортизационнуюПремиюВСоставРасходовПриИзменении(Элемент)
	
	ОбновитьСвойстваЭлементов("АмортизационнаяПремия");
	
	Если ЗначениеЗаполнено(Объект.АмортизационнаяГруппа)
		И Объект.АмортизационнаяГруппа <> ПредопределенноеЗначение("Перечисление.АмортизационныеГруппы.ОтдельнаяГруппа") Тогда
		
		Объект.ПроцентКапитальныхВложенийВключаемыхВРасходыНУ = 10;
		Если СписокАмортизационныхГрупп.НайтиПоЗначению(Объект.АмортизационнаяГруппа) <> Неопределено Тогда
			Объект.ПроцентКапитальныхВложенийВключаемыхВРасходыНУ = 30;
		КонецЕсли;
		
	КонецЕсли;
	
КонецПроцедуры

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

&НаКлиенте
Процедура АдресМестонахожденияОчистка(Элемент, СтандартнаяОбработка)
	
	АдресМестонахожденияЗначенияПолей = "";
	
КонецПроцедуры

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

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

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

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

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

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

&НаКлиенте
Процедура АналитикаРасходовОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура АналитикаРасходовНалогНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.НачалоВыбораАналитикиРасходов(ЭтотОбъект, Элемент, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура АналитикаРасходовНалогАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.АвтоПодборАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура АналитикаРасходовНалогОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка)
	
	ДоходыИРасходыКлиент.ОкончаниеВводаТекстаАналитикиРасходов(ЭтотОбъект, Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ГруппаОСПриИзменении(Элемент)
	
	ГруппаОСПриИзмененииСервер();
	
КонецПроцедуры

&НаСервере
Процедура ГруппаОСПриИзмененииСервер()
	
	ОбновитьСвойстваЭлементов("ГруппаОС");
	
КонецПроцедуры

&НаКлиенте
Процедура КодОКОФПриИзменении(Элемент)
	
	Если Не ЗначениеЗаполнено(Объект.АмортизационнаяГруппа) И ЗначениеЗаполнено(Объект.КодПоОКОФ) Тогда
		КодОКОФПриИзмененииНаСервере();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура КодОКОФНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	ПараметрыОткрытия = Новый Структура();
	ПараметрыОткрытия.Вставить("КодПоОКОФ", Объект.КодПоОКОФ);
	ПараметрыОткрытия.Вставить("АмортизационнаяГруппа", Объект.АмортизационнаяГруппа);
	
	ОткрытьФорму("ОбщаяФорма.ФормаВыбораАмортизационнойГруппы", ПараметрыОткрытия, ЭтаФорма);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ДатаПриИзменении(Элемент)
	
	ДатаПриИзмененииНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
	
	ОрганизацияПриИзмененииНаСервере();
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура АмортизационнаяГруппаПриИзменении(Элемент)
	
	ОбновитьСвойстваЭлементов("АмортизационнаяГруппа");
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыОС

&НаКлиенте
Процедура ОСПослеУдаления(Элемент)
	
	ОбновитьСвойстваЭлементов("ОсновноеСредство");
	
КонецПроцедуры

&НаКлиенте
Процедура ОСПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
	
	ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
	ОССтоимостьБУ = ТекущиеДанные.СтоимостьБУ;
	
КонецПроцедуры

&НаКлиенте
Процедура ОСОсновноеСредствоПриИзменении(Элемент)
	
	ОСОсновноеСредствоПриИзмененииНаСервере();
	
КонецПроцедуры

&НаКлиенте
Процедура ОССтоимостьБУПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
	
	Если ТекущиеДанные.СтоимостьНУ = ОССтоимостьБУ Тогда
		ТекущиеДанные.СтоимостьНУ = ТекущиеДанные.СтоимостьБУ;
		ОССтоимостьБУ = ТекущиеДанные.СтоимостьБУ;
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ОССтоимостьНУПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
	ТекущиеДанные.СтоимостьВР = ТекущиеДанные.СтоимостьБУ - ТекущиеДанные.СтоимостьНУ - ТекущиеДанные.СтоимостьПР;
	
КонецПроцедуры

&НаКлиенте
Процедура ОССтоимостьПРПриИзменении(Элемент)
	
	ТекущиеДанные = Элементы.ОС.ТекущиеДанные;
	ТекущиеДанные.СтоимостьВР = ТекущиеДанные.СтоимостьБУ - ТекущиеДанные.СтоимостьНУ - ТекущиеДанные.СтоимостьПР;
	Если ТекущиеДанные.СтоимостьВР < 0 Тогда
		ТекущиеДанные.СтоимостьНУ = ТекущиеДанные.СтоимостьНУ + ТекущиеДанные.СтоимостьВР;
		ТекущиеДанные.СтоимостьВР = ТекущиеДанные.СтоимостьБУ - ТекущиеДанные.СтоимостьНУ - ТекущиеДанные.СтоимостьПР;
	КонецЕсли;
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормыЦелевоеФинансирование

&НаКлиенте
Процедура ЦелевоеФинансированиеСчетПриИзменении(Элемент)
	ЦелевоеФинансированиеЗаполнитьСлужебныеРеквизиты(Элементы.ЦелевоеФинансирование.ТекущаяСтрока);
КонецПроцедуры

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

#Область ОбработчикиКомандФормы

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
	ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры


&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
	ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры


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

&НаКлиенте
Процедура ЗаполнитьИсточникиФинансирования(Команда)
	
	ЗаполнитьИсточникиФинансированияНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьИсточникиФинансированияНаСервере()
	
	Объект.ЦелевоеФинансирование.Загрузить(ВнеоборотныеАктивыЛокализация.ДанныеЗаполненияЦелевогоФинансирования(Объект));
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьПоНаименованию(Команда)
	
	ОсновноеСредство = ВнеоборотныеАктивыКлиентЛокализация.ПолучитьОСДляЗаполнениеПоНаименованию(
	ПараметрыЗаполненияПоНаименованию(ЭтаФорма));
	
	Если ЗначениеЗаполнено(ОсновноеСредство) Тогда
		ЗаполнитьПоНаименованиюСервер(ОсновноеСредство);
	КонецЕсли;
	
КонецПроцедуры

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

#Область СтандартныеПодсистемы

&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
	
	СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
	
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
	
	ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
	
КонецПроцедуры

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
	ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
	ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

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

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

&НаКлиенте
Процедура ПровестиДокумент(Команда)
	
	ОбщегоНазначенияУТКлиент.Провести(ЭтаФорма);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Подключаемый_ЗакрытьФорму()
	
	Закрыть();
	
КонецПроцедуры

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	УсловноеОформление.Элементы.Очистить();
			
	#Область ЦелевоеФинансирование
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦелевоеФинансированиеСубконто1.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто1");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто1Заголовок"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦелевоеФинансированиеСубконто1.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто1Разрешено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Ложь;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто1Заголовок"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦелевоеФинансированиеСубконто2.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто2");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто2Заголовок"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦелевоеФинансированиеСубконто2.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто2Разрешено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Ложь;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто2Заголовок"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦелевоеФинансированиеСубконто3.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто3");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто3Заголовок"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	
	//
	
	Элемент = УсловноеОформление.Элементы.Добавить();
	
	ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
	ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ЦелевоеФинансированиеСубконто3.Имя);
	
	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто3Разрешено");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ОтборЭлемента.ПравоеЗначение = Ложь;
	
	Элемент.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", Новый ПолеКомпоновкиДанных("Объект.ЦелевоеФинансирование.Субконто3Заголовок"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
	
	#КонецОбласти
	
КонецПроцедуры

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

&НаСервере
Процедура ЗаполнитьСписокТиповДокументаОснования()
	
	СписокТиповДокументаОснования = Новый СписокЗначений;
	СписокТиповДокументаОснования.Добавить("Документ.ИнвентаризацияОС.ФормаВыбора", НСтр("ru='Инвентаризация ОС'"));
	СписокТиповДокументаОснования.Добавить("Документ.ЗаключениеДоговораАренды.ФормаВыбора", НСтр("ru='Заключение договора аренды'"));
	
КонецПроцедуры

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

&НаКлиентеНаСервереБезКонтекста
Функция ПараметрыЗаполненияПоНаименованию(Форма)
	
	Результат = Новый Структура;
	Результат.Вставить("Форма", Форма);
	Результат.Вставить("Объект", Форма.Объект);
	Результат.Вставить("ИмяТабличнойЧасти", "ОС");
	Результат.Вставить("ПолучатьИнвентарныйНомерИзКода", Истина);
	
	Возврат Результат;
	
КонецФункции

&НаСервере
Процедура ЗаполнитьПоНаименованиюСервер(Знач ОсновноеСредство)
	
	УчетОСВызовСервера.ДозаполнитьТабличнуюЧастьОсновнымиСредствамиПоНаименованию(
		ПараметрыЗаполненияПоНаименованию(ЭтаФорма),
		ОсновноеСредство);
		
	ОбновитьСвойстваЭлементов("ОсновноеСредство");
		
КонецПроцедуры

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

&НаСервереБезКонтекста
Функция ПолучитьАмортизационнуюГруппу(КодПоОКОФ)
	
	Возврат РегистрыСведений.АмортизационныеГруппыОКОФ.ПолучитьАмортизационнуюГруппу(КодПоОКОФ);
	
КонецФункции

&НаСервереБезКонтекста
Функция ЗначенияПолейКонтактнойИнформацииСервер(Знач Представление, Знач ВидКонтактнойИнформации)
	
	Результат = УправлениеКонтактнойИнформацией.КонтактнаяИнформацияПоПредставлению(Представление, ВидКонтактнойИнформации);
	
	Возврат Результат;
	
КонецФункции

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

&НаСервере
Процедура ЦелевоеФинансированиеЗаполнитьСлужебныеРеквизиты(Строка=Неопределено)
	ВнеоборотныеАктивыЛокализация.ЗаполнитьСлужебныеРеквизитыВТаблицеЦелевогоФинансирования(Объект, Строка);
КонецПроцедуры

&НаСервере
Процедура КодОКОФПриИзмененииНаСервере()

	Объект.АмортизационнаяГруппа = ПолучитьАмортизационнуюГруппу(Объект.КодПоОКОФ);
	
	ЗаполнитьПодсказкуКодОКОФ();

	ОбновитьСвойстваЭлементов("АмортизационнаяГруппа");
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПодсказкуКодОКОФ()

	ТекстПодсказки = НСтр("ru = 'Код по классификатору основных фондов'");
	
	Если ЗначениеЗаполнено(Объект.КодПоОКОФ) Тогда
		ТекстПодсказки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Объект.КодПоОКОФ, "Наименование");
	КонецЕсли; 
	
	Элементы.КодОКОФ.Подсказка = ТекстПодсказки;
	
КонецПроцедуры

&НаСервере
Процедура ОрганизацияПриИзмененииНаСервере()

	ПрочитатьПараметрыУчетнойПолитики();
	ОбновитьСвойстваЭлементов("Организация");

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

&НаСервере
Процедура ДатаПриИзмененииНаСервере()

	ПрочитатьПараметрыУчетнойПолитики();
	ОбновитьСвойстваЭлементов("Дата");

КонецПроцедуры
 
&НаСервере
Процедура ПрочитатьПараметрыУчетнойПолитики()

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

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

&НаСервере
Процедура ЗаполнитьСтоимостьНУНаСервере()

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

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

&НаСервереБезКонтекста
Функция СтоимостьОСПоступившихВЛизинг(Знач ОсновноеСредство, Знач Организация, Знач Дата)

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

&НаСервере
Процедура ОСОсновноеСредствоПриИзмененииНаСервере()

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

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

	ОбновитьСвойстваЭлементов("ОсновноеСредство");
	
КонецПроцедуры

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

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