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

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

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

// Формирует представление объекта метаданных на основном языке.
// Возвращаемое значение:
// Строка - Представление объекта метаданных на основном языке.
//
Функция ПредставлениеОбъектаНаОсновномЯзыке() Экспорт
	
	КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
	
	ПредставлениеОбъекта = НСтр(
		"ru = 'Заказ клиента'",
		КодОсновногоЯзыка);
		
	Возврат ПредставлениеОбъекта;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

#Область СозданиеНаОсновании

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

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

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

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

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

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

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

#Область РасчетСостояний

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ЭлектронноеВзаимодействие.СервисEDI

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

// Конец ЭлектронноеВзаимодействие.СервисEDI

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

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

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

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

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

#Область ТекстыЗапросаРаспоряженияНакладных

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

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

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

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

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

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

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

#КонецЕсли

#Область ОбработчикиСобытий

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

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

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

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

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

#Область Обеспечение

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

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

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

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

#Область НаправленияДеятельности

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

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

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

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

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

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

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

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

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

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

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

	ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаЭтапыГрафикаОплаты(СписокЗапросов);

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

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

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

Процедура ТекстЗапросаДанныеДокументаТаблицаЭтапыГрафикаОплаты(СписокЗапросов)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ЗаказКлиентаЛокализация.КомплектПечатныхФорм(КомплектПечатныхФорм);
		
	Возврат КомплектПечатныхФорм;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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

Функция ОбособленноеОбеспечение(ЗаказКлиента) Экспорт

	УстановитьПривилегированныйРежим(Истина);

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

Функция ЕстьОбособленныеЗаказыПоСделке(Сделка) Экспорт

	УстановитьПривилегированныйРежим(Истина);

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

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

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

#Область ТекущиеДела

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

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

#Область ФормированиеГиперссылкиВЖурналеДокументыПродажи

Функция ТекстЗапросаЗаказыВРаботе()

	ТекстЗапроса = 
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
	|	СостоянияЗаказов.Заказ,
	|	СостоянияЗаказов.Состояние
	|ИЗ
	|	РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказов
	|ГДЕ
	|	СостоянияЗаказов.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт)";
	
	Возврат ТекстЗапроса
	
КонецФункции

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

Функция ИмяФормыРабочееМесто() Экспорт
	
	Возврат "Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов";
	
КонецФункции

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

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

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

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

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

#Область Назначения

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

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

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

#КонецЕсли

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