Как внешнюю обработку добавить в раздел Дополнительные Отчеты И Обработки

1. user1979322 04.06.25 11:03 Сейчас в теме
Всем привет, написал обработку (измучился) и для удобства клиента нужно в пользовательском режиме вызывать обработку, без загрузки файла
Код и Общего модуля
  ///https://www.youtube.com/watch?v=raETys0J16M     
 ///https://programmist1s.ru/vneshnie-pechatnyie-formyi-v-1s/
 Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт    
	 
     	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
		КоллекцияПечатныхФорм,
		"ОтчетРознПродДискКарты", 
		"Отчет розничных продаж с новыми дисконтными картами инф",
		СформироватьПечатнуюФорму(МассивОбъектов[0],
		ОбъектыПечати));     
		//НоваяСтрока=ТабличнаяЧасть1.Добавить();
		//НоваяСтрока.

	КонецПроцедуры // Печать()  




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

	Возврат ПараметрыРегистрации;
	
КонецФункции     

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

	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
	Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление; 
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;

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


Функция СформироватьПечатнуюФорму(Ссылка, ОбъектыПечати)  
	ДатаНачала=Дата('2025.04.27 00:00:00');
	ДатаОкончанияКонецДня=Дата('2025.04.27 23:59:00');

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


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

		// Результат запроса позиции которые сегодня купили и вернули  
		ФлагЗаписиПозиции=Истина;
		Для Каждого Строка_РезультатЗапроса_Чек_И_ЧекВозрат ИЗ РезультатЗапроса_Чек_И_ЧекВозрат Цикл   
			Возврат_Ссылка                   = Строка_РезультатЗапроса_Чек_И_ЧекВозрат.Возврат_Ссылка; 
			Номенклатура_Ссылка              = Строка_РезультатЗапроса_Чек_И_ЧекВозрат.Номенклатура;
		    ЧекККМСсылка_ИЗ__Чек_И_ЧекВозрат = Строка_РезультатЗапроса_Чек_И_ЧекВозрат.ЧекККМСсылка;

			Если (ДокументПроверка=ЧекККМСсылка_ИЗ__Чек_И_ЧекВозрат ИЛИ ДокументПроверка=Возврат_Ссылка) И НоменклатураЧека=Номенклатура_Ссылка Тогда 
				ФлагЗаписиПозиции=Ложь;
				Продолжить;	
			КонецЕсли;	
			
		КонецЦикла;	   
		
		Если Не ФлагЗаписиПозиции Тогда 
			Продолжить;	
		КонецЕсли;	
		
		НоваяСтрокаТЗ                = ТаблицаНоменкЦена.Добавить();
		НоваяСтрокаТЗ.Номенклатура   = НоменклатураЧека;
		НоваяСтрокаТЗ.Количество     = Количество;    
        НоваяСтрокаТЗ.Выручка        = ВаловаяПрибыльЧека;
        НоваяСтрокаТЗ.Скидка         = СуммаБезСкидкиЧека-СуммаЧека;
		НоваяСтрокаТЗ.СуммаБезСкидки = СуммаБезСкидкиЧека;       
        НоваяСтрокаТЗ.ДокументСсылка = ДокументПроверка;  
		
		
		 КонецЦикла; 
	
	СреднийЧек     = СуммаБезСкидки/КолВоЧековПродажи;   
	СуммаБезСкидки =СуммаБезСкидки;
	Скидка         = СуммаБезСкидки-СуммаПродаж;
	
	///////////////////////////////////////////////// Вытаскиваю поля Получино наличными, Получино картами  
	ПолученоКартами       = 0; 
	ПолученоНаличными     = 0;
    ПолученоСертификатами = 0;

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

	//СтруктуранПеременных=Новый Структура;   
	//СтруктуранПеременных.Вставить("КолВоНовыхДисконтныхКарт",КолВоНовыхДисконтныхКарт);  
	//СтруктуранПеременных.Вставить("ПолученоКартами",ПолученоКартами); 
	//СтруктуранПеременных.Вставить("ПолученоНаличными",ПолученоНаличными);  
	//СтруктуранПеременных.Вставить("ПолученоСертификатами",ПолученоСертификатами);
	//СтруктуранПеременных.Вставить("КолВоЧековПродажи",КолВоЧековПродажи);
	//СтруктуранПеременных.Вставить("КолВоЧековВозврата",КолВоЧековВозврата);
	//СтруктуранПеременных.Вставить("СреднийЧек",СреднийЧек);
	//СтруктуранПеременных.Вставить("СуммаБезСкидки",СуммаБезСкидки);
	//СтруктуранПеременных.Вставить("Скидка",Скидка);
	//СтруктуранПеременных.Вставить("КолВоЧеков",КолВоЧеков);
	//СтруктуранПеременных.Вставить("СреднееКолВоСтрок",СреднееКолВоСтрок);

	     
	ПолученоКартами          = ПолученоКартами;  
	ПолученоНаличными        = ПолученоНаличными; 
	ПолученоСертификатами    = ПолученоСертификатами;     
	КолВоЧековПродажи        = КолВоЧековПродажи; 
	КолВоЧековВозврата       = КолВоЧековВозврата;  
	
	СреднийЧек               = СреднийЧек;   
	СуммаБезСкидки           = СуммаБезСкидки;
	Скидка                   = Скидка;        
	Выручка                  = СуммаБезСкидки-Скидка;
	
	КолВоЧеков               = КолВоЧеков;    
	СреднееКолВоСтрок        = СреднееКолВоСтрок; 
	ТаблицаНоменкЦена.Сортировать("Номенклатура");
	ТаблицаНоменкЦена2       = ТаблицаНоменкЦена;   
	//СтруктуранПеременных.Вставить("ТаблицаНоменкЦена",ТаблицаНоменкЦена); 

	//////////////////// Для печати
	ТабДок              = Новый ТабличныйДокумент;    
	ТабДок.Очистить();    
	
	//Макет=РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");      
	Макет=ПолучитьМакет("Макет"); 
	ОбластьШапка                         = Макет.ПолучитьОбласть("ОбластьШапка");  
	ОбластьШапка.Параметры.ДатаНачала    =ДатаНачала;    
	ОбластьШапка.Параметры.ДатаОкончания =ДатаОкончанияКонецДня;   
	ТабДок.Вывести(ОбластьШапка);     
	
	ОбластьНазванияСтолбцов              = Макет.ПолучитьОбласть("ОбластьНазванияСтолбцов");  
    ТабДок.Вывести(ОбластьНазванияСтолбцов);     
	
	ОбластьТабличныхПеременных                              = Макет.ПолучитьОбласть("ОбластьТабличныхПеременных");  
	ОбластьТабличныхПеременных.Параметры.Выручка            = Выручка;   
	ОбластьТабличныхПеременных.Параметры.Скидка             = Скидка;
	ОбластьТабличныхПеременных.Параметры.СуммаБезСкидки     = СуммаБезСкидки;  
	
	ОбластьТабличныхПеременных.Параметры.ПолученоНаличными  = ПолученоНаличными; 
	ОбластьТабличныхПеременных.Параметры.ПолученоКартами    = ПолученоКартами;   
	//Количество чеков
	ОбластьТабличныхПеременных.Параметры.ВсегоЧеков         = КолВоЧековПродажи+КолВоЧековВозврата;
    ОбластьТабличныхПеременных.Параметры.КолВоЧековПродажи  = КолВоЧековПродажи;
	ОбластьТабличныхПеременных.Параметры.КолВоЧековВозврата = КолВоЧековВозврата;  
	//Статистика продаж        СреднийЧек    СреднееКолВоСтрок  КолВоНовыхДисконтныхКарт    
	ОбластьТабличныхПеременных.Параметры.СреднийЧек         = Формат(СреднийЧек,"ЧДЦ=2");
	ОбластьТабличныхПеременных.Параметры.СреднееКолВоСтрок  = Формат(СреднееКолВоСтрок,"ЧДЦ=2");
   	ОбластьТабличныхПеременных.Параметры.КолВоНовыхДисконтныхКарт  = КолВоНовыхДисконтныхКарт;
   
	ТабДок.Вывести(ОбластьТабличныхПеременных); 
	
	// Табличную часть вывожу Номенклатура и Цена
	ОбластьТЗ_Цикл                      = Макет.ПолучитьОбласть("ОбластьТЗ_Цикл");  
	Для Каждого Строка ИЗ ТаблицаНоменкЦена Цикл   		 
		ОбластьТЗ_Цикл.Параметры.Номенклатура_ТЧ   = Строка.Номенклатура; 
		ОбластьТЗ_Цикл.Параметры.Выручка_ТЧ        = Строка.Выручка;  
		ОбластьТЗ_Цикл.Параметры.Скидка_ТЧ         = Строка.Скидка;
		ОбластьТЗ_Цикл.Параметры.СуммаБезСкидки_ТЧ = Строка.СуммаБезСкидки;
		ТабДок.Вывести(ОбластьТЗ_Цикл);
	КонецЦикла;	

     /////////// Вывожу подвал
    ОбластьПодвал                              = Макет.ПолучитьОбласть("ОбластьПодвал");  
	ОбластьПодвал.Параметры.Выручка            = Выручка;   
	ОбластьПодвал.Параметры.Скидка             = Скидка;
	ОбластьПодвал.Параметры.СуммаБезСкидки     = СуммаБезСкидки;  
	
	ОбластьПодвал.Параметры.ПолученоНаличными  = ПолученоНаличными; 
	ОбластьПодвал.Параметры.ПолученоКартами    = ПолученоКартами;   
	//Количество чеков
	ОбластьПодвал.Параметры.ВсегоЧеков         = КолВоЧековПродажи+КолВоЧековВозврата;
    ОбластьПодвал.Параметры.КолВоЧековПродажи  = КолВоЧековПродажи;
	ОбластьПодвал.Параметры.КолВоЧековВозврата = КолВоЧековВозврата;  
	//Статистика продаж        СреднийЧек    СреднееКолВоСтрок      
	ОбластьПодвал.Параметры.СреднийЧек         = Формат(СреднийЧек,"ЧДЦ=2");
	ОбластьПодвал.Параметры.СреднееКолВоСтрок  = Формат(СреднееКолВоСтрок,"ЧДЦ=2");  
	ОбластьПодвал.Параметры.КолВоНовыхДисконтныхКарт  = КолВоНовыхДисконтныхКарт;

    ТабДок.Вывести(ОбластьПодвал); 

	
    Возврат ТабДок;

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


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

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


Ошибка
Не удалось выполнить команду по причине:
Получение элемента по индексу для значения не определено
{ВнешняяОбработка.ВнешняяОбработкаРозничныеПродажи_НовДисконтныеКарты.МодульОбъекта(5)}:УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
{ВнешняяОбработка.ВнешняяОбработкаРозничныеПродажи_НовДисконтныеКарты.МодульОбъекта(896)}:Печать(Неопределено, Параметры.КоллекцияПечатныхФорм, Неопределено, Параметры);
{ВнешняяОбработка.ВнешняяОбработкаРозничныеПродажи_НовДисконтныеКарты.МодульОбъекта(884)}:ПоказатьОтчет();
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2214)}:ВнешнийОбъект.ВыполнитьКоманду(ИдентификаторКоманды);
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(2283)}:ВыполнитьКомандуДополнительногоОтчетаИлиОбработки(
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(374)}:РезультатВыполнения = ВыполнитьКомандуВнешнегоОбъекта(ВнешнийОбъект, ИдентификаторКоманды, ПараметрыКоманды, АдресРезультата);
{(1)}:ДополнительныеОтчетыИОбработки.ВыполнитьКоманду(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(6472)}:Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")";
{ОбщийМодуль.ДлительныеОперации.Модуль(1781)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1748)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);
{ОбщийМодуль.ДлительныеОперации.Модуль(1761)}:ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,, СтекЗапуска, ИнформацияОбОшибке);

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка, ОшибкаКонфигурации]
по причине:
Получение элемента по индексу для значения не определено
[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1979322 04.06.25 11:41 Сейчас в теме
Все таки победил, внешнюю обработку сохранил
Изменил данную функцию
// Обработчик команд из интерфейса
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
    
   СформироватьПечатнуюФорму(Неопределено, Неопределено);    
КонецПроцедуры

. Но при запуске ни чего не выдает, хотя должен появиться макет. И еще вопрос в обработки у меня была возможность установить период за который формируется отчет, но сейчас такая возможность пропала. Как можно установить период

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

	КонецПроцедуры // Печать()  




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

	Возврат ПараметрыРегистрации;
	
КонецФункции     

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

	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
	Возврат Команды;
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")

	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление; 
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;

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


Функция СформироватьПечатнуюФорму(Ссылка, ОбъектыПечати)  
	ДатаНачала=Дата('2025.04.27 00:00:00');
	ДатаОкончанияКонецДня=Дата('2025.04.27 23:59:00');

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


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

		// Результат запроса позиции которые сегодня купили и вернули  
		ФлагЗаписиПозиции=Истина;
		Для Каждого Строка_РезультатЗапроса_Чек_И_ЧекВозрат ИЗ РезультатЗапроса_Чек_И_ЧекВозрат Цикл   
			Возврат_Ссылка                   = Строка_РезультатЗапроса_Чек_И_ЧекВозрат.Возврат_Ссылка; 
			Номенклатура_Ссылка              = Строка_РезультатЗапроса_Чек_И_ЧекВозрат.Номенклатура;
		    ЧекККМСсылка_ИЗ__Чек_И_ЧекВозрат = Строка_РезультатЗапроса_Чек_И_ЧекВозрат.ЧекККМСсылка;

			Если (ДокументПроверка=ЧекККМСсылка_ИЗ__Чек_И_ЧекВозрат ИЛИ ДокументПроверка=Возврат_Ссылка) И НоменклатураЧека=Номенклатура_Ссылка Тогда 
				ФлагЗаписиПозиции=Ложь;
				Продолжить;	
			КонецЕсли;	
			
		КонецЦикла;	   
		
		Если Не ФлагЗаписиПозиции Тогда 
			Продолжить;	
		КонецЕсли;	
		
		НоваяСтрокаТЗ                = ТаблицаНоменкЦена.Добавить();
		НоваяСтрокаТЗ.Номенклатура   = НоменклатураЧека;
		НоваяСтрокаТЗ.Количество     = Количество;    
        НоваяСтрокаТЗ.Выручка        = ВаловаяПрибыльЧека;
        НоваяСтрокаТЗ.Скидка         = СуммаБезСкидкиЧека-СуммаЧека;
		НоваяСтрокаТЗ.СуммаБезСкидки = СуммаБезСкидкиЧека;       
        НоваяСтрокаТЗ.ДокументСсылка = ДокументПроверка;  
		
		
		 КонецЦикла; 
	
	СреднийЧек     = СуммаБезСкидки/КолВоЧековПродажи;   
	СуммаБезСкидки =СуммаБезСкидки;
	Скидка         = СуммаБезСкидки-СуммаПродаж;
	
	///////////////////////////////////////////////// Вытаскиваю поля Получино наличными, Получино картами  
	ПолученоКартами       = 0; 
	ПолученоНаличными     = 0;
    ПолученоСертификатами = 0;

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

	//СтруктуранПеременных=Новый Структура;   
	//СтруктуранПеременных.Вставить("КолВоНовыхДисконтныхКарт",КолВоНовыхДисконтныхКарт);  
	//СтруктуранПеременных.Вставить("ПолученоКартами",ПолученоКартами); 
	//СтруктуранПеременных.Вставить("ПолученоНаличными",ПолученоНаличными);  
	//СтруктуранПеременных.Вставить("ПолученоСертификатами",ПолученоСертификатами);
	//СтруктуранПеременных.Вставить("КолВоЧековПродажи",КолВоЧековПродажи);
	//СтруктуранПеременных.Вставить("КолВоЧековВозврата",КолВоЧековВозврата);
	//СтруктуранПеременных.Вставить("СреднийЧек",СреднийЧек);
	//СтруктуранПеременных.Вставить("СуммаБезСкидки",СуммаБезСкидки);
	//СтруктуранПеременных.Вставить("Скидка",Скидка);
	//СтруктуранПеременных.Вставить("КолВоЧеков",КолВоЧеков);
	//СтруктуранПеременных.Вставить("СреднееКолВоСтрок",СреднееКолВоСтрок);

	     
	ПолученоКартами          = ПолученоКартами;  
	ПолученоНаличными        = ПолученоНаличными; 
	ПолученоСертификатами    = ПолученоСертификатами;     
	КолВоЧековПродажи        = КолВоЧековПродажи; 
	КолВоЧековВозврата       = КолВоЧековВозврата;  
	
	СреднийЧек               = СреднийЧек;   
	СуммаБезСкидки           = СуммаБезСкидки;
	Скидка                   = Скидка;        
	Выручка                  = СуммаБезСкидки-Скидка;
	
	КолВоЧеков               = КолВоЧеков;    
	СреднееКолВоСтрок        = СреднееКолВоСтрок; 
	ТаблицаНоменкЦена.Сортировать("Номенклатура");
	ТаблицаНоменкЦена2       = ТаблицаНоменкЦена;   
	//СтруктуранПеременных.Вставить("ТаблицаНоменкЦена",ТаблицаНоменкЦена); 

	//////////////////// Для печати
	ТабДок              = Новый ТабличныйДокумент;    
	ТабДок.Очистить();    
	
	//Макет=РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");      
	Макет=ПолучитьМакет("Макет"); 
	ОбластьШапка                         = Макет.ПолучитьОбласть("ОбластьШапка");  
	ОбластьШапка.Параметры.ДатаНачала    =ДатаНачала;    
	ОбластьШапка.Параметры.ДатаОкончания =ДатаОкончанияКонецДня;   
	ТабДок.Вывести(ОбластьШапка);     
	
	ОбластьНазванияСтолбцов              = Макет.ПолучитьОбласть("ОбластьНазванияСтолбцов");  
    ТабДок.Вывести(ОбластьНазванияСтолбцов);     
	
	ОбластьТабличныхПеременных                              = Макет.ПолучитьОбласть("ОбластьТабличныхПеременных");  
	ОбластьТабличныхПеременных.Параметры.Выручка            = Выручка;   
	ОбластьТабличныхПеременных.Параметры.Скидка             = Скидка;
	ОбластьТабличныхПеременных.Параметры.СуммаБезСкидки     = СуммаБезСкидки;  
	
	ОбластьТабличныхПеременных.Параметры.ПолученоНаличными  = ПолученоНаличными; 
	ОбластьТабличныхПеременных.Параметры.ПолученоКартами    = ПолученоКартами;   
	//Количество чеков
	ОбластьТабличныхПеременных.Параметры.ВсегоЧеков         = КолВоЧековПродажи+КолВоЧековВозврата;
    ОбластьТабличныхПеременных.Параметры.КолВоЧековПродажи  = КолВоЧековПродажи;
	ОбластьТабличныхПеременных.Параметры.КолВоЧековВозврата = КолВоЧековВозврата;  
	//Статистика продаж        СреднийЧек    СреднееКолВоСтрок  КолВоНовыхДисконтныхКарт    
	ОбластьТабличныхПеременных.Параметры.СреднийЧек         = Формат(СреднийЧек,"ЧДЦ=2");
	ОбластьТабличныхПеременных.Параметры.СреднееКолВоСтрок  = Формат(СреднееКолВоСтрок,"ЧДЦ=2");
   	ОбластьТабличныхПеременных.Параметры.КолВоНовыхДисконтныхКарт  = КолВоНовыхДисконтныхКарт;
   
	ТабДок.Вывести(ОбластьТабличныхПеременных); 
	
	// Табличную часть вывожу Номенклатура и Цена
	ОбластьТЗ_Цикл                      = Макет.ПолучитьОбласть("ОбластьТЗ_Цикл");  
	Для Каждого Строка ИЗ ТаблицаНоменкЦена Цикл   		 
		ОбластьТЗ_Цикл.Параметры.Номенклатура_ТЧ   = Строка.Номенклатура; 
		ОбластьТЗ_Цикл.Параметры.Выручка_ТЧ        = Строка.Выручка;  
		ОбластьТЗ_Цикл.Параметры.Скидка_ТЧ         = Строка.Скидка;
		ОбластьТЗ_Цикл.Параметры.СуммаБезСкидки_ТЧ = Строка.СуммаБезСкидки;
		ТабДок.Вывести(ОбластьТЗ_Цикл);
	КонецЦикла;	

     /////////// Вывожу подвал
    ОбластьПодвал                              = Макет.ПолучитьОбласть("ОбластьПодвал");  
	ОбластьПодвал.Параметры.Выручка            = Выручка;   
	ОбластьПодвал.Параметры.Скидка             = Скидка;
	ОбластьПодвал.Параметры.СуммаБезСкидки     = СуммаБезСкидки;  
	
	ОбластьПодвал.Параметры.ПолученоНаличными  = ПолученоНаличными; 
	ОбластьПодвал.Параметры.ПолученоКартами    = ПолученоКартами;   
	//Количество чеков
	ОбластьПодвал.Параметры.ВсегоЧеков         = КолВоЧековПродажи+КолВоЧековВозврата;
    ОбластьПодвал.Параметры.КолВоЧековПродажи  = КолВоЧековПродажи;
	ОбластьПодвал.Параметры.КолВоЧековВозврата = КолВоЧековВозврата;  
	//Статистика продаж        СреднийЧек    СреднееКолВоСтрок      
	ОбластьПодвал.Параметры.СреднийЧек         = Формат(СреднийЧек,"ЧДЦ=2");
	ОбластьПодвал.Параметры.СреднееКолВоСтрок  = Формат(СреднееКолВоСтрок,"ЧДЦ=2");  
	ОбластьПодвал.Параметры.КолВоНовыхДисконтныхКарт  = КолВоНовыхДисконтныхКарт;

    ТабДок.Вывести(ОбластьПодвал); 

	
    Возврат ТабДок;

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


// Обработчик команд из интерфейса
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыКоманды = Неопределено) Экспорт
    
   СформироватьПечатнуюФорму(Неопределено, Неопределено);    
КонецПроцедуры
Показать
4. user2144928 3 05.06.25 15:33 Сейчас в теме
(2)
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт

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

КонецПроцедуры // Печать()

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

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


Детально не проанализировал весь блок, но я бы для начала так попробовал в этой части.
5. user2144928 3 05.06.25 16:01 Сейчас в теме
(2)

Функция СформироватьПечатнуюФорму(Ссылка, ОбъектыПечати)


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

Возврат ТабДок; 
Показать
3. anton13m 4 04.06.25 11:53 Сейчас в теме
А что нужно-то? Печатная форма вызывается из документа для которого она нужна, если нужно заполнять параметры, то стоит изучить это.
Если обработка планирует запускаться из доп.обработок, то наверное нужно еще одну команду с типом открытия формы и соответственно эту форму добавить.
6. vadim1011985 102 05.06.25 19:25 Сейчас в теме
Да там весь код надо переписывать !!!!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот