Чек ККМ / Модуль менеджера

файл

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// Возвращает текст запроса для расчета статусов указания серий
//	Параметры:
//		ПараметрыУказанияСерий - Структура - состав полей задается в функции НоменклатураКлиентСервер.ПараметрыУказанияСерий
//	Возвращаемое значение:
//		Строка - текст запроса.
//
Функция ТекстЗапросаЗаполненияСтатусовУказанияСерий(ПараметрыУказанияСерий) Экспорт
	
	ЕстьПомещения = (ПараметрыУказанияСерий.ПоляСвязи.Найти("Помещение") <> Неопределено);
	Если ЕстьПомещения Тогда
		Возврат ТекстЗапросаЗаполненияСтатусовУказанияСерийСПомещениями();
	Иначе
		Возврат ТекстЗапросаЗаполненияСтатусовУказанияСерийБезПомещений();
	КонецЕсли;
	
КонецФункции

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

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

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

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

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

Функция ТаблицаНевозвращенныхПозицийПоЧекуККМ(ПараметрыОтбора) Экспорт

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

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

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

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

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

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

	Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Организация)
	|	И ЗначениеРазрешено(КассаККМ)
	|	И ЗначениеРазрешено(Склад)";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#КонецЕсли

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