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

файл
#Область ОписаниеПеременных

&НаКлиенте
Перем КэшированныеЗначения; //используется механизмом обработки изменения реквизитов ТЧ

&НаКлиенте
Перем ПроверкаКонтрагентовПараметрыОбработчикаОжидания Экспорт;

&НаКлиенте
Перем ФормаДлительнойОперации Экспорт;

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Возврат; // в WE пустой обработчик

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

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

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

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

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	
	Если УчетНДСУПКлиент.ЗаконченоРедактированиеСчетаФактурыПолученного(ВыбранноеЗначение, ИсточникВыбора) Тогда
		НастроитьПредставлениеСчетаФактуры();
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДокументНаОснованииПриИзменении(Элемент)
	
	Если НЕ Объект.ДокументНаОсновании Тогда
		Объект.ДокументОснование = Неопределено;
		Возврат;
	КонецЕсли; 
	

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

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

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

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

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

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

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

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

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

#Область Локализация

&НаКлиенте
Процедура Подключаемый_ПриИзмененииРеквизита(Элемент)

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

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

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

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

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

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

	Если ПараметрыОповещения.ТребуетсяВызовСервера Тогда
		ПриИзмененииРеквизитаЗавершениеНаСервере(ИмяЭлемента, ПараметрыОповещения.ПараметрыОбработки);
	КонецЕсли;

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

	КонецЕсли;
	
КонецПроцедуры

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

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

	Если ДополнительныеПараметры.Свойство("Выполнить_НастроитьЗависимыеЭлементыФормы", ПараметрыДействия) Тогда
		НастроитьЗависимыеЭлементыФормыНаСервере(ПараметрыДействия);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ПодключаемыеКоманды

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

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

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

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

// ИнтеграцияС1СДокументооборотом
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область Заполнение

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

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

&НаКлиенте
Процедура ЗаполнитьПоДоговору()

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

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

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

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

	СтруктураДействий = Новый Структура;
	СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
	СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
	
	ДобавленныеСтроки = Новый Массив();
	Пока Выборка.Следующий() Цикл
		
		ДанныеСтроки = Объект.ОС.Добавить();
		ЗаполнитьЗначенияСвойств(ДанныеСтроки, Выборка);
		
		Если Объект.Валюта <> Объект.ВалютаВзаиморасчетов Тогда
			КоэффициентПересчета = Объект.КурсЧислитель / Объект.КурсЗнаменатель;
		Иначе
			КоэффициентПересчета = 1;
		КонецЕсли;
		
		ДанныеСтроки.Сумма = ДанныеСтроки.СуммаВзаиморасчетов * КоэффициентПересчета;
		
		ДобавленныеСтроки.Добавить(ДанныеСтроки);
		
	КонецЦикла;
	
	ПакетнаяОбработкаТабличнойЧастиСервер.ОбработатьСтрокиТЧ(
		ДобавленныеСтроки,
		СтруктураДействий,
		Объект.ОС,
		КэшированныеЗначения);
	
КонецПроцедуры

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

#Область УчетныеМеханизмы

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

&НаСервере
Процедура УчетныеМеханизмыПриЧтенииНаСервере()

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

&НаСервере
Процедура УчетныеМеханизмыПриЧтенииСозданииНаСервере()
	
	АктуализироватьНалогообложениеНДС(Ложь);
	АктуализироватьЗакупкуПодДеятельность(Ложь);
	НастроитьПредставлениеСчетаФактуры();
	
КонецПроцедуры

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

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

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

	ПараметрыЗаполнения = Документы.ВыкупАрендованныхОС.ПараметрыЗаполненияНалогообложенияНДСЗакупки(Объект);

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

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

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

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

#Область РаботаСКонтрагентами

// ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

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

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

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

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

// Конец ИнтернетПоддержкаПользователей.РаботаСКонтрагентами

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

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

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

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

	НастроитьЗависимыеЭлементыФормыНаСервере();
	
	УчетныеМеханизмыПриЧтенииСозданииНаСервере();

	ЗакупкиСервер.ЗаполнитьСписокВыбораНаименованиеВходящегоДокумента(ЭтотОбъект, Объект.Контрагент);

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

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

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

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

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

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

&НаСервере
Процедура ПриИзмененииВалютыСервер(СтараяВалюта, НоваяВалюта)
	
	ДатаДокумента = ?(ЗначениеЗаполнено(Объект.Дата), Объект.Дата, ТекущаяДатаСеанса());
	БазоваяВалюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Объект.Организация);
	СтруктураКурсовСтаройВалюты = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(СтараяВалюта, ДатаДокумента, БазоваяВалюта);
	СтруктураКурсовНовойВалюты  = РаботаСКурсамиВалютУТ.ПолучитьКурсВалюты(НоваяВалюта,  ДатаДокумента, БазоваяВалюта);
	
	СуммаКРаспределению = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
		Объект.ОС.Итог("СуммаСНДС"),
		СтруктураКурсовСтаройВалюты,
		СтруктураКурсовНовойВалюты);
	
	МассивСумм = Новый Массив;
	Для Каждого ТекСтрока Из Объект.ОС Цикл
		
		МассивСумм.Добавить(
			РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
				ТекСтрока.СуммаСНДС,
				СтруктураКурсовСтаройВалюты,
				СтруктураКурсовНовойВалюты));
	КонецЦикла;
	
	МассивСумм = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(СуммаКРаспределению, МассивСумм);
	
	Если МассивСумм <> Неопределено Тогда
		
		Для н = 0 По Объект.ОС.Количество()-1 Цикл
			
			ТекСтрока = Объект.ОС[н];
			ТекСтрока.СуммаСНДС = МассивСумм[н];
			
			СтавкаНДСЧислом = УчетНДСУПКлиентСервер.ЗначениеСтавкиНДС(ТекСтрока.СтавкаНДС);
			
			Если ЗначениеЗаполнено(ТекСтрока.СуммаСНДС) Тогда
				ТекСтрока.СуммаНДС = Окр(ТекСтрока.СуммаСНДС * (СтавкаНДСЧислом/(100+СтавкаНДСЧислом)), 2);
				ТекСтрока.Сумма = ТекСтрока.СуммаСНДС - ?(Объект.ЦенаВключаетНДС, 0, ТекСтрока.СуммаНДС);
			КонецЕсли;
			
			ТекСтрока.СуммаВзаиморасчетов = 0;
			
		КонецЦикла;
		
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ПоляПересчетаСуммыНДСВСтрокеТЧ(Форма)
	
	СтруктураПересчетаСуммы = ПакетнаяОбработкаТабличнойЧастиКлиентСервер.ПараметрыПересчетаСуммыНДСВТЧ(Форма.Объект);
	
	Возврат СтруктураПересчетаСуммы;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

&НаСервере
Процедура ЗачетАвансовЗавершениеНаСервере(РезультатЗакрытия)

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

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

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


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

	Возврат ДанныеКорректны;
КонецФункции

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

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

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

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

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

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

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

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

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

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