![]() |
|
Постабработка отчета СКД | ☑ | ||
---|---|---|---|---|
0
SnowBarsCloud
10.12.22
✎
17:02
|
Добрый день, коллеги. Нужен совет, может можно сделать вовсе как то легче, а я заморачиваюсь
Есть отчет, который показывает сколько было авансов в разрезе заказов и документов оплат. Отчет показывает остатки на начало и сумму всех авансов после даты отчета (не путать с остатком на конец) Структура отчета СКД следующего плана https://ibb.co/18Z7788 Запрос если нужен будет внизу Сейчас при выводе, отчет выглядит так, где не нужен разрез заказов (например в остатках в кассе на начало дня) или где заказа вовсе нет (например при выемке авансов из кассы, используется для передачи денег поставщику) я ставлю вместо заказа или документов оплаты "<Пустая аналитика>". Эти строки надо убрать Отчет выглядит вот так https://ibb.co/Q9gBst1 ТЕПЕРЬ СОБСТВЕННО СУТЬ ВОПРОСА Если я делаю это несколькоми группировками, ставя условие в группировке СКД, то у меня между группировками получаются разрывы, это не выглядит как сплошной отчет (может как то можно убрать разрывы, не используя постабработку, почему расскажу ниже) Если просто ставлю в текущей структуре условия, то у меня бывают ситуации, как на скрине ниже, что 2 уровень надо скрыть, а 3 оставить. При условии скрывается группировка и ее вложенные https://ibb.co/Q9gBst1 (часть внесение денег) Если я делаю это постабраткой, то у меня съезжают группировки (плюсики и минусики) Скрин как съежают данные https://ibb.co/mHLSW6Z Код постобработки \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); //УДАЛИМ СТРОКИ С ПУСТЫМИ АНАЛИТИКАМИ КонструкцияПоиска = "<Пустая аналитика>"; НайденнаяОбласть = ДокументРезультат.НайтиТекст(КонструкцияПоиска); Пока НайденнаяОбласть <> Неопределено Цикл //УДАЛЯЕМ ПОЛНОСТЬЮ СТРОКУ УдаляемаяОбласть = ДокументРезультат.Область(НайденнаяОбласть.Верх, 1, НайденнаяОбласть.Низ, ДокументРезультат.ШиринаТаблицы); //УдаляемаяОбласть.АвтоВысотаСтроки = Ложь; //УдаляемаяОбласть.ВысотаСтроки = 0; ДокументРезультат.УдалитьОбласть(УдаляемаяОбласть, ТипСмещенияТабличногоДокумента.ПоВертикали); НайденнаяОбласть = ДокументРезультат.НайтиТекст(КонструкцияПоиска, УдаляемаяОбласть); КонецЦикла; КонецПроцедуры \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Пробовал так же использовать свойство видимость и высота строки, но не отрабатывает Может есть другой способ или что-то в этих способах делаю не так. Спасибо заранее за ответы:) |
|||
1
SnowBarsCloud
10.12.22
✎
17:03
|
Запрос
ВЫБРАТЬ ОплатаСчетовИЗаказовОбороты.СчетНаОплату КАК Заказ, ОплатаСчетовИЗаказовОбороты.Регистратор КАК ДокументПлатежа, ЕСТЬNULL(СУММА(ОплатаСчетовИЗаказовОбороты.СуммаАвансаОборот), 0) КАК Предоплата ПОМЕСТИТЬ Предоплат ИЗ РегистрНакопления.ОплатаСчетовИЗаказов.Обороты(, , Регистратор, ) КАК ОплатаСчетовИЗаказовОбороты ГДЕ (ОплатаСчетовИЗаказовОбороты.Регистратор ССЫЛКА Документ.ПоступлениеВКассу ИЛИ ОплатаСчетовИЗаказовОбороты.Регистратор ССЫЛКА Документ.РасходИзКассы ИЛИ ОплатаСчетовИЗаказовОбороты.Регистратор ССЫЛКА Документ.ПоступлениеНаСчет ИЛИ ОплатаСчетовИЗаказовОбороты.Регистратор ССЫЛКА Документ.РасходСоСчета ИЛИ ОплатаСчетовИЗаказовОбороты.Регистратор ССЫЛКА Документ.ОперацияПоПлатежнымКартам) И (ОплатаСчетовИЗаказовОбороты.Регистратор.Касса = ВЫРАЗИТЬ(&КассаККМ КАК Справочник.КассыККМ).КассаАвансов ИЛИ ОплатаСчетовИЗаказовОбороты.Регистратор.КассаККМ = &КассаККМ) СГРУППИРОВАТЬ ПО ОплатаСчетовИЗаказовОбороты.СчетНаОплату, ОплатаСчетовИЗаказовОбороты.Регистратор ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Предоплат.Заказ КАК Заказ, СУММА(Предоплат.Предоплата) КАК Сумма ПОМЕСТИТЬ ОплатыВРазрезеЗаказа ИЗ Предоплат КАК Предоплат СГРУППИРОВАТЬ ПО Предоплат.Заказ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(СУММА(ВЫБОР КОГДА ДенежныеСредстваВКассахККМ.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ДенежныеСредстваВКассахККМ.Сумма ИНАЧЕ -ДенежныеСредстваВКассахККМ.Сумма КОНЕЦ), 0) КАК Сумма, ДенежныеСредстваВКассахККМ.Регистратор.Заказ КАК Заказ ПОМЕСТИТЬ ИспользованоПредоплат ИЗ РегистрНакопления.ДенежныеСредстваВКассахККМ КАК ДенежныеСредстваВКассахККМ ГДЕ ДенежныеСредстваВКассахККМ.СодержаниеПроводки = "Зачет предоплаты" СГРУППИРОВАТЬ ПО ДенежныеСредстваВКассахККМ.Регистратор.Заказ ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ОплатыВРазрезеЗаказа.Заказ КАК Заказ ПОМЕСТИТЬ ЛишниеЗаказы ИЗ ИспользованоПредоплат КАК ИспользованоПредоплат ЛЕВОЕ СОЕДИНЕНИЕ ОплатыВРазрезеЗаказа КАК ОплатыВРазрезеЗаказа ПО ИспользованоПредоплат.Заказ = ОплатыВРазрезеЗаказа.Заказ ГДЕ ИспользованоПредоплат.Сумма + ОплатыВРазрезеЗаказа.Сумма <= 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 2 КАК ВидОперации, "Внесено предоплат" КАК НазваниеОперации, Предоплат.Заказ КАК Заказ, Предоплат.ДокументПлатежа КАК ДокументПлатежа, Предоплат.Предоплата КАК Предоплата ПОМЕСТИТЬ СписокАвансовПолный ИЗ Предоплат КАК Предоплат ГДЕ НЕ Предоплат.Заказ В (ВЫБРАТЬ ЛишниеЗаказы.Заказ ИЗ ЛишниеЗаказы) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3, "Внесение денег в кассу", "", ДенежныеСредства.Регистратор, ДенежныеСредства.Сумма ИЗ РегистрНакопления.ДенежныеСредства КАК ДенежныеСредства ГДЕ ДенежныеСредства.Статья = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ЛичныеСредстваПредпринимателя) И ДенежныеСредства.Регистратор ССЫЛКА Документ.ПоступлениеВКассу И ДенежныеСредства.Регистратор.Касса = ВЫРАЗИТЬ(&КассаККМ КАК Справочник.КассыККМ).КассаАвансов И ДенежныеСредства.Период >= ДАТАВРЕМЯ(2022, 12, 1) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4, "Выемка денег из кассы", "", ДенежныеСредства.Регистратор, -ДенежныеСредства.Сумма ИЗ РегистрНакопления.ДенежныеСредства КАК ДенежныеСредства ГДЕ ДенежныеСредства.Статья = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ЛичныеСредстваПредпринимателя) И ДенежныеСредства.Регистратор ССЫЛКА Документ.РасходИзКассы И ДенежныеСредства.Регистратор.Касса = ВЫРАЗИТЬ(&КассаККМ КАК Справочник.КассыККМ).КассаАвансов И ДенежныеСредства.Период >= ДАТАВРЕМЯ(2022, 1, 1) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5, "Зачтено предоплат", ЧекиИспользованныеПредоплаты.Ссылка, ЧекиИспользованныеПредоплаты.Документ, ЧекиИспользованныеПредоплаты.СуммаРасчетов ИЗ Документ.ЧекККМ.Предоплата КАК ЧекиИспользованныеПредоплаты ГДЕ ЧекиИспользованныеПредоплаты.Ссылка.Заказ В (ВЫБРАТЬ Предоплат.Заказ ИЗ Предоплат) И ЧекиИспользованныеПредоплаты.Документ В (ВЫБРАТЬ Предоплат.ДокументПлатежа ИЗ Предоплат) И ЧекиИспользованныеПредоплаты.Документ ССЫЛКА Документ.ПоступлениеВКассу ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5, "Зачтено предоплат", ЧекиИспользованныеПредоплаты.Ссылка, ЧекиИспользованныеПредоплаты.Документ, -ЧекиИспользованныеПредоплаты.СуммаРасчетов ИЗ Документ.ЧекККМВозврат.Предоплата КАК ЧекиИспользованныеПредоплаты ГДЕ ЧекиИспользованныеПредоплаты.Ссылка.Заказ В (ВЫБРАТЬ Предоплат.Заказ ИЗ Предоплат) И ЧекиИспользованныеПредоплаты.Документ В (ВЫБРАТЬ Предоплат.ДокументПлатежа ИЗ Предоплат) И ЧекиИспользованныеПредоплаты.Документ ССЫЛКА Документ.ПоступлениеВКассу ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1 КАК ВидОперации, "Остаток на начало периода" КАК НазваниеОперации, "" КАК Заказ, "" КАК ДокументПлатежа, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ПоступлениеВКассу ИЛИ СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.РасходИзКассы ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ КАК Наличные, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ПоступлениеНаСчет ИЛИ СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.РасходСоСчета ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ КАК Счета, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ОперацияПоПлатежнымКартам ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ КАК ПлатежныеКарты ИЗ СписокАвансовПолный КАК СписокАвансовПолный ГДЕ СписокАвансовПолный.ДокументПлатежа.Дата < &ПериодОтчетаДатаНачала ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ СписокАвансовПолный.ВидОперации, СписокАвансовПолный.НазваниеОперации, СписокАвансовПолный.Заказ, СписокАвансовПолный.ДокументПлатежа, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ПоступлениеВКассу ИЛИ СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.РасходИзКассы ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ПоступлениеНаСчет ИЛИ СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.РасходСоСчета ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ОперацияПоПлатежнымКартам ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ ИЗ СписокАвансовПолный КАК СписокАвансовПолный ГДЕ СписокАвансовПолный.ДокументПлатежа.Дата МЕЖДУ &ПериодОтчетаДатаНачала И &ПериодОтчетаДатаОкончания ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6, "Остаток на конец периода", "", "", ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ПоступлениеВКассу ИЛИ СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.РасходИзКассы ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ПоступлениеНаСчет ИЛИ СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.РасходСоСчета ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ, ВЫБОР КОГДА СписокАвансовПолный.ДокументПлатежа ССЫЛКА Документ.ОперацияПоПлатежнымКартам ТОГДА СписокАвансовПолный.Предоплата ИНАЧЕ 0 КОНЕЦ ИЗ СписокАвансовПолный КАК СписокАвансовПолный ГДЕ СписокАвансовПолный.ДокументПлатежа.Дата > &ПериодОтчетаДатаОкончания |
|||
2
SnowBarsCloud
10.12.22
✎
17:11
|
Меня бы устроила постабработка, но как поправить плюсики и минусики? Как программно обновить их?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |