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