Реализация услуг и прочих активов / Форма документа / Модуль формы

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ДоходыАрендныйКомпонентДоговораПриИзменении(Элемент)
	
	Если Элементы.Доходы.ТекущиеДанные <> Неопределено Тогда
		Если Элементы.Доходы.ТекущиеДанные.АрендныйКомпонентДоговора = Ложь Тогда
			Элементы.Доходы.ТекущиеДанные.ПредметАренды = Неопределено;
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура СоглашениеНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	ПараметрыВыбораСоглашения = ПродажиКлиент.ПараметрыНачалаВыбораСоглашенияСКлиентом();
	
	ПараметрыВыбораСоглашения.Элемент                     = Элемент;
	ПараметрыВыбораСоглашения.Партнер                     = Объект.Партнер;
	ПараметрыВыбораСоглашения.Документ                    = Объект.Соглашение;
	ПараметрыВыбораСоглашения.ДатаДокумента               = Объект.Дата;
	ПараметрыВыбораСоглашения.ДанныеФормыСтруктура        = Объект;
	
	ПродажиКлиент.НачалоВыбораСоглашенияСКлиентом(ПараметрыВыбораСоглашения, СтандартнаяОбработка);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура Подключаемый_ДекорацияСостояниеОригиналаНажатие()

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

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

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

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

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

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

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

	РеализацияУслугПрочихАктивовКлиентЛокализация.ПриИзмененииРеквизита(Элемент.Имя, ЭтаФорма);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура РеквизитыПечати(Элемент)
	
	ОткрытьРеквизитыПечатиРеализации(Ложь);
	
КонецПроцедуры

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

	РеализацияУслугПрочихАктивовКлиентЛокализация.ПриВыполненииКоманды(Команда, ЭтаФорма);

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗачетОплаты(Команда)
	
	ПоместитьРасшифровкуПлатежаВоВременноеХранилище();
	ВзаиморасчетыКлиент.ЗачетОплаты(ЭтаФорма, Элементы.ЗачетОплаты);
	
КонецПроцедуры

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

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

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

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

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

// СтандартныеПодсистемы.Свойства

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

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

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

// Конец СтандартныеПодсистемы.Свойства

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

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

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

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

	УчетНДСУП.УстановитьУсловноеОформлениеКодаТНВЭДПоНалогообложениюПродажи(ЭтаФорма, "Доходы", Ложь);

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

&НаСервереБезКонтекста
Функция НаименованиеТовара(Знач Номенклатура)
	
	Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "НаименованиеПолное")
		
КонецФункции

&НаСервереБезКонтекста
Функция ДанныеНомераГТД(Знач НомерГТД)
		
	Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(НомерГТД, "Номенклатура, НаименованиеТовара"); 
	
КонецФункции

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

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

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

//++ НЕ УТ
#Область ЗаполнениеПоГрафикуПлатежейПоПереданнымВАрендуОС

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

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

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

&НаСервере
Функция СформироватьСодержаниеСтрокиПоАренде(Выборка)
	
	ШаблонСодержания = НСтр("ru = 'Услуги аренды %1 за период с %2 по %3'");
	
	Содержание = СтрШаблон(ШаблонСодержания,
								Выборка.Наименование,
								Формат(Выборка.ДатаНачалаПериодаАренды,"ДЛФ=D;"),
								Формат(Выборка.Дата,"ДЛФ=D;"));
	Возврат Содержание;
	
КонецФункции

#КонецОбласти
//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Процедура ДобавитьДействияПересчетаСумм(Действия, Объект, СтрокаТЧ)
	ДобавитьДействияПересчетаНДС(Действия, Объект);
	Если СтрокаТЧ.Количество > 0 Тогда
		Действия.Вставить("ПересчитатьСумму", "Количество");
	КонецЕсли;
	Действия.Вставить("ОчиститьСуммуВзаиморасчетов");
КонецПроцедуры

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

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

#Область ФискальнаяОперация

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

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

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

//++ НЕ УТ

#Область ВнеоборотныеАктивы

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

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

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

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

	СтруктураИзмененныхРеквизитов = Новый Структура(ИзмененныеРеквизиты);
	
	Если СтруктураИзмененныхРеквизитов.Свойство("Дата") Тогда

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

	КонецЕсли;
	
	РеализацияУслугПрочихАктивовЛокализация.НастроитьЗависимыеЭлементыФормы(ЭтаФорма, СтруктураИзмененныхРеквизитов);
	
	НастроитьЗависимыеЭлементыФормыНаКлиентеНаСервере(ЭтаФорма, ИзмененныеРеквизиты);
	
КонецПроцедуры

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

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

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

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

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

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

	Если ИзмененныеРеквизиты = "" Тогда
		Возврат;
	КонецЕсли;

	ВнеоборотныеАктивыКлиентСерверЛокализация.ПриИзмененииРеквизитов_РеализацияУслугПрочихАктивов(Форма, ИзмененныеРеквизиты);
	
КонецПроцедуры
 
#КонецОбласти

//-- НЕ УТ

#Область ЭкспортЕАЭС

&НаКлиенте
Процедура ТекстОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	//++ Локализация
	
	//++ НЕ УТ
	
	УчетНДСРФКлиент.ОбработкаНавигационнойСсылкиЗаявленияОВвозеТоваровПолученного(ЭтотОбъект, Элемент,
		НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
	
	//-- НЕ УТ
	
	//-- Локализация
	
	Возврат;
	
КонецПроцедуры

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

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

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

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

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

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

	РеализацияУслугПрочихАктивовЛокализация.ПриИзмененииРеквизита(ИмяЭлемента, ЭтаФорма, ДополнительныеПараметры);

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

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

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

&НаСервере
Процедура ПриВыполненииКомандыЗавершениеНаСервере(Знач ИмяКоманды, Знач ДополнительныеПараметры)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ НЕ УТ

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

&НаСервере
Процедура УстановитьЗаголовокСтраницыРасходы()

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

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

//-- НЕ УТ

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

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

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

&НаСервере
Процедура ПоместитьРасшифровкуПлатежаВоВременноеХранилище()
	ВзаиморасчетыСервер.ПоместитьРасшифровкуПлатежаВоВременноеХранилище(ЭтаФорма);
КонецПроцедуры

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

&НаСервере
Процедура ЗаполнитьПоОстаткамПрослеживаемыхТоваровНаСервере()
	
	//++ НЕ УТ
	УчетПрослеживаемыхТоваровЛокализация.ЗаполнитьТабличнуюЧастьПоОстаткамПрослеживаемыхТоваров(Объект, ДоступныеОсновныеСредства(), , Истина);
	//-- НЕ УТ
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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