Выкуп возвратной тары клиентом / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

		Возврат КомандаСоздатьНаОсновании;
	КонецЕсли;

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

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

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

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

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

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

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

#Область ОснованиеДляПечати

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

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

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

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

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

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

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

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

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

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

#Область УчетНДС

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

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

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

// Возвращает структуру с наименованием табличных частей документа, хранящих информацию о товарах.
//
// Возвращаемое значение:
//	Структура - коллекция, содержащая следующие наименования табличных частей:
//		* Товары - ТаблицаЗначений, ТабличнаяЧасть, Неопределено - данные о товарах документа.
//	
Функция КоллекцияТабличныхЧастейТоваров() Экспорт
	
	ТаблицыДокумента = Новый Структура("Товары");
	
	Возврат ТаблицыДокумента;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ТабличныйДокумент = Новый ТабличныйДокумент;
	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ВыкупВозвратнойТарыКлиентом_Накладная";
	
	МассивРезультатов 		= Запрос.ВыполнитьПакет();
	
	РезультатДанныеПечати			= МассивРезультатов[0]; // РезультатЗапроса
	РезультатВыборкаПоДокументам	= МассивРезультатов[1]; // РезультатЗапроса
	
	ДанныеПечати					= РезультатДанныеПечати.Выбрать();
	ВыборкаПоДокументам 			= РезультатВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	ПоказыватьНДС = Константы.ВыводитьДопКолонкиНДС.Получить();
	
	ПервыйДокумент = Истина;
	ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
	ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
	Пока ДанныеПечати.Следующий() Цикл
		
		// Найдем в выборке товары по текущему документу
		СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
		НайденСледующий = ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
		
		// Если в накладной только услуги - перейдем к следующему документу
		
		Если НайденСледующий Тогда
			ВыборкаПоТоварам = ВыборкаПоДокументам.Выбрать();
			ЕстьНДС = ДанныеПечати.УчитыватьНДС;
			ВыборкаПоТоварам.Сбросить();
		Иначе
			Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'В документе %1 отсутствуют товары. Печать накладной не требуется'"),
				ДанныеПечати.Ссылка);
				
			ОбщегоНазначенияКлиентСервер.СообщитьПользователю(
				Текст,
				ДанныеПечати.Ссылка);
			Продолжить;
		КонецЕсли;
		
		// Макет необходимо получать для каждого документа, т.к. размеры колонок изменяются динамически.
		Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.РеализацияТоваровУслуг.ПФ_MXL_РеализацияТоваров");
		
		Если Не ПервыйДокумент Тогда
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		ПервыйДокумент    = Ложь;
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		// Выводим шапку накладной
		
		ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
		ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, ОбластьМакета, ДанныеПечати.Ссылка);
		
		СтруктураДанныхШапки = Новый Структура;
		СтруктураДанныхШапки.Вставить("ТекстЗаголовка", ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати, НСтр("ru='Выкуп возвратной тары'", ОбщегоНазначения.КодОсновногоЯзыка())));
		ОбластьМакета.Параметры.Заполнить(СтруктураДанныхШапки);
		
		ТабличныйДокумент.Вывести(ОбластьМакета);
		
		ОбластьМакета = Макет.ПолучитьОбласть("ЗаголовокПодчеркивание");
		ТабличныйДокумент.Вывести(ОбластьМакета);
		
		ОбластьМакета                                   = Макет.ПолучитьОбласть("Поставщик");
		СтруктураДанныхПоставщик = Новый Структура;
		ПредставлениеПоставщика                         = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Организация, ДанныеПечати.Дата), "ПолноеНаименование");
		СтруктураДанныхПоставщик.Вставить("ПредставлениеПоставщика", ПредставлениеПоставщика);
		СтруктураДанныхПоставщик.Вставить("Поставщик", ДанныеПечати.Организация);
		ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПоставщик);
		ТабличныйДокумент.Вывести(ОбластьМакета);
		
		ОбластьМакета                                   = Макет.ПолучитьОбласть("Покупатель");
		СтруктураДанныхПокупатель = Новый Структура;
		ПредставлениеПолучателя                         = ФормированиеПечатныхФорм.ОписаниеОрганизации(ФормированиеПечатныхФорм.СведенияОЮрФизЛице(ДанныеПечати.Получатель, ДанныеПечати.Дата), "ПолноеНаименование");
		СтруктураДанныхПокупатель.Вставить("ПредставлениеПолучателя", ПредставлениеПолучателя);
		СтруктураДанныхПокупатель.Вставить("Получатель", ДанныеПечати.Получатель);
		ОбластьМакета.Параметры.Заполнить(СтруктураДанныхПокупатель);
		ТабличныйДокумент.Вывести(ОбластьМакета);
		
		// Выводим заголовок таблицы Товары
		
		ЕстьСкидки = Ложь;
		НазванияОбластейСтрок = НазванияОбластейСтрок(ЕстьСкидки, ЕстьНДС И ПоказыватьНДС);
		НазванияОбластейКолонок = НазванияОбластейКолонок(ЕстьСкидки, ЕстьНДС И ПоказыватьНДС);
		
		ОбластьКолонкаТовар = Макет.Область("ПерваяКолонкаТовара");
		ОбластьКолонкаТовар.ШиринаКолонки = ОбластьКолонкаТовар.ШиринаКолонки
			+ ?(ВыводитьКоды, 0, Макет.Область("КолонкаКодов").ШиринаКолонки)
			+ 15; // Увеличение ширины до правой границы
		
		ОбластьНомера  = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ШапкаТаблицы + "|НомерСтроки");
		ОбластьКодов   = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ШапкаТаблицы + "|КолонкаКодов");
		ОбластьТовар   = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ШапкаТаблицы + "|" + НазванияОбластейКолонок.Товар);
		ОбластьДанных  = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ШапкаТаблицы + "|" + НазванияОбластейКолонок.Данные);
		
		ТабличныйДокумент.Вывести(ОбластьНомера);
		
		Если ВыводитьКоды Тогда
			СтруктураДанныхКоды = Новый Структура("ИмяКолонкиКодов", ПредставлениеКолонкиКодов);
			ОбластьКодов.Параметры.Заполнить(СтруктураДанныхКоды);
			ТабличныйДокумент.Присоединить(ОбластьКодов);
		КонецЕсли;
		
		ТабличныйДокумент.Присоединить(ОбластьТовар);
		ТабличныйДокумент.Присоединить(ОбластьДанных);
		
		ОбластьНомера  = Макет.ПолучитьОбласть(НазванияОбластейСтрок.СтрокаТаблицы + "|НомерСтроки");
		ОбластьКодов   = Макет.ПолучитьОбласть(НазванияОбластейСтрок.СтрокаТаблицы + "|КолонкаКодов");
		ОбластьТовар   = Макет.ПолучитьОбласть(НазванияОбластейСтрок.СтрокаТаблицы + "|" + НазванияОбластейКолонок.Товар);
		ОбластьДанных  = Макет.ПолучитьОбласть(НазванияОбластейСтрок.СтрокаТаблицы + "|" + НазванияОбластейКолонок.Данные);
		
		Сумма          = 0;
		СуммаНДС       = 0;
		ВсегоСкидок    = 0;
		НомерСтроки    = 0;
		ВсегоБезСкидок = 0;
		
		// Выводим строки таблицы Товары
			
		Пока ВыборкаПоТоварам.Следующий() Цикл
			
			НомерСтроки = НомерСтроки + 1;
			
			СтруктураДанныхНомерСтроки = Новый Структура("НомерСтроки", НомерСтроки);
			ОбластьНомера.Параметры.Заполнить(СтруктураДанныхНомерСтроки);
			ТабличныйДокумент.Вывести(ОбластьНомера);
			
			Если ВыводитьКоды Тогда
				СтруктураДанныхКоды = Новый Структура("Артикул", ВыборкаПоТоварам[ИмяКолонкиКодов]);
				ОбластьКодов.Параметры.Заполнить(СтруктураДанныхКоды);
				ТабличныйДокумент.Присоединить(ОбластьКодов);
			КонецЕсли;
			
			ОбластьТовар.Параметры.Заполнить(ВыборкаПоТоварам);
			Товар = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
				ВыборкаПоТоварам.ТоварНаименованиеПолное,
				ВыборкаПоТоварам.Характеристика,
				,
				,
				ДопПараметрыПредставлениеНоменклатуры);
			СтруктураДанныхТовар = Новый Структура("Товар", Товар);
			ОбластьТовар.Параметры.Заполнить(СтруктураДанныхТовар);
			ТабличныйДокумент.Присоединить(ОбластьТовар);
			
			ОбластьДанных.Параметры.Заполнить(ВыборкаПоТоварам);
			
			ТабличныйДокумент.Присоединить(ОбластьДанных);
			
			Сумма          = Сумма          + ВыборкаПоТоварам.Сумма;
			СуммаНДС       = СуммаНДС       + ВыборкаПоТоварам.СуммаНДС;
			
		КонецЦикла;
		
		// Выводим подвал
		
		ОбластьНомера  = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ПодвалТаблицы + "|НомерСтроки");
		ОбластьКодов   = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ПодвалТаблицы + "|КолонкаКодов");
		ОбластьТовар   = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ПодвалТаблицы + "|" + НазванияОбластейКолонок.Товар);
		ОбластьДанных  = Макет.ПолучитьОбласть(НазванияОбластейСтрок.ПодвалТаблицы + "|" + НазванияОбластейКолонок.Данные);
		
		ТабличныйДокумент.Вывести(ОбластьНомера);
		
		Если ВыводитьКоды Тогда
			ТабличныйДокумент.Присоединить(ОбластьКодов);
		КонецЕсли;
		
		ТабличныйДокумент.Присоединить(ОбластьТовар);
		
		СтруктураДанныхВсего = Новый Структура;
		СтруктураДанныхВсего.Вставить("Всего", ФормированиеПечатныхФорм.ФорматСумм(Сумма));
		ОбластьДанных.Параметры.Заполнить(СтруктураДанныхВсего);
		ТабличныйДокумент.Присоединить(ОбластьДанных);
		
		// Выводим ИтогоНДС
		Если ПолучитьФункциональнуюОпцию("ИспользоватьУчетНДС") Тогда
			Область = Макет.ПолучитьОбласть("ПодвалНДС");
			СтруктураДанныхПодвалНДС = Новый Структура;
			СтруктураДанныхПодвалНДС.Вставить("ВсегоНДС", СуммаНДС);
			Если ЕстьНДС Тогда
				СтруктураДанныхПодвалНДС.Вставить("НДС", ?(ДанныеПечати.ЦенаВключаетНДС,
				НСтр("ru='В том числе НДС:'", ОбщегоНазначения.КодОсновногоЯзыка()),
				НСтр("ru='Сумма НДС:'", ОбщегоНазначения.КодОсновногоЯзыка())));
			Иначе
				СтруктураДанныхПодвалНДС.Вставить("НДС", НСтр("ru='Без налога (НДС)'", ОбщегоНазначения.КодОсновногоЯзыка()));
			КонецЕсли;
			Область.Параметры.Заполнить(СтруктураДанныхПодвалНДС);
			ТабличныйДокумент.Присоединить(Область);
		КонецЕсли;
		// Выводим Сумму прописью
		
		ОбластьМакета = Макет.ПолучитьОбласть("СуммаПрописью");
		СуммаКПрописи = Сумма + ?(ДанныеПечати.ЦенаВключаетНДС, 0, СуммаНДС);
		
		ИтоговаяСтрока = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru='Всего наименований %1, на сумму %2'", ОбщегоНазначения.КодОсновногоЯзыка()),
			ВыборкаПоТоварам.Количество(),
			ФормированиеПечатныхФорм.ФорматСумм(СуммаКПрописи, ДанныеПечати.Валюта));
		
		СтруктураДанныхИтого = Новый Структура;
		СтруктураДанныхИтого.Вставить("ИтоговаяСтрока", ИтоговаяСтрока);
		СтруктураДанныхИтого.Вставить("СуммаПрописью", РаботаСКурсамиВалютУТ.СформироватьСуммуПрописью(СуммаКПрописи, ДанныеПечати.Валюта));
		ОбластьМакета.Параметры.Заполнить(СтруктураДанныхИтого);
		ТабличныйДокумент.Вывести(ОбластьМакета);
		
		// Выводим подписи
		ОбластьМакета = Макет.ПолучитьОбласть("Подписи");
		
		Если ЗначениеЗаполнено(ДанныеПечати.ОтпускПроизвел) Тогда
			СтруктураДанныхОтпускПроизвел =
				Новый Структура("ОтпускПроизвел", ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(ДанныеПечати.ОтпускПроизвел, ДанныеПечати.Дата));
			ОбластьМакета.Параметры.Заполнить(СтруктураДанныхОтпускПроизвел);
		КонецЕсли;
		
		ТабличныйДокумент.Вывести(ОбластьМакета);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
		
	КонецЦикла;
	
	ТабличныйДокумент.АвтоМасштаб = Истина;

	Если ПривилегированныйРежим() Тогда
		УстановитьПривилегированныйРежим(Ложь);
	КонецЕсли;
	
	Возврат ТабличныйДокумент;

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

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

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

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

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


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

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

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

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

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

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

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

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

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

#КонецЕсли

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