Заключение договора аренды / Форма документа / Модуль формы

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

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

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

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

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

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

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

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

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

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

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

	ДоходыИРасходыСервер.ПослеЗаписиНаСервере(ЭтотОбъект);

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

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

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

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

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

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

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

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

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

#Область СтраницаОсновное

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область СтраницаРасчетыПоДоговору

&НаКлиенте
Процедура СуммаОбеспечительногоПлатежаПриИзменении(Элемент)
	
	ПересчитатьСуммуДоговораИСуммуНДС(Объект);
	
	НастроитьЗависимыеЭлементыФормы(Элемент);
	
КонецПроцедуры

&НаКлиенте
Процедура ДатаПервогоОбеспечительногоПлатежаПриИзменении(Элемент)
	НастроитьЗависимыеЭлементыФормы(Элемент);
КонецПроцедуры

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

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

&НаКлиенте
Процедура ДатаПервогоПлатежаПриИзменении(Элемент)
	НастроитьЗависимыеЭлементыФормы(Элемент);
КонецПроцедуры

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

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

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

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

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

&НаКлиенте
Процедура СрокАрендыОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

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

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

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

#Область СтраницаДополнительно

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

&НаКлиенте
Процедура ЗакупкаПодДеятельностьОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
КонецПроцедуры

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

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

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

	РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент,
				ПараметрыПеретаскивания, СтандартнаяОбработка);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

	РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент,
				ПараметрыПеретаскивания, СтандартнаяОбработка);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

	РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если Элемент = Элементы.ОСОсновноеСредство Тогда
		ПараметрыВыбораОС = Новый Массив(Элемент.ПараметрыВыбора);

		Для Каждого ПараметрВыбора Из ПараметрыВыбораОС Цикл

			Если ПараметрВыбора.Имя = "Отбор.БУСостояние" Тогда
				ОтборПоСостоянию = Новый Массив(ПараметрВыбора.Значение);
				ОтборСнятыхСУчета = ОтборПоСостоянию.Найти(ПредопределенноеЗначение("Перечисление.СостоянияОС.СнятоСУчета"));

				Если СозданДляПерехода Тогда
					Если ОтборСнятыхСУчета = Неопределено Тогда
						ОтборПоСостоянию.Добавить(ПредопределенноеЗначение("Перечисление.СостоянияОС.СнятоСУчета"));
					КонецЕсли;
				Иначе
					Если ОтборСнятыхСУчета <> Неопределено Тогда
						ОтборПоСостоянию.Удалить(ОтборСнятыхСУчета);
					КонецЕсли;
				КонецЕсли;

				Прервать;

			КонецЕсли;

		КонецЦикла;

		ПараметрВыбораПоСостояниюОсПриПереходе = Новый ПараметрВыбора("Отбор.БУСостояние",
																		Новый ФиксированныйМассив(ОтборПоСостоянию));

		ПараметрыВыбораОС.Удалить(ПараметрыВыбораОС.Найти(ПараметрВыбора));
		ПараметрыВыбораОС.Добавить(ПараметрВыбораПоСостояниюОсПриПереходе);

		Элемент.ПараметрыВыбора = Новый ФиксированныйМассив(ПараметрыВыбораОС);
	КонецЕсли;

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

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

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

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

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

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

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

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

	ОткрытьФорму("Справочник.ОбъектыЭксплуатации.ФормаВыбора", 
					ПараметрыПодбора, Элементы.ОС,,,,, 
					РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьГрафикОплат(Команда)
	
	ОткрытьГрафикОплатИНачислений("ГрафикОплатУслуг");
	
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьГрафикНачислений(Команда)
	
	ОткрытьГрафикОплатИНачислений("ГрафикНачисленияУслуг");

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

&НаКлиенте
Процедура ОткрытьГрафикНачисленияПроцентов(Команда)
	
	ОткрытьГрафикОплатИНачислений("ГрафикНачисленияПроцентов");

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

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

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

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

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

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

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

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

// СтандартныеПодсистемы.РаботаСФайлами
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)

	РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);

КонецПроцедуры
// Конец СтандартныеПодсистемы.РаботаСФайлами

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

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

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

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

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

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

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

#Область ПриИзмененииРеквизитов

&НаКлиенте
Процедура НастроитьЗависимыеЭлементыФормы(Знач ИзмененныеРеквизитыИлиЭлемент = "")

	Если ТипЗнч(ИзмененныеРеквизитыИлиЭлемент) = Тип("Строка") Тогда
		ИзмененныеРеквизиты = ИзмененныеРеквизитыИлиЭлемент;
	Иначе
		ИзмененныеРеквизиты = ИзмененныеРеквизитыИлиЭлемент.Имя;
	КонецЕсли;

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

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

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

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

		ЗначениеСвойства =
			ВспомогательныеРеквизиты.ИспользуетсяУчетАрендыПоФСБУ25_2018 
			ИЛИ НЕ УчетЗаБалансом;
			
		Элементы.КартинкаКакЗаполнитьРасчеты.Видимость = ЗначениеСвойства;
		Элементы.ПояснениеКакЗаполнитьРасчеты.Видимость = ЗначениеСвойства;	
	КонецЕсли;
	
	#КонецОбласти
	
	#Область СтраницаОС
	
	Если СтруктураИзмененныхРеквизитов.Свойство("Дата")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Организация")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Договор")
		ИЛИ ОбновитьВсе Тогда
			
		Если ВспомогательныеРеквизиты.ТипДоговора = 
			ПредопределенноеЗначение("Перечисление.ТипыДоговоровАренды.Аренда")
			И ВспомогательныеРеквизиты.СпособОпределенияСтоимостиАктивов = 
			ПредопределенноеЗначение("Перечисление.СпособыОпределенияСтоимостиПредметовАренды.Дисконтирование")
			ИЛИ ВспомогательныеРеквизиты.СпособОпределенияСтоимостиАктивов = 
			ПредопределенноеЗначение("Перечисление.СпособыОпределенияСтоимостиПредметовАренды.ПоСуммеДоговора") Тогда
			
			Элементы.ОССправедливаяСтоимость.Видимость = Истина;
			
		КонецЕсли;
		
		ЗначениеСвойства = 
			(Элементы.ОССправедливаяСтоимость.Видимость
			+ Элементы.ОСНегарантированнаяСтоимость.Видимость
			+ Элементы.ОССтоимость.Видимость) > 1;
		
		Элементы.ОСГруппаСтоимость.ОтображатьЗаголовок = ЗначениеСвойства;
		Элементы.ОСГруппаСтоимость.ОтображатьВШапке = ЗначениеСвойства;
		
	КонецЕсли;
	
	#КонецОбласти
	
	#Область ГруппаПодвал
	
	Если СтруктураИзмененныхРеквизитов.Свойство("НалогообложениеНДС")
		ИЛИ ОбновитьВсе Тогда
		
		ЗакупкаОблагаетсяНДС = УчетНДСУПКлиентСервер.ОтображатьНДСВИтогахДокументаЗакупки(Объект.НалогообложениеНДС);
		
		Если ЗакупкаОблагаетсяНДС Тогда
			Элементы.ГруппаСтраницыНДС.ТекущаяСтраница   = Элементы.СтраницаСНДС;
			Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Элементы.СтраницаВсегоСНДС;
		Иначе
			Элементы.ГруппаСтраницыНДС.ТекущаяСтраница   = Элементы.СтраницаБезНДС;
			Элементы.ГруппаСтраницыВсего.ТекущаяСтраница = Элементы.СтраницаВсегоБезНДС;
		КонецЕсли;
	
	КонецЕсли;
	
	#КонецОбласти
	
	УчетАрендованныхОСКлиентСервер.НастроитьЗависимыеЭлементыФормы_Аренда(Форма, ВспомогательныеРеквизиты, ИзмененныеРеквизиты);
	
КонецПроцедуры

&НаСервере
Процедура НастроитьЗависимыеЭлементыФормыНаСервере(Знач ИзмененныеРеквизиты = "")

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

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

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

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

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

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

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

&НаКлиенте
Функция ТребуетсяВызовСервераДляНастройкиЭлементовФормы(СтруктураИзмененныхРеквизитов)

	Возврат СтруктураИзмененныхРеквизитов.Количество() = 0
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Дата")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Организация")
		ИЛИ СтруктураИзмененныхРеквизитов.Свойство("Договор");

КонецФункции

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

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

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

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

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

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

	УчетНДСУП.ЗаполнитьНалогообложениеНДСЗакупки(
		Объект.НалогообложениеНДС, 
		ПараметрыЗаполнения, 
		УчетНДСКэшированныеЗначенияПараметров);
		
	АктуализироватьЗакупкуПодДеятельность();

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

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

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

&НаСервере
Процедура СуммаВыкупаПредметовАрендыПриИзмененииНаСервере()

	ПересчитатьСуммуДоговораИСуммуНДС(Объект);
	ПересчитатьСуммуНДСВыкупаПредметовАренды(Объект);
	
	НастроитьЗависимыеЭлементыФормыНаСервере("СуммаВыкупаПредметовАренды");
	
КонецПроцедуры

&НаСервере
Процедура СтавкаНДСПриИзмененииНаСервере()
	
	ПересчитатьСуммуДоговораИСуммуНДС(Объект);
	ПересчитатьСуммуНДСВыкупаПредметовАренды(Объект);

	Объект.ПриведеннаяСтоимость = ПриведеннаяСтоимость(Объект, СлужебныеПараметрыФормы.РеквизитыДоговора);

	НастроитьЗависимыеЭлементыФормыНаСервере("СтавкаНДС");
	
КонецПроцедуры

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

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

#Область ПересчетСумм

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

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

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

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

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

	ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
	ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ОС.Стоимость");
	ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;

	Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<рассчитывается автоматически>'"));
	Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветНедоступногоТекста);
	Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Ложь);
	#КонецОбласти
		
КонецПроцедуры

&НаСервере
Процедура ИнициализироватьСлужебныеПараметрыФормы()

	НовыеСлужебныеПараметрыФормы = Новый Структура;
	НовыеСлужебныеПараметрыФормы.Вставить("Балансодержатель", Неопределено);

	ЗначениеПараметра = ВнеоборотныеАктивы.ИспользуетсяУправлениеВНА_2_4(Объект.Дата);
	НовыеСлужебныеПараметрыФормы.Вставить("ИспользуетсяУправлениеВНА_2_4", ЗначениеПараметра);

	ЗначениеПараметра = УчетАрендованныхОС.НачалоУчетаАрендыПоФСБУ25_2018(Объект.Организация);
	НовыеСлужебныеПараметрыФормы.Вставить("НачалоУчетаАрендыПоФСБУ25_2018", ЗначениеПараметра);

	ЗначениеПараметра = УчетАрендованныхОС.ИспользуетсяУчетАрендыПоФСБУ25_2018(Объект.Организация, Объект.Дата, Истина);
	НовыеСлужебныеПараметрыФормы.Вставить("ИспользуетсяУчетАрендыПоФСБУ25_2018", ЗначениеПараметра);

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

	ДобавитьРеквизитыДоговораВСлужебныеПараметрыФормы();
	
КонецПроцедуры

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

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

	АктуализироватьЗакупкуПодДеятельность();

	ИнициализироватьСлужебныеПараметрыФормы();
	
КонецПроцедуры

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

&НаСервере
Процедура НалогообложениеНДСПриИзмененииНаСервере()
	
	ЗаполнитьСтавкуНДС();
	ПересчитатьСуммуДоговораИСуммуНДС(Объект);

	НастроитьЗависимыеЭлементыФормыНаСервере("НалогообложениеНДС,СтавкаНДС");	
	
КонецПроцедуры

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

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

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

&НаСервере
Функция ПоместитьГрафикиВоВременноеХранилище()

	ГрафикиДоговора = Новый Структура;
	ГрафикиДоговора.Вставить("ГрафикНачисленияУслуг", Объект.ГрафикНачисленияУслуг.Выгрузить());
	ГрафикиДоговора.Вставить("ГрафикОплатУслуг", Объект.ГрафикОплатУслуг.Выгрузить());
	ГрафикиДоговора.Вставить("ГрафикНачисленияПроцентов", Объект.ГрафикНачисленияПроцентов.Выгрузить());

	Адрес = ПоместитьВоВременноеХранилище(ГрафикиДоговора, АдресГрафикиДоговора);
		
	Возврат Адрес;
	
КонецФункции

&НаКлиенте
Процедура ОткрытьГрафикОплатИНачисленийЗавершение(РезультатЗакрытия, ДопПараметры) Экспорт

	Если НЕ ЭтоАдресВременногоХранилища(РезультатЗакрытия) Тогда
		Возврат;
	КонецЕсли;

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

&НаСервере
Процедура ОткрытьГрафикОплатИНачисленийЗавершениеНаСервере(Знач РезультатЗакрытия)
	
	Модифицированность = Истина;

	ГрафикиДоговора = ПолучитьИзВременногоХранилища(РезультатЗакрытия);

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

	Объект.ПриведеннаяСтоимость = ПриведеннаяСтоимость(Объект, СлужебныеПараметрыФормы.РеквизитыДоговора);

	НастроитьЗависимыеЭлементыФормыНаСервере(
		"ГрафикОплатУслуг,ГрафикНачисленияУслуг,ГрафикНачисленияПроцентов,ГрафикНачисленияПроцентовВведенВручную");
	
КонецПроцедуры

&НаСервере
Процедура РассчитатьСтавкуСтоимостьПроцентыНаСервере()

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

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

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

&НаСервере
Процедура ЗаполнитьРасчетыПоГрафику()
	
	Модифицированность = Истина;

	УчетАрендованныхОС.ЗаполнитьРасчетыПоГрафикуОплатИНачислений(Объект, СлужебныеПараметрыФормы.РеквизитыДоговора);
	
	ИзмененныеРеквизиты = 
	"СуммаОбеспечительногоПлатежа,ДатаПервогоОбеспечительногоПлатежа,
	|СуммаУслугПоАренде,ДатаПервогоПлатежа,
	|СуммаВыкупаПредметовАренды,СуммаНДСВыкупаПредметовАренды,
	|СуммаНДС,
	|ПериодичностьОплат,ОплатаУслугиПоАренде,
	|ПериодичностьНачислений,НачислениеУслугиПоАренде";

	НастроитьЗависимыеЭлементыФормыНаСервере(ИзмененныеРеквизиты);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВвестиСрокАрендыЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	Если Результат = Неопределено 
		ИЛИ ТипЗнч(Результат) <> Тип("Структура") Тогда
		Возврат;
	КонецЕсли;

	НастроитьЗависимыеЭлементыФормы("ДатаНачалаАренды,СрокЛет,СрокМес,СрокДней");
	
КонецПроцедуры

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

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

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

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

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