Акт премии клиенту / Модуль менеджера

файл
//@strict-types

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ПрограммныйИнтерфейс

#Область Проведение

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

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

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

#Область ДляВызоваИзДругихПодсистем

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

// Определяет список команд отчетов.
//
// Параметры:
//   КомандыОтчетов - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.КомандыОтчетов
//   Параметры - см. ВариантыОтчетовПереопределяемый.ПередДобавлениемКомандОтчетов.Параметры
//
Процедура ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры) Экспорт
	
	АктПремииКлиентуЛокализация.ДобавитьКомандыОтчетов(КомандыОтчетов, Параметры);
	
КонецПроцедуры

// Переопределяет настройки печати для объекта.
//
// Параметры:
//  Настройки - см. УправлениеПечатью.НастройкиПечатиОбъекта.
//
Процедура ПриОпределенииНастроекПечати(Настройки) Экспорт
	
	Настройки.ПриДобавленииКомандПечати = Истина;
	
КонецПроцедуры

// Заполняет список команд печати.
//
// Параметры:
//   КомандыПечати - см. УправлениеПечатью.СоздатьКоллекциюКомандПечати
//
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
	
	АктПремииКлиентуЛокализация.ДобавитьКомандыПечати(КомандыПечати);
	
КонецПроцедуры

// Описание логики ограничений прав доступа
//
// Параметры:
//   Ограничение - см. УправлениеДоступомПереопределяемый.ПриЗаполненииОграниченияДоступа.Ограничение
//
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт

	Ограничение.Текст =
	"РазрешитьЧтение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)
	|	И ЗначениеРазрешено(Контрагент.Партнер)
	|	И ЗначениеРазрешено(Партнер)
	|	И ЗначениеРазрешено(Подразделение, ПустаяСсылка КАК ИСТИНА)
	|;
	|РазрешитьИзменениеЕслиРазрешеноЧтение
	|ГДЕ
	|	ДляВсехСтрок(ЗначениеРазрешено(РетроБонусы.Партнер, ПустаяСсылка КАК ИСТИНА, NULL КАК ИСТИНА))";
	
КонецПроцедуры

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

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

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

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

#Область СлужебныйПрограммныйИнтерфейс

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

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

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

//++ НЕ УТ

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

// Функция возвращает текст запроса для отражения документа в регламентированном учете.
//
// Возвращаемое значение:
//	Строка - Текст запроса
//
Функция ТекстОтраженияВРеглУчете() Экспорт

	Возврат АктПремииКлиентуЛокализация.ТекстОтраженияВРеглУчете();

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

// Функция возвращает текст запроса дополнительных временных таблиц,
// необходимых для отражения в регламентированном учете.
//
// Возвращаемое значение:
//  Строка - Текст запроса временной таблицы отражения в регл учете
//
Функция ТекстЗапросаВТОтраженияВРеглУчете() Экспорт

	Возврат АктПремииКлиентуЛокализация.ТекстЗапросаВТОтраженияВРеглУчете();

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

//-- НЕ УТ

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

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

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

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

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

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

#Область Проведение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ДанныеДокумента

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

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

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

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

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

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

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

#КонецЕсли

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