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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	ПараметрыЗаполнения = УчетНДСУПКлиентСервер.ПараметрыЗаполненияНалогообложенияНДСЗакупки();
	
	ПараметрыЗаполнения.Контрагент = Объект.Контрагент;
	ПараметрыЗаполнения.Договор = Объект.Договор;
	ПараметрыЗаполнения.Период =  Объект.Дата;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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

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

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

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

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

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

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

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

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

// Для создания общих временных таблиц в обработчиках обновления перепроведения документов.
// Параметры:
//  СписокЗапросов - Массив Из Строка
Процедура ТекстЗапросаДанныеДокумента(СписокЗапросов) Экспорт
	
	ТекстЗапросаДанныеДокументаШапка(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаТовары(СписокЗапросов);
	ТекстЗапросаДанныеДокументаДанныеДокументаТаблицаТоварыДляСоединенияССериями(СписокЗапросов);
	ТекстЗапросаДанныеДокументаТаблицаСерии(СписокЗапросов);
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

Процедура ЗарегистрироватьИзлишкиНедостачиНаСкладе(Запрос, ТекстыЗапроса, Регистры)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	АктОРасхожденияхПослеПриемкиЛокализация.ДобавитьКомандыПечати(КомандыПечати);

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

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

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

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

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

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

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

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

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

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

#Область ИзменениеСтатуса

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

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

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

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

// См. ОбновлениеИнформационнойБазыБСП.ПриДобавленииОбработчиковОбновления
//
Процедура ПриДобавленииОбработчиковОбновления(Обработчики) Экспорт

	Обработчик = Обработчики.Добавить();
	Обработчик.Процедура = "Документы.АктОРасхожденияхПослеПриемки.ОбработатьДанныеДляПереходаНаНовуюВерсию";
	Обработчик.Версия = "11.5.25.42";
	Обработчик.РежимВыполнения = "Отложенно";
	Обработчик.Идентификатор = Новый УникальныйИдентификатор("fa677e44-2598-49a2-824b-75b3fe7952c0");
	Обработчик.Многопоточный = Истина;
	Обработчик.ПроцедураЗаполненияДанныхОбновления = "Документы.АктОРасхожденияхПослеПриемки.ЗарегистрироватьДанныеКОбработкеДляПереходаНаНовуюВерсию";
	Обработчик.ПроцедураПроверки = "ОбновлениеИнформационнойБазы.ДанныеОбновленыНаНовуюВерсиюПрограммы";
	Обработчик.Порядок = Перечисления.ПорядокОбработчиковОбновления.Обычный;
	СписокОписаний = Новый Массив;
	СписокОписаний.Добавить(НСтр("ru = 'Обновление документов ""Акт о расхождениях после приемки"":'"));
	СписокОписаний.Добавить(НСтр("ru = '- заполняет ""Статус указания серии для склада приёма"".'"));
	
	Обработчик.Комментарий = СтрСоединить(СписокОписаний, Символы.ПС);
	
	Читаемые = Новый Массив;
	Читаемые.Добавить(Метаданные.Документы.АктОРасхожденияхПослеПриемки.ПолноеИмя());
	Обработчик.ЧитаемыеОбъекты = СтрСоединить(Читаемые, ",");
	
	Изменяемые = Новый Массив;
	Изменяемые.Добавить(Метаданные.Документы.АктОРасхожденияхПослеПриемки.ПолноеИмя());
	Обработчик.ИзменяемыеОбъекты = СтрСоединить(Изменяемые, ",");
	
	Блокируемые = Новый Массив;
	Блокируемые.Добавить(Метаданные.Документы.АктОРасхожденияхПослеПриемки.ПолноеИмя());
	Обработчик.БлокируемыеОбъекты = СтрСоединить(Блокируемые, ",");

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

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

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

	Параметры.ОбработкаЗавершена = ОбновлениеИнформационнойБазы.ОбработкаДанныхЗавершена(Параметры.Очередь, ПолноеИмяОбъекта);
	
КонецПроцедуры

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

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

#КонецЕсли

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