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

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

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

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

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

&НаКлиенте
Перем ПараметрыДляЗаписи Экспорт;

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

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

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

	УстановитьУсловноеОформление();

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

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

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

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

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

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

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

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

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

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

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

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

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

	ВзаиморасчетыСервер.ФормаПриЧтенииНаСервере(ЭтаФорма);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	СпособРасчетаВознаграждения = Объект.СпособРасчетаВознаграждения;

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

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

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

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

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

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

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

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

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

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

		ПроцентВознаграждения = Объект.ПроцентВознаграждения;
		СуммаВознаграждения = Объект.СуммаВознаграждения;

	ИначеЕсли ДополнительныеПараметры.ВосстановитьРеквизиты Тогда

		Объект.ПроцентВознаграждения = ПроцентВознаграждения;
		Объект.СуммаВознаграждения = СуммаВознаграждения;

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура МенеджерПриИзменении(Элемент)
	ЗаполнитьПодчиненныеСвойстваПоСтатистике("Менеджер");
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

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

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

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

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

	СтруктураДействий.Вставить("ХарактеристикаПриИзмененииПереопределяемый", Новый Структура("ИмяФормы, ИмяТабличнойЧасти",
		ЭтаФорма.ИмяФормы, "Товары"));

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

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

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

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

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

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

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

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

	ТекущаяСтрока.СуммаВознаграждения = 0;
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаПоКомиссииМеждуОрганизациями(ЭтаФорма);

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

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

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

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

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

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

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

	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

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

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

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

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

&НаКлиенте
Процедура ТоварыЦенаПродажиПриИзменении(Элемент)
	
	ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;

	ПересчитатьСуммуПродажи(ТекущаяСтрока);
	ТекущаяСтрока.СуммаВознаграждения = 0;
	РассчитыватьВознаграждение = Истина;
	РассчитатьИтоговыеПоказателиОтчетаПоКомиссииМеждуОрганизациями(ЭтаФорма);
	
КонецПроцедуры

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

&НаКлиенте
Процедура ТоварыСуммаВознагражденияПриИзменении(Элемент)
	
	Объект.СуммаВознаграждения = Объект.Товары.Итог("СуммаВознаграждения");
	ИтогСуммаПродажи = Объект.Товары.Итог("СуммаПродажи");
	Объект.ПроцентВознаграждения = ?(ИтогСуммаПродажи <> 0, Объект.СуммаВознаграждения / ИтогСуммаПродажи * 100, 0);
	КомиссионнаяТорговляКлиент.РассчитатьКомиссионноеВознаграждениеНДС(Объект, ПроцентНДС);
	
КонецПроцедуры

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

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

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

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

&НаКлиенте
Процедура ТоварыПослеУдаления(Элемент)
	
	РассчитыватьВознаграждение = Истина;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ЗаполнитьЦеныПоВидуЦен(Команда)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ПакетнаяОбработкаТабличнойЧастиКлиент.ОбработатьСтрокуТЧ(ТекущаяСтрока, СтруктураДействий, КэшированныеЗначения);

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

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

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

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

#Область ПодборыИОбработкаПроверкиКоличества

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

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

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

#Область НомераГТД

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

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

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

#Область УправлениеЭлементамиФормы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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