Корректировка задолженности / Модуль менеджера

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

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

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

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

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

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

// СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет настройки объекта для подсистемы ВерсионированиеОбъектов.
//
// Параметры:
//  Настройки - Структура - настройки подсистемы.
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт

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

// Конец СтандартныеПодсистемы.ВерсионированиеОбъектов

// Определяет список команд создания на основании.
//
// Параметры:
//  КомандыСозданияНаОсновании - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.КомандыСозданияНаОсновании
//  Параметры - см. СозданиеНаОснованииПереопределяемый.ПередДобавлениемКомандСозданияНаОсновании.Параметры
//
Процедура ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры) Экспорт
	
	БизнесПроцессы.Задание.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	Документы.КорректировкаГрафикаВзаиморасчетов.ДобавитьКомандуСоздатьНаОсновании(КомандыСозданияНаОсновании);
	
	ИсправлениеДокументов.ДобавитьКомандуИсправление(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
	ИсправлениеДокументов.ДобавитьКомандуСторно(КомандыСозданияНаОсновании, ПустаяСсылка().Метаданные());
	
	КорректировкаЗадолженностиЛокализация.ДобавитьКомандыСозданияНаОсновании(КомандыСозданияНаОсновании, Параметры);

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

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

	Возврат Неопределено;
КонецФункции

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

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

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

	КорректировкаЗадолженностиЛокализация.ДобавитьКомандыПечати(КомандыПечати);

КонецПроцедуры
//++ НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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


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

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

// СтандартныеПодсистемы.УправлениеДоступом

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

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)
	|	И ЗначениеРазрешено(Задолженность.Партнер, Null КАК Истина)";

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

// Конец СтандартныеПодсистемы.УправлениеДоступом

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

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

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

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

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

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

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

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

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

Функция ДополнительныеИсточникиДанныхДляДвижений(ИмяРегистра) Экспорт

	ИсточникиДанных = Новый Соответствие;

	Возврат ИсточникиДанных; 

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

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

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

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

	Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуУпр",  Коэффициенты.КоэффициентПересчетаВВалютуУПР);
	Запрос.УстановитьПараметр("КоэффициентПересчетаВВалютуРегл", Коэффициенты.КоэффициентПересчетаВВалютуРегл);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	|	Задолженность.ВалютаВзаиморасчетов КАК Валюта,
	|	СУММА(Задолженность.Сумма - ЕСТЬNULL(ОстаткиРезервов.Сумма, 0)) КАК СуммаВВалюте,
	|	0 КАК СуммаБезНДСВВалюте,

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

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

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

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

Функция ТекстЗапросаТаблицаРезервыПоСомнительнымДолгам(Запрос, ТекстыЗапроса, Регистры)

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

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

Функция АдаптированныйТекстЗапросаДвиженийПоРегистру(ИмяРегистра) Экспорт

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

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

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

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

#КонецЕсли

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