Передача ОС в аренду / Форма документа / Модуль формы

файл

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

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

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

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

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

	// ЭлектронноеВзаимодействие.ОбменСКонтрагентами
	ОбменСКонтрагентамиКлиент.ПриОткрытии(ЭтотОбъект);
	// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	НастроитьЗависимыеЭлементыФормы(Элемент);

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

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

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

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

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

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовБУ,СтатьяРасходовБУ");
	
КонецПроцедуры

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

&НаКлиенте
Процедура АналитикаРасходовБУПриИзменении(Элемент)

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

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

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

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

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

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

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовБУ,НаправлениеДеятельностиБУ");

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

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

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

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

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

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовУУ,СтатьяРасходовУУ");
	
КонецПроцедуры

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

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

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

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

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

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

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

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

	НастроитьЗависимыеЭлементыФормы("СпособОтраженияРасходовУУ,НаправлениеДеятельностиУУ");

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ШтрихкодыИТорговоеОборудование

&НаКлиенте
Процедура ЗагрузитьДанныеИзТСД(Команда)
	
	ВыполнитьЗагрузкуДанныеИзТСД();
	
КонецПроцедуры

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

#Область УниверсальныеМеханизмы_Команды

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

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

// ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

// Конец ЭлектронноеВзаимодействие.ОбменСКонтрагентами

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

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

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

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

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

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

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

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

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

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

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

#Область ШтрихкодыИТорговоеОборудование

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

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

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

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

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

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

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

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

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

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

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

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

	#КонецОбласти
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

	ВнеоборотныеАктивыКлиент.ПриИзмененииПредставленияАдреса(
		Элемент,
		Объект.АдресМестонахождения,
		Объект.АдресМестонахожденияЗначение);

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

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

&НаСервере
Процедура ЗаполнитьШапкуПоВыбраннымОС()

	ВнеоборотныеАктивыСлужебный.ЗаполнитьШапкуПоВыбраннымОС("Организация,Подразделение", Объект.ОС, Объект);
	
КонецПроцедуры

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

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

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

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

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

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

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

&НаКлиенте
Процедура ОткрытьЗаполнитьГрафик(ВыбранноеЗначение)

	Если ВыбранноеЗначение = Неопределено Тогда
		Возврат;
	КонецЕсли;

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

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

&НаСервереБезКонтекста
Функция ПоместитьГрафикиВоВременноеХранилище(Знач Объект, Знач УникальныйИдентификатор)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура УстановитьДоступностьПечатиСправки(СтрокаОС)
	
	Если СтрокаОС <> Неопределено Тогда
		Элементы.ОССправкаРасчетНачисленияПроцентов.Доступность = 
				НЕ СтрокаОС.ГрафикНачисленияПроцентовВведенВручную;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьСумму(Сумма, СуммаПересчета, Коэффициент)
		
	Если Сумма <> 0 И СуммаПересчета = 0 Тогда
		СуммаПересчета = Сумма * Коэффициент;
	КонецЕсли;
	
КонецПроцедуры
#КонецОбласти

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

&НаСервере
Процедура УстановитьПараметрыВыбораОС()

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

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

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

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