Акт о расхождениях после отгрузки / Модуль менеджера

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

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

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

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

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

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

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

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

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

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

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

	Возврат Таблица;
	
КонецФункции

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

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

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

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

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

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

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

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

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

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


#Область Округление

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

Функция ПолноеИмяОбъекта()
	Возврат "Документ.АктОРасхожденияхПослеОтгрузки";
КонецФункции

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция СкладскаяОперацияПоТипуОснования(ТипОснованияАктаОРасхождении)
	
	Если РасхожденияКлиентСервер.ТипОснованияРеализацияТоваровУслуг(ТипОснованияАктаОРасхождении)
		Или РасхожденияКлиентСервер.ТипОснованияОтгрузкаТоваровКлиенту(ТипОснованияАктаОРасхождении)
		Или РасхожденияКлиентСервер.ТипОснованияПередачаТоваровХранителю(ТипОснованияАктаОРасхождении)
		Или РасхожденияКлиентСервер.ТипОснованияПередачаНаКомиссию(ТипОснованияАктаОРасхождении)
		Тогда
		
		СкладскаяОперация = Перечисления.СкладскиеОперации.ОтгрузкаКлиенту;
		
	ИначеЕсли РасхожденияКлиентСервер.ТипОснованияВозвратПоставщику(ТипОснованияАктаОРасхождении)
		Или РасхожденияКлиентСервер.ТипОснованияОтгрузкаТоваровСХранения(ТипОснованияАктаОРасхождении)
		Тогда
		
		СкладскаяОперация = Перечисления.СкладскиеОперации.ОтгрузкаПоВозвратуПоставщику;
		
	Иначе
		СкладскаяОперация = Неопределено;
	КонецЕсли;
	
	Возврат СкладскаяОперация;
	
КонецФункции

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

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

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

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

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

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

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

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

Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	АктОРасхожденияхПослеОтгрузкиЛокализация.Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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