что такое кросс отчет

Ваш браузер устарел, пожалуйста обновите ваш браузер пройдя по ссылке www.microsoft.com/download

Добрый день! Представляю вашему вниманию пример реализации отчета кросс-таблицы с иерархией и жестко заданной структурой вывода на примере двух отчетов для БП 3.0:

1. ДДС по месяцам и кварталам (Простой отчет);

2. ДДС по счетам в разрезе валют (Сложный отчет).

Предпосылки:

В моей практике часто приходилось создавать подобные отчеты для финансового отдела, однако, первые реализации занимали у меня много времени, но по факту данный отчет без учета реализации жестко заданного шаблона является простым и легко реализуется на СКД.

Так как разработать данный отчет только с использованием СКД не является возможным из-за жестко заданной структуры вывода, я разработал шаблон отчета из симбиоза СКД и программного вывода в табличный документ, о котором пойдет речь далее.

Несмотря на то, что данный шаблон является своего рода «велосипедом», на моей практике он помогал мне на порядок минимизировать трудозатраты и реализовывать достаточно сложные отчеты.

Основной алгоритм разработанного шаблона:

1. Разработка схемы компоновки данных;

2. Вывод данных в дерево значений;

3. Создание нового дерева значений с нужными колонками кросс-таблицы;

4. Заполнение кросс-таблицы на основании дерева значений СКД;

5. Вывод кросс-таблицы в табличный документ.

1. Схема компоновки данных для отчета ДДС по месяцам и кварталам.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Схема компоновки данных для разрабатываемого отчета, последний уровень группировки будет преобразован в столбцы в кросс-таблице.

1.2 Схема компоновки данных по счетам в разрезе валют (Сложный отчет).

Этот вариант отчета выводит данные по всем организациям, по счетам БУ 50,51,52,55 с горизонтальными итогами в разрезе регламентированной валюты.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Основными удобствами при использовании шаблона является удобная программная структура, позволяющая разрабатывать сложный отчет различными способами, а также процедуры представленные ниже:

1. Процедура заполнения кросс-таблицы на основание дерева значений.

2. Процедура, устанавливающая значение ресурса во всех родительских группировках.

3. Процедура, выполняющая рекурсивный вывод созданной кросс-таблицы в табличный документ.

Данная обработка тестировалась на 1С:Предприятие 8.3 (8.3.12.1714) в Бухгалтерия предприятия, редакция 3.0 (3.0.43.239).

Источник

JasperReports — Кросс-таблицы

Кросс-таблицы (кросс-табулирования) — это отчеты, содержащие таблицы, в которых данные располагаются по строкам и столбцам в табличной форме. Объект кросс-таблицы используется для вставки отчета кросс-таблицы в основной отчет. Кросс-таблицы могут использоваться с любым уровнем данных (номинальным, порядковым, интервальным или относительным) и обычно отображать обобщенные данные, содержащиеся в переменных отчета, в форме динамической таблицы. Переменные используются для отображения агрегированных данных, таких как суммы, числа, средние значения.

Crosstab Properties

Элемент JRXML используется для вставки кросс-таблицы в отчет.

атрибут

Ниже приведен список атрибутов элемента —

columnBreakOffset — Когда происходит разрыв столбца, указывает количество вертикального пространства, измеренное в пикселях, перед тем, как последующий фрагмент кросс-таблицы будет размещен ниже предыдущего на той же странице. Значение по умолчанию 10.

runDirection — указывает, должны ли данные кросс- таблицы заполняться слева направо (LTR) или справа налево (RTL). Значением по умолчанию является LTR.

columnBreakOffset — Когда происходит разрыв столбца, указывает количество вертикального пространства, измеренное в пикселях, перед тем, как последующий фрагмент кросс-таблицы будет размещен ниже предыдущего на той же странице. Значение по умолчанию 10.

runDirection — указывает, должны ли данные кросс- таблицы заполняться слева направо (LTR) или справа налево (RTL). Значением по умолчанию является LTR.

Подэлементы

Элемент имеет следующие подэлементы —

— этот элемент используется для доступа к переменным и параметрам отчета из кросс-таблицы. Атрибуты для этого элемента включают —

name — определяет имя параметра

класс — указывает класс параметров.

— этот элемент определяет набор данных, который будет использоваться для заполнения кросс-таблицы (подробное объяснение см. в следующем разделе). Атрибуты для этого элемента включают —

— этот элемент определяет содержимое области, найденной в верхнем левом углу кросс-таблицы, где встречаются заголовки столбцов и строки. Размер этой ячейки вычисляется автоматически на основе определенной ширины и высоты строки и столбца.

— этот элемент определяет группу, используемую для разделения данных на строки. Атрибуты для этого элемента включают —

name — определяет имя группы строк.

ширина — это определяет ширину группы строк.

headerPosition — определяет позицию содержимого заголовка (Top, Middle, Bottom, Stretch).

totalPosition — определяет позицию всего столбца (Start, End, None).

Этот элемент содержит следующие подэлементы —

— этот элемент определяет группу, используемую для разделения данных на столбцы. Атрибуты для этого элемента включают —

name — определяет имя группы столбцов.

высота — определяет высоту заголовка группы столбцов.

headerPosition — определяет позицию содержимого заголовка ( Right, Left, Center, Stretch ).

totalPosition — определяет позицию всего столбца ( Start, End, None ).

Этот элемент содержит следующие подэлементы —

— этот элемент определяет вычисление, которое будет выполняться по строкам и столбцам. Атрибуты для этого элемента включают —

имя — это определяет имя меры.

класс — указывает класс меры.

— этот элемент определяет способ размещения данных в ячейках без заголовка. Атрибуты для этого элемента включают —

columnTotalGroup — указывает группу, используемую для расчета общего количества столбцов.

высота — это определяет высоту ячейки.

rowTotalGroup — указывает группу, используемую для вычисления итоговой суммы строки.

ширина — это определяет ширину ячейки.

— этот элемент определяет, что отображать в пустой ячейке кросс-таблицы. Этот элемент не содержит атрибутов.

— этот элемент используется для доступа к переменным и параметрам отчета из кросс-таблицы. Атрибуты для этого элемента включают —

name — определяет имя параметра

класс — указывает класс параметров.

— этот элемент определяет набор данных, который будет использоваться для заполнения кросс-таблицы (подробное объяснение см. в следующем разделе). Атрибуты для этого элемента включают —

— этот элемент определяет содержимое области, найденной в верхнем левом углу кросс-таблицы, где встречаются заголовки столбцов и строки. Размер этой ячейки вычисляется автоматически на основе определенной ширины и высоты строки и столбца.

— этот элемент определяет группу, используемую для разделения данных на строки. Атрибуты для этого элемента включают —

name — определяет имя группы строк.

ширина — это определяет ширину группы строк.

headerPosition — определяет позицию содержимого заголовка (Top, Middle, Bottom, Stretch).

totalPosition — определяет позицию всего столбца (Start, End, None).

Этот элемент содержит следующие подэлементы —

— этот элемент определяет группу, используемую для разделения данных на столбцы. Атрибуты для этого элемента включают —

name — определяет имя группы столбцов.

высота — определяет высоту заголовка группы столбцов.

headerPosition — определяет позицию содержимого заголовка ( Right, Left, Center, Stretch ).

totalPosition — определяет позицию всего столбца ( Start, End, None ).

Этот элемент содержит следующие подэлементы —

— этот элемент определяет вычисление, которое будет выполняться по строкам и столбцам. Атрибуты для этого элемента включают —

имя — это определяет имя меры.

класс — указывает класс меры.

— этот элемент определяет способ размещения данных в ячейках без заголовка. Атрибуты для этого элемента включают —

columnTotalGroup — указывает группу, используемую для расчета общего количества столбцов.

высота — это определяет высоту ячейки.

rowTotalGroup — указывает группу, используемую для вычисления итоговой суммы строки.

ширина — это определяет ширину ячейки.

— этот элемент определяет, что отображать в пустой ячейке кросс-таблицы. Этот элемент не содержит атрибутов.

Группировка данных в кросс-таблице

bucketExpression — выражение, которое будет оценено для получения элементов группы данных.

comptorExpression — Необходим в том случае, если естественное упорядочение значений не является лучшим выбором.

orderByExpression — указывает значение, используемое для сортировки данных.

bucketExpression — выражение, которое будет оценено для получения элементов группы данных.

comptorExpression — Необходим в том случае, если естественное упорядочение значений не является лучшим выбором.

orderByExpression — указывает значение, используемое для сортировки данных.

Встроенные переменные кросс-таблицы

Ниже приведен список текущих значений меры и итогов разных уровней, соответствующих ячейке, можно получить через переменные, названные в соответствии со следующей схемой:

Текущее значение вычисления меры сохраняется в переменной, имя которой совпадает с именем меры.

_ _ALL — Это дает итоговое значение для всех записей в группе столбцов из той же строки.

_ _ALL — это итоговое значение для всех записей в группе строк из одного столбца.

_ _ _ALL — Это дает объединенную сумму, соответствующую всем записям в группах строк и столбцов.

Текущее значение вычисления меры сохраняется в переменной, имя которой совпадает с именем меры.

_ _ALL — Это дает итоговое значение для всех записей в группе столбцов из той же строки.

_ _ALL — это итоговое значение для всех записей в группе строк из одного столбца.

_ _ _ALL — Это дает объединенную сумму, соответствующую всем записям в группах строк и столбцов.

пример

Детали вышеупомянутого файла следующие:

Элемент определяет группу для разделения данных на строки. Здесь каждая строка будет отображать данные для другого имени.

Элемент определяет способ размещения данных в ячейках без заголовка. Этот элемент также содержит единственный элемент в качестве единственного подэлемента.

Элемент определяет группу для разделения данных на строки. Здесь каждая строка будет отображать данные для другого имени.

Элемент определяет способ размещения данных в ячейках без заголовка. Этот элемент также содержит единственный элемент в качестве единственного подэлемента.

Java-коды для заполнения отчетов остаются без изменений. Содержимое файла C: \ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint \ JasperReportFill.java указано ниже —

Содержимое файла POJO C: \ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint \ DataBean.java :

Содержимое файла C: \ tools \ jasperreports-5.0.1 \ test \ src \ com \ tutorialspoint \ DataBeanList.java выглядит следующим образом:

Генерация отчетов

Далее, давайте скомпилируем и выполним вышеуказанные файлы, используя наш обычный процесс сборки ANT. Содержимое файла build.xml (сохраненного в каталоге C: \ tools \ jasperreports-5.0.1 \ test) приведено ниже.

Файл импорта — baseBuild.xml взят из главы « Настройка среды» и должен быть расположен в том же каталоге, что и build.xml.

В результате вышеупомянутой компиляции открывается окно JasperViewer, как показано на приведенном ниже экране —

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Здесь мы видим, что каждая страна и название сведены в таблицу.

Источник

Как не изобретать велосипед при разработке отчетов (22 минуты видео)

При построении отчетов есть ряд задач, которые при решении «в лоб» часто приводят к написанию тяжелых запросов или запросам в цикле или ручному выводу данных в таблицу.

Вот примеры таких задач:

И все эти задачи решаются элементарно с помощью функций СКД – буквально за пару минут. Без запросов в цикле и кривого кода.

Сегодня рассмотрим использование некоторых функций СКД на конкретных примерах.

Видео 1. Как получить сумму в отчете нарастающим итогом?

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

На самом деле эту задачу можно решить и с помощью запроса (без функций СКД), но есть 2 проблемы:

С помощью функций СКД эта задача решается одной строчкой кода, и отчет будет работать максимально быстро, смотрим:

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Видео 2. Как получить значение из предыдущей строки отчета?

Такой функционал может быть полезен, когда необходимо отслеживать тренд определенного ресурса – происходит уменьшение или увеличение относительно предыдущего состояния, плюс должна рассчитываться дельта.

Приведем несколько примеров, когда это может быть полезно:

Такие задачи также трудоемко решить с помощью запроса, а в СКД это делается одной строкой:

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Видео 3. Как сравнить итог по текущей строке с эталонным значением?

Пример, когда этот функционал может быть полезен:

То есть речь о том, что нужно сравнить каждую строку продаж менеджера с продажами руководителя отдела.

А эти данные могут, например, использоваться для начисления премии.

И опять же с помощью СКД эта задача решается в одну строку:

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Видео 4. Получение нарастающего итога в кросс-таблице

В отчете вида кросс-таблица нарастающий итог может считаться как вертикально (по строкам), так и горизонтально (по столбцам).

Мы покажем, как с помощью одного параметра СКД управлять направлением расчета итогов:

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Видео 5. Вывод табличной части в отдельной ячейке отчета

Допустим, необходимо разработать отчет, который выводит информацию о документах. При этом в отдельной ячейке должна содержаться табличная часть документа.

Чтобы решить подобную задачу с помощью обычного запроса, потребуется писать ручной вывод результата в табличный документ.

В СКД эта задача вновь решается одной функцией:

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Чтобы не изобретать велосипед при разработке отчетов, рекомендуем изучить полный функционал Системы компоновки данных.

Эта тема детально раскрыта в курсе:

Поддержка – 2 месяца. Объем курса – 34 учебных часа.

Не откладывайте свое обучение!

Комментарии / обсуждение (68):

Добрый день. А можно ли функцию ВычислитьЗначениеСГруппировкойВМассив эмулировать в языке запросов?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Функция ВычислитьВыражениеСГруппировкойМассив часто используется в выражениях для расчета ресурсов, значит, эти вычисления будут производиться не на сервере СУБД, а на сервере 1С:Предприятия. Поэтому нужно понимать, что это всё-таки разные расчеты, т.к. итоги – это дополнительно подсчитанные данные, которые не возвращает сервер СУБД. Но в некоторых случаях можно эмулировать такой расчет при помощи запроса.
Например, есть выражение:

Для такого расчета в запрос можно добавить дополнительные временные таблицы. В первой – при помощи агрегатной функции Максимум посчитаем максимальное значение, сгруппировав данные по контрагенту. А затем рассчитаем сумму полученных значений.

Если же результатом вычисления выражения будет массив, то при помощи запроса не получим такой же результат.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый вечер. Подскажите, как можно перемножить значения строк в колонке? В курсе по СКД этого не нашел.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Рассмотрите вариант использования экспортной функции общего модуля для вычислений.

В таком случае выражение ресурса будет выглядеть следующим образом:

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

В таком случае выражение будет вычисляться для каждой записи? И получается общий модуль будет вызываться столько раз, сколько записей будет в отчете? При этом передаваться туда будет одна и та же таблица? Есть возможность как то передать таблицу или массив один раз, а не вычислять в каждой детальной записи?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Выражение для ресурса вычисляется столько раз, сколько раз этот ресурс нужно вывести в отчет. А это в свою очередь зависит от настроек компоновки отчета – какие группировки используются, какие выходные поля на каких уровнях группировки выводятся. В зависимости от этого при каждом вызове функции общего модуля (как и обычной агрегатной функции Сумма, Количество и т.д.) в нее могут передаваться в качестве аргумента разные значения, а не всегда один и тот же массив значений.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Да, правильно. Нельзя получить все значения ресурса, выводимые в отчет, за один вызов функции общего модуля.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Есть одна проблема, которая не описана в курсе, при работе в режиме предприятия с изменением встроенных отчетов.
Например, имеется отчет “Исполнение плана закупок по подразделениям”.

Когда я добавляю в отчет пользовательское поле-выражение “Цена”, то прописываю формулу: Сумма/Количество. Но данная формула не работает – не считает результат, т.к. не понимает откуда брать значения, поскольку есть поля План.Сумма и План.Количество, а есть Факт.Сумма и Факт.Количество.

При заполнении пользовательского поля-выражения выражением План.Сумма /План.Количество, с дальнейшей попыткой его сохранения, всплывает сообщение “Поле не найдено “План.Сумма”.

Так как быть в этом случае, когда в пользовательских полях несколько одноименных полей, которые сгруппированы (пример: Факт.Сумма, Факт.Количество и План.Сумма, План.Количество), и необходимо сделать вычисления выражением в вновь создаваемом пользовательском поле, используя конкретные и существующие пользовательские поля?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
В настройках отчета сохранил настройки компоновки в XML-файл, отредактировал его, добавил блок с описанием нового пользовательского поля:

Т.е. выражение простое – План.Сумма/План.Количество. И оно работает. А в режиме “1С:Предприятие” в конструкторе не дает его использовать.
Такой файл с настройками компоновки успешно загружается, добавляем пользовательское поле в выбранные поля. Отчет корректно формируется:
что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет
Приложил сохраненные настройки из демо-базы УТ:
ИсполнениеПланаЗакупок_Тест.zip

Видео 5. Вывод табличной части в отдельной ячейке отчета
Вопрос: Как сделать, чтоб при расшифровке такой ячейки платформа не вываливалась в критическую ошибку?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Проверяю на платформе 8.3.17.1549. Падения платформы не происходит. Прикрепил отчет, на котором проверяю, – ТабличнаяЧасть.zip.

В любом случае падение платформы – это некорректное поведение программы. Рекомендую протестировать на других релизах платформы, а также написать разработчикам платформы пример воспроизведения, чтобы они могли локализовать проблему, исправить ошибку или указать способ обхода.

Добрый день! Проходила ваши курсы по СКД, очень многое стало понятно. Сейчас на реальной базе не могу решить простую не первый взгляд задачу: в отчете есть колонка, показывающая некоторую сумму. А в итогах по организации мне нужно показывать ДОЛЮ непустых сумм к общему числу строк. Простое деление Сумма(ВЫБОР КОГДА ПроцентКВКАСКО = 0 ТОГДА 0 ИНАЧЕ 1 КОНЕЦ) / Количество(ПроцентКВКАСКО) не помогает. Может, подскажете?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Предполагаю, что в колонке с суммами появляется значение типа NULL, которое и портит расчет.
Приложил несколько примеров схем компоновки, где используется указанное Вами выражение для ресурса: Проценты.zip
В этих примерах можно проверить, что если все значения – числа, то процент считается корректно. Если появляется значение типа NULL, то расчет нарушается.
Поэтому можно воспользоваться функцией ЕСТЬNULL для получения правильного расчета.

Добрый день. Как можно рассчитать разницу между продажами за текущий год и такой же год предыдущий? Выше вы сказали, что нужно и Можно использовать объединение двух наборов данных – запросов. В каждом из них будут одинаковые тексты запросов, но разные параметры – периоды, задающие интервал времени для получения из базы данных о продажах.
В курсе по СКД рассматривается пример такого отчета.

Примера такого отчета в курсе я не нашел(.
Подскажите пожалуйста в каком уроке этот пример?
Так же я сделал как вы сказали выше, но ничего не получается, появляются пустые поля суммы, в строках отчета Номенклатура, а в колонках Период (год) и два ресурса Сумма2019 и Сумма2020 из разных наборов данных, а далее когда пытаешься эти ресурсы поделить при помощи вычисляемого поля, то ничего не выходит. Подскажите пожалуйста в чем моя ошибка?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
В практическом задании 21.1 рассматривается отчет, который выводит продажи за два периода, вычисляется разница между этими значениями.
Посмотрите решение этого задания.
В нем не использовалось поле ПериодГод, только Номенклатура, продажи за текущий и предыдущий период. Если применяется объединение наборов, то поле ПериодГод не требуется, ведь у нас есть отдельный набор данных, который получает продажи за определенный год, значит, у нас есть отдельный ресурс для продаж каждого года.
А можно объединение наборов данных не использовать, выбирать все данные одним запросом, тогда поле ПериодГод нужно, для расчета процента можно применять выражение:

подскажите а как получить итог по по колонкам нарастающего итога?
скд в итоге выводит последнее значение
а надо сумму всех расчитанных

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
На закладке Ресурсы описываем два выражения для расчета ресурсов. Одно из них – для общего итога:
что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет
Вот такое выражение получается – используем две функции (ВычислитьВыражениеСГруппировкойМассив и ВычислитьВыражение):

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Приведите, пожалуйста, конкретный пример, желательно со скриншотами, какие данные выводятся в отчет, какова его структура, а также – что именно нужно получить в результате.
Постараюсь предложить вариант решения.

Отчет рассчитывает план продаж на несколько недель. По факту продаж определяется потребность на каждую неделю и попадает в план, но если она не превышает складского остатка. Если потребность больше остатка, то количество в плане уменьшается на величину превышения остатка. По номенклатуре отчет работает корректно, но по вышестоящей группировке модель итоговые данные не верны. На скрине показан пример.

Сам ресурс рассчитывается так

Для агрегатной функции вышестоящей группировки пробовал варианты с Сумма(ВычислитьВыражениеСГруппировкойМассив… но группировка по номеру недели в нее не принимается.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Сложное выражение для ресурса получилось. Предлагаю следующие направления для размышлений:
1. Упростить отчет за счет хранения данных в регистрах. Т.е. не рассчитываем данные в отчете, а используем документ, который выполняет расчеты и пишет в регистр готовые данные. В отчете остается только вывести их, выражения для ресурсов получатся простыми – вроде Сумма(ИмяРесурса), которые будут предстказуемо работать, в них проще разобраться, чем в многоэтажных выражениях.

2. Попробовать для расчетов использовать экспортные функции общих модулей.
В таком случае выражение ресурса будет выглядеть следующим образом:

Кстати, выражение Массив(ИмяРесурса) может подсказать, какие значения используются при вычислении значения ресурса.

3. Отказаться от использования СКД – выводить программно данные в табличный документ.
Получим нужные значения в отчете. Но в таком случае лишимся удобных отборов, оформления и прочих инструментов, которые предоставляет СКД.

Добрый день Василий!

Проходил ваши курсы по СКД и Запросам, курсы очень классные, всем рекомендую.

|январь|февраль|март |апрель|май |июнь |
|15000 |15000 |15000 |15000 |15000|20000 |, а получается вот так:

|январь|февраль|март |апрель|май |июнь |
|35000 |20000 |20000 |20000 |20000|20000 |

суммы вообще не те…
Отчет делаю в УТ 11.4, ниже привожу запрос:

ВЫБРАТЬ
0 КАК Поле1
ПОМЕСТИТЬ ВТ_Цифра

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Давайте попробуем решить эту задачу при помощи двух связанных наборов данных. В первом наборе данных выберем все даты, на которые нужно получить остатки. Во втором наборе данных получаем остатки по регистру накопления РасчетыСКлиентами на дату, указанную в параметре. Связываем эти наборы данных, дату из первого набора передаем в параметр второго набора. Подобный прием рассматривался в курсе по СКД.

Добрый день Василий!
Спасибо за ответ!
Василий подскажите пожалуйста когда то проходил Ваш курс по запросам, курс супер, там есть урок и пример получение остатков на каждый день, сейчас решил освежить свою память и попытался воспроизвести этот пример только я вывожу еще и начальный остаток, приход, расход и конечный остаток (у вас в уроке только конечный остаток), но столкнулся с некоторыми трудностями когда выводишь данные с 01.07 по 31.07, то если в 31.07 были движения в данные выборки они не попадают к примеру остаток на начало 30.07 был 430 потом приход 100 далее расход 3 остаток на конец 30.07 527, тогда на начало 31.07 527 прихода не было расход 10 остаток на конец 31.07 517, а у меня получается две строки с датой 31.07:
|31.07.2019 |Товар1 |430|100|3 |527| – это строка ошибочная дубль даты 30.07
|31.07.2019 |Товар1|527|0 |10|517|
подскажите пожалуйста, что я делаю не так? Ниже привожу текст запроса:
ВЫБРАТЬ
0 КАК Поле1
ПОМЕСТИТЬ ВТ_Цифра

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

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
1. Посмотрите, пожалуйста, комментарий к курсу по запросам:
https://xn—-1-bedvffifm4g.xn--p1ai/1c-v8/development-optimize-queries/startpage/module09/comment-page-3/#comment-755210
В нем приводятся изменения для текста запроса, попробуйте у себя их же применить.

2. Попробуйте решить эту задачу не при помощи одного большого запроса, а при помощи СКД – при помощи соединения двух наборов данных. В первом наборе данных будет перечень дат. Для каждой из этих дат во втором запросе получаем данные при помощи виртуальной таблицы ОстаткиИОбороты.

Круто огромное спасибо

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день.
Скажите, а как изменить запрос СКД, если мне нужно выводить динамику (скажем, курсов валют по дням) не по одной валюте, а по всем?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Можно использовать простой текст запроса набора данных:

Поле Курс определяем как ресурс.
В настройках компоновки добавим диаграмму (тип диаграммы – график), у которой в точках будет Период, а в сериях – Валюта:
что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет
В таком случае получим график изменения курса валют по дням.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Можно использовать объединение двух наборов данных – запросов. В каждом из них будут одинаковые тексты запросов, но разные параметры – периоды, задающие интервал времени для получения из базы данных о продажах.
В курсе по СКД рассматривается пример такого отчета.

Добрый день. У Вас очень много очень полезных уроков, но найти их в общем списке крайне тяжело. Данные уроки пришлось искать полчаса путем просматривания всех новостей за полгода.
К чему я: ну очень хотелось бы какую-то систематизацию данных для поиска подобных уроков. Или чтобы я мог сам для себя сохранить в личном кабинете интересующие для себя ссылки на новости со своими комментариями.

Проходите курсы – там раз в 20 больше, строго по порядку и систематизировано.

А примеры.. – на то они и примеры, чтобы просто показывать примеры 🙂

Спасибо за примеры,
жаль что их так мало у 1С.

Вернуться к вашей публикации меня натолкнула интересная комбинация с итогами в СКД, для которой пока не удалось найти решение, допускаю что Вы его знаете.
Отчет содержит несколько вертикальных итогов, к которым нужно добавить еще один итог, который должен отображаться не самого нижнего уровня из 5-ти существующих, а с 3-го где данные нижних уровней не должны участвовать в этом итоге, данные для данного итога формируются отдельным запросом и присоединяются левым соединением к основному запросу. Для требуемого итога была использована следующее выражение в ресурсах: Сумма(ВычислитьВыражениеСГруппировкойМассив(“Остаток”, “Валюта”))
где “Валюта” и есть та группировка с которой нужно начать считать итоги. Отчет правильно работал до тех пока была только одна валюта, как только валют стало больше, результат становился не верным и не объяснимым с точки зрения арифметики, соотношение между валютами примерно соблюдалось, но сами цифры отличались например в 2,28 раза. Учитывая, что нужно формировать итоги для данных из левого соединения была сделана попытка решить задачу через связанные наборы данных, но результат был точно таким же.
Буду Вам очень благодарен если подскажите хотя бы идею решения. Спасибо!

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Затрудняюсь однозначно подсказать вам. Я бы попробовал первым делом добавить соединение в запрос или соединение с дополнительным набором данных, собственно как вы и пишете. Далее проверял бы сами данные, которые возвращает запрос. Т.е. в настройках компоновки делаю одну группировку – детальные записи. Анализирую, какой получается результат. Все ли данные корректно выбираются из базы, нет ли задвоений и т.д. После этого добавлять группировки, смотреть, какой результат получается, как отрабатывают выражения для ресурсов. Вот в таком направлении я бы пробовал решать задачу.

Огромное спасибо за видео уроки.С удовольствием посмотрел, очень познавательно. У меня вопрос: “Почему при условном оформлении вычисляемых (и пользовательских) полей выдаётся ошибка “Поле не найдено.”?”. Непонятно,чем отличается вычисляемое (или пользователькое) поле?

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Подобная ошибка может возникать, когда для вычисляемого поля не задается выражение, а только выражение на закладке Ресурсы. Получается, что на уровне детальных записей такое вычисляемое поле не определено, оно существует только на уровне группировки. Поэтому, когда мы пытаемся использовать это поле в детальных записях, то возникает такая ошибка.
Пользовательское поле можно создать самостоятельно и при работе с отчетом в режиме “1С:Предприятие”, а вычисляемое поле может создать только разработчик при создании схемы компоновки данных.

Объясните, пожалуйста: почему нужно накладывать именно на уровне ресурсов все выражения? Не могу понять ключевые различия между описанием функции в вычисляемом поле и на уровне ресурса.

что такое кросс отчет. Смотреть фото что такое кросс отчет. Смотреть картинку что такое кросс отчет. Картинка про что такое кросс отчет. Фото что такое кросс отчет

Добрый день!
Потому что мы хотим рассчитать итоговое значение выражения на уровне группировки, а не в детальных записях. Поэтому обращаемся к закладке Ресурсы в конструкторе схемы компоновки. Если планируем рассчитать значение на уровне детальных записей, то нужно задать выражение на закладке Вычисляемые поля.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *