Акт выполненных работ для клиента / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

		КоэффициентПересчетаСкидки = ?(ПересчитатьСуммы, СтрокаТаб.Количество / ВыборкаУслуги.КоличествоВЗаказе, 1);
		Если КоэффициентПересчетаСкидки <> 1 Тогда
			СтрокаТаб.СуммаАвтоматическойСкидки = ОКР(ВыборкаУслуги.СуммаАвтоматическойСкидки * КоэффициентПересчетаСкидки,2);
			СтрокаТаб.СуммаРучнойСкидки = ОКР(ВыборкаУслуги.СуммаРучнойСкидки * КоэффициентПересчетаСкидки,2);

			СтрокаТаб.СуммаБонусныхБалловКСписанию = ОКР(ВыборкаУслуги.СуммаБонусныхБалловКСписанию * КоэффициентПересчетаСкидки,2);
			СтрокаТаб.СуммаБонусныхБалловКСписаниюВВалюте = ОКР(ВыборкаУслуги.СуммаБонусныхБалловКСписаниюВВалюте * КоэффициентПересчетаСкидки,2);
			СтрокаТаб.СуммаНачисленныхБонусныхБалловВВалюте = ОКР(ВыборкаУслуги.СуммаНачисленныхБонусныхБалловВВалюте * КоэффициентПересчетаСкидки,2);
		КонецЕсли;
		
		Если ПересчитатьСуммы Тогда
			
			Ценообразование.ПересчитатьСуммыВСтрокеПоСуммеСНДС(
				СтрокаТаб, 
				РеквизитыЗаказов.ЦенаВключаетНДС, 
				СтрокаТаб.ПроцентАвтоматическойСкидки<>0,
				СтрокаТаб.ПроцентРучнойСкидки<>0,
				РеквизитыЗаказов.ПересчитатьВВалютуДокумента, 
				"Количество");
			
			Если ЗаказНайден И РеквизитыЗаказов.ПересчитатьВВалютуДокумента И КурсВалюты.Количество() = 1 Тогда
				СтрокаТаб.СуммаАвтоматическойСкидки = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
					СтрокаТаб.СуммаАвтоматическойСкидки,
					КурсВалюты[0],
					СтруктураКурсовНовойВалюты);
				СтрокаТаб.СуммаРучнойСкидки = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
					СтрокаТаб.СуммаРучнойСкидки,
					КурсВалюты[0],
					СтруктураКурсовНовойВалюты);
				СтрокаТаб.СуммаБонусныхБалловКСписаниюВВалюте = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
					СтрокаТаб.СуммаБонусныхБалловКСписаниюВВалюте,
					КурсВалюты[0],
					СтруктураКурсовНовойВалюты);
				СтрокаТаб.СуммаНачисленныхБонусныхБалловВВалюте = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
					СтрокаТаб.СуммаНачисленныхБонусныхБалловВВалюте,
					КурсВалюты[0],
					СтруктураКурсовНовойВалюты);
			КонецЕсли;

		КонецЕсли;
		
		// Формирование табличной части скидок
		СуммаКРаспределению = СтрокаТаб.СуммаАвтоматическойСкидки;
		
		Если СтрокаТаб.КлючСвязи <> 0 Тогда
			Для Каждого СтрокаСкидкиЗаказа Из СкидкиНаценкиЗаказа.НайтиСтроки(Новый Структура("ЗаказКлиента,КлючСвязи", СтрокаТаб.ЗаказКлиента, СтрокаТаб.КлючСвязи)) Цикл
				
				СтрокаСкидки = СкидкиНаценки.Добавить();
				ЗаполнитьЗначенияСвойств(СтрокаСкидки, СтрокаСкидкиЗаказа);
				СтрокаСкидки.Сумма = КоэффициентПересчетаСкидки * СтрокаСкидки.Сумма;
				
				Если ЗаказНайден И РеквизитыЗаказов.ПересчитатьВВалютуДокумента И КурсВалюты.Количество() > 0 Тогда
					СтрокаСкидки.Сумма = РаботаСКурсамиВалютУТ.ПересчитатьПоКурсу(
						СтрокаСкидки.Сумма,
						КурсВалюты[0],
						СтруктураКурсовНовойВалюты);
					СуммаКРаспределению = СуммаКРаспределению - СтрокаСкидки.Сумма;
				КонецЕсли;
				
			КонецЦикла;
		КонецЕсли;
		
		Если ЗаказНайден И РеквизитыЗаказов.ПересчитатьВВалютуДокумента И СуммаКРаспределению <> 0 Тогда
			СтрокаСкидки.Сумма = СтрокаСкидки.Сумма + СуммаКРаспределению;
		КонецЕсли;

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

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

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

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

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

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

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

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

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

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

#Область ПроведениеПоРеглУчету

//++ НЕ УТ

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

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

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

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

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

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

//-- НЕ УТ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция ЗначенияПараметровПроведения(Реквизиты = Неопределено)

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

	Если Реквизиты <> Неопределено Тогда
		Если ЗначениеЗаполнено(Реквизиты.Договор) Тогда
			ШаблонСтроки = "ru = 'По договору ""%1""'"; // @НСтр
			ИнформацияПоДоговору = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки, Реквизиты.Договор);
		КонецЕсли;
		ЗначенияПараметровПроведения.Вставить("ИнформацияПоДоговору",          ИнформацияПоДоговору);
		ЗначенияПараметровПроведения.Вставить("НомерНаПечать", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(Реквизиты.Номер));
	КонецЕсли; 
	
	Возврат ЗначенияПараметровПроведения;
	
КонецФункции

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

Процедура ИнициализироватьАналитикуУчетаПоПартнерам(Запрос)
	
	Если Запрос.Параметры.Свойство("АналитикаУчетаПоПартнерам") Тогда
		Возврат;
	КонецЕсли;
	
	Запрос.УстановитьПараметр("АналитикаУчетаПоПартнерам",
		РегистрыСведений.АналитикаУчетаПоПартнерам.ЗначениеКлючаАналитики(Запрос.Параметры));
	
КонецПроцедуры

Процедура ИнициализироватьКлючиАналитикиНоменклатуры(Запрос)
	
	Если Запрос.Параметры.Свойство("КлючиАналитикиУчетаНоменклатурыИнициализированы") Тогда
		Возврат;
	КонецЕсли;

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

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

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

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

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

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

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

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

	Возврат ТекстЗапроса;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

	ТекстыЗапроса.Добавить(ТекстЗапроса, ИмяРегистра);
	
	Возврат ТекстЗапроса;
	
КонецФункции

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

#Область ПартионныйУчет

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

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

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

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

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

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

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

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

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

	Если Пользователи.ЭтоПолноправныйПользователь() Тогда
		ИмяМакета = "ПФ_DOC_Акт" + "_" + ОбщегоНазначения.КодОсновногоЯзыка();
		Если Метаданные.Документы.АктВыполненныхРабот.Макеты.Найти(ИмяМакета) <> Неопределено Тогда
			// Акт выполненных работ (Microsoft Word)
			КомандаПечати = КомандыПечати.Добавить();
			КомандаПечати.Обработчик = "УправлениеПечатьюУТКлиент.ПечатьАктВыполненныхРаботMicrosoftWord";
			КомандаПечати.МенеджерПечати = "";
			КомандаПечати.Идентификатор = "АктMicrosoftWord";
			КомандаПечати.Представление = НСтр("ru = 'Акт выполненных работ (Microsoft Word)'");
			КомандаПечати.ПроверкаПроведенияПередПечатью = Истина;
			КомандаПечати.ТребуетсяРасширениеРаботыСФайлами = Истина;
		КонецЕсли;
	КонецЕсли;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	Если ДанныеПечати.УчитыватьНДС Тогда
		ДанныеОбъекта.Вставить("НДС", ?(ДанныеПечати.ЦенаВключаетНДС, 
			НСтр("ru = 'В том числе НДС:'", ОбщегоНазначения.КодОсновногоЯзыка()), 
			НСтр("ru = 'Сумма НДС:'", ОбщегоНазначения.КодОсновногоЯзыка())));
	Иначе
		ДанныеОбъекта.Вставить("НДС", НСтр("ru='Без налога (НДС)'", ОбщегоНазначения.КодОсновногоЯзыка()));
	КонецЕсли;

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

Функция ПолучитьОписаниеОбластейАктВыполненныхРабот()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ОбновлениеИнформационнойБазы

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

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

	Результат = ОбновлениеИнформационнойБазыУТ.РезультатАдаптацииЗапроса();
	Результат.ЗначенияПараметров = ЗначенияПараметров;
	Результат.ТекстЗапроса = ТекстЗапроса;
	
	Возврат Результат;
	
КонецФункции

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

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

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

Процедура ПолучитьДанныеДокумента(Запрос, ДокументСсылка)

	СписокЗапросов = Новый Массив;

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

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

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

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

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

	ИмяРегистра = "ВременнаяТаблицаКурсыВалютДокумента";

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

	ТекстыЗапроса.Добавить(ТекстЗапросаКурсыВалютДокумента, ИмяРегистра);

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

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

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

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

#КонецЕсли

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