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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

//++ Устарело_Переработка24

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

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

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

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

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

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

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

		КонецЦикла;
	
		ЗафиксироватьТранзакцию();
	
	Исключение
	
		ОтменитьТранзакцию();
		ЗаписьЖурналаРегистрации(
			НСтр("ru = 'Запись счетов на оплату'", ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка()),
			УровеньЖурналаРегистрации.Ошибка,,,
			ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
	
	КонецПопытки;
	
	Возврат КоличествоОбработанных;

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

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

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

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

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

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

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

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

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

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

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

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

// Функция получает данные для формирования печатной формы "Счет на оплату"
//
// Параметры:
//	ПараметрыПечати - Структура - 
//	МассивОбъектов - Массив - Массив ссылок на документы, по которым необходимо получить данные.
//  КодЯзыка - Строка - язык, на котором будет выводиться печатная форма.
//                         Состоит из кода языка по ISO 639-1 и, опционально, кода страны по ISO 3166-1, разделенных
//                         символом подчеркивания. Примеры: "en", "en_US", "en_GB", "ru", "ru_RU".
//
// Возвращаемое значение:
//	Структура - Структура с полями: "РезультатПоШапке", "РезультатПоЭтапамОплаты", "РезультатПоТабличнойЧасти".
//
Функция ПолучитьДанныеДляПечатнойФормыСчетаНаОплату(ПараметрыПечати, МассивОбъектов, КодЯзыка = Неопределено) Экспорт
	
	Возврат ДанныеДляПечатныхФормСчетаНаОплатуИзвещения(ПараметрыПечати, МассивОбъектов, КодЯзыка);
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

Процедура ПроверитьКорректностьХозяйственнойОперацииДокументаОснования(ЕстьОшибкиХозяйственнаяОперация, ХозяйственнаяОперация) Экспорт

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

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

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

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

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

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

#Область ШаблоныСообщений

// Вызывается при подготовке шаблонов сообщений и позволяет переопределить список реквизитов и вложений.
//
// Параметры:
//  Реквизиты               - ДеревоЗначений - список реквизитов шаблона:
//         * Имя            - Строка - Уникальное имя общего реквизита.
//         * Представление  - Строка - Представление общего реквизита.
//         * Тип            - Тип    - Тип реквизита. По умолчанию строка.
//         * Формат         - Строка - Формат вывода значения для чисел, дат, строк и булевых значений.
//  Вложения                - ТаблицаЗначений - печатные формы и вложения:
//         * Имя            - Строка - Уникальное имя вложения.
//         * Представление  - Строка - Представление варианта.
//         * ТипФайла       - Строка - Тип вложения, который соответствует расширению файла: "pdf", "png", "jpg", mxl"
//                                      и др.
//  ДополнительныеПараметры - Структура - дополнительные сведения о шаблоне сообщений.
//
Процедура ПриПодготовкеШаблонаСообщения(Реквизиты, Вложения, ДополнительныеПараметры) Экспорт
	
КонецПроцедуры

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

// Заполняет список получателей SMS при отправке сообщения сформированного по шаблону.
//
// Параметры:
//   ПолучателиSMS - ТаблицаЗначений - список получается SMS:
//     * НомерТелефона - Строка - номер телефона, куда будет отправлено сообщение SMS.
//     * Представление - Строка - представление получателя сообщения SMS.
//     * Контакт       - СправочникСсылка - контакт, которому принадлежит номер телефона.
//  ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных.
//
Процедура ПриЗаполненииТелефоновПолучателейВСообщении(ПолучателиSMS, ПредметСообщения) Экспорт
	
КонецПроцедуры

// Заполняет список получателей письма при отправки сообщения сформированного по шаблону.
//
// Параметры:
//   ПолучателиПисьма - ТаблицаЗначений - список получается письма:
//     * Адрес           - Строка - адрес электронной почты получателя.
//     * Представление   - Строка - представление получается письма.
//     * ВариантОтправки - Строка - Варианты отправки письма: "Кому", "Копия", "СкрытаяКопия", "ОбратныйАдреса";
//  ПредметСообщения - ЛюбаяСсылка - ссылка на объект являющийся источником данных.
//
Процедура ПриЗаполненииПочтыПолучателейВСообщении(ПолучателиПисьма, ПредметСообщения) Экспорт
	
КонецПроцедуры

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

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

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

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

#КонецЕсли

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