Мы довольно подробно рассмотрели настройки отчетов, реализованных на базе СКД. Теперь разберем более тонкие и детальные настройки вариантов отчета. Окно «продвинутых» настроек варианта отчета вызывается по команде «Еще» - «Прочее» - «Изменить вариант отчета».

Окно изменения варианта отчета разделено на две части:

1. Структура отчета.

2. Настройки отчета.


Раздел структуры варианта отчета аналогичен вкладке «Структура» стандартных настроек отчета. Назначение и настройка группировок подробно рассмотрена в ч. 1 статьи.

Таблица структуры варианта отчета, кроме непосредственно колонки с группировками, содержит несколько дополнительных колонок:

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

Раздел настроек состоит из следующих вкладок:

1. Параметры. Содержит параметры СКД, доступные пользователю.

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


Таблица параметров представлена в формате «Параметр»-«Значение». При необходимости можно менять значения параметров. Нажатие на кнопку «Свойства элемента пользовательских настроек» открывает пользовательские настройки элемента.


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

Свойства элемента пользовательских настроек также имеют группируемые поля, поля, отборы и элементы условного оформления.

2. Пользовательские поля. Содержит поля, которые формирует сам пользователь на основании данных, выбираемых отчетом.


Пользователь может добавить два вида полей:

  • Новое поле выбор…
  • Новое поле выражение…

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


Например, вычислим оценку количества продаж. Будем считать, что, если продано меньше 10 единиц товара, продали мало, а если больше 10 единиц - много. Для этого зададим 2 значения вычисляемого поля: первое будет с отбором «Количество товаров Меньше или равно "10"», второе с отбором «Количество товаров Больше "10"».

Поля выражения позволяют вычислять значение используя произвольные алгоритмы. В них могут использоваться функции языка запросов и встроенного языка программирования 1С. Окно редактирования поля выражения содержит два поля для выражений детальных и итоговых записей. Итоговые записи - это группировки, настроенные в области «Структура отчета», в них необходимо использовать агрегатные функции («Сумма», «Минимум», «Максимум», «Количество»).

Например, вычислим средний процент скидки. Средний процент скидки рассчитывается по формуле: [Сумма продаж без скидки] - [Сумма продаж со скидкой] / [Сумма продаж без скидки]. Необходимо помнить, что сумма продаж без скидки может быть нулевой, поэтому используем оператор ВЫБОР для проверки. Получим следующие выражения:

· Для детальных записей:

Выбор

Когда [Сумма продаж без скидки] = 0

Тогда 0

Иначе [Сумма продаж без скидки] - [Сумма продаж со скидкой] / [Сумма продаж без скидки]

Конец

· Для итоговых записей:

Выбор

Когда Сумма([Сумма продаж без скидки]) = 0

Тогда 0

Иначе Сумма([Сумма продаж без скидки]) - Сумма([Сумма продаж со скидкой]) / Сумма([Сумма продаж без скидки])

Конец

Как было сказано ранее, в выражении итоговых записей используем агрегатную функцию «Сумма».

3. Группируемые поля. Содержит поля, по которым будет группироваться результат варианта отчета. Группируемые поля настраиваются отдельно для каждой из группировок, но можно задать общие группируемые поля для варианта отчета, если выбрать в дереве структуры корень «Отчет». Можно добавить поле из результата отчета, пользовательское поле или выбрать авто поле, тогда система подберет поля автоматически. Также данная вкладка позволяет изменять порядок следования группируемых полей.


4. Поля. Содержит поля, которые будут выведены в результат варианта отчета. Поля настраиваются отдельно для каждой из группировок, но можно задать общие поля для варианта отчета, если выбрать в дереве структуры корень «Отчет». Можно добавить поле из результата отчета, пользовательское поле или выбрать авто поле, тогда система подберет поля автоматически. Также данная вкладка позволяет изменять порядок следования полей.

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

  • Авто - система располагает поля автоматически;
  • Горизонтально - поля располагаются горизонтально;
  • Вертикально - поля располагаются вертикально;
  • В отдельной колонке - поля располагаются в разных колонках;
  • Вместе - поля располагаются в одной колонке.


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


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


7. Условное оформление. Содержит элементы условного оформления, используемые в варианте отчета. Настройка условного оформления была подробно рассмотрена в части 1 данной статьи. Условное оформление настраивается отдельно для каждой из группировок, но можно задать общие элементы условного оформления для варианта отчета, если выбрать в дереве структуры корень «Отчет».


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


В заключение хотелось бы отметить, что настройки отчета можно не только сохранять в качестве варианта отчета, но и выгружать в файл (меню «Еще» - «Сохранить настройки»). Для загрузки необходимо выбрать «Загрузить настройки» и выбрать сохраненный файл. Таким образом, мы можем передавать настройки варианта отчета между различными базами, имеющими одинаковую конфигурацию.


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

Грамотное использование схемы компоновки данных (СКД) позволяет:

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

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

Что такое вычисляемое поле

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

Дело в том, что СКД – это нечто большее, нежели просто отображение результата выполнения запроса и это прекрасно видно из формы создания схемы (Рис.1).

Вычисляемые поля позволяют выполнять определенные действия со сформированным набором данных:

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

Давайте по этому списку и пойдем.

Массив значений в одной ячейке

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


таким образом, мы в нашей схеме создали дополнительное расчетное поле;


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

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

  1. РазделительЭлементов – указывает, какой символ будет отделять один элемент массива или одну строку таблицы значений от другого (в нашем случае мы опустили этот параметр и по умолчанию был назначен перенос строки);
  2. РазделительКолонок – символ, используемый для разделения колонок таблицы значений (по умолчанию используется точка с запятой).

Обращение к экспортным функциям общего модуля

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

Несколько важных моментов:

  • Функция обязательно должна быть экспортной;
  • Если функция расположена в общем модуле с установленным признаком «Глобальный», её вызов осуществляется непосредственно по имени, в противном случае вызов функции должен происходить по схеме «Имя общего модуля». «Имя вызываемой функции».

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


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

Выражения языка компоновки

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

  1. Рассчитать среднюю стоимость номенклатуры;
  2. Всевозможные проценты;
  3. Расчеты среднего заработка и т.д.

Во избежание проблем, в этих случаях желательно в вычисляемое поле ввести проверку на деление на 0.

Сделать это можно с помощью конструкции «Выбор Когда ….Тогда… Иначе… Конец».

В конце несколько слов о достаточно новой функции ВычислитьВыражение(). С её помощью, в частности можно вычислять отклонения в стоимости между текущей и предыдущей строкой, накопительный остаток и т.д.

Допустим, получить СуммуДокумента из предыдущей строки нашего запроса можно указав в поле «Выражение» значение ВычислитьВыражение(«СуммаДокумента», «ПредыдущаяСумма»).

Войдите на сайт как ученик

Войдите как ученик, чтобы получить доступ к материалам школы

Система компоновки данных 1С 8.3 для начинающих: считаем итоги (ресурсы)

Целью этого урока будет:

  • Написать отчёт, который выводит список продуктов (справочник Еда), их калорийность и вкус.
  • Сделать группировку продуктов по их цвету.
  • Познакомиться с возможностью подведения итогов (ресурсы) и вычисляемыми полями.

Создаём новый отчёт

Как и на предыдущих уроках открываем базу "Гастроном " в конфигураторе и создаём новый отчёт через меню "Файл "->"Новый... ":

Вид документа - внешний отчёт :

В форме настройки отчёта пишем имя "Урок3 " и нажимаем кнопку "Открыть схему компоновки данных ":

Оставляем имя схемы по умолчанию и нажимаем кнопку "Готово ":

Добавляем запрос через конструктор

На закладке "Набор данных " нажимаем зелёный плюсик и выбираем пункт "Добавить набор данных - запрос ":

Вместо того, чтобы писать текст запроса вручную, вновь запускаем конструктор запроса :

На вкладке "Таблицы " перетягиваем таблицу "Еда " из первой колонки во вторую:

Выбираем из таблицы "Еда " поля, которые будем запрашивать. Для этого перетаскиваем поля "Наименование ", "Вкус ", "Цвет " и "Калорийность " из второй колонки в третью:

Получилось вот так:

Нажимаем кнопку "ОК " - текст запроса сформировался автоматически:

Формируем настройки представления отчёта

Переходим на закладку "Настройки " и нажимаем на волшебную палочку , чтобы вызвать конструктор настроек :

Выбираем вид отчета "Список ..." и нажимаем кнопку "Далее ":

Перетаскиваем из левой колонки в правую поля, которые будут отображаться в списке и нажимаем "Далее ":

Перетаскиваем из левой колонки в правую поле "Цвет " - по нему будет происходить группировка строк в отчёте. Нажимаем "ОК ":

А вот и результат работы конструктора. Иерархия нашего отчёта:

  • отчёт в целом
  • группировка "Цвет"
  • детальные записи - строки с названиями еды

Сохраним отчёт (кнопка дискета ) и не закрывая конфигуратора тут же откроем его в режиме пользователя. Получилось вот так:

Меняем порядок колонок

Но давайте поменяем порядок колонок (стрелки вверх-вниз), чтобы он был таким как на рисунке ниже:

Сохраним отчёт и вновь откроем в режиме пользователя:

Отлично, так гораздо лучше.

Подводим итог (сумму) по калорийности

Было бы неплохо выводить итог калорийности продуктов по группам. Чтобы видеть сумму калорийности всех продуктов, скажем, белого или жёлтого цвета. Или узнать общую калорийность вообще всех продуктов в базе.

Для этого существует механизм вычисления ресурсов.

Переходим на вкладку "Ресурсы " и перетаскиваем поле "Калорийность " (мы же по нему собираемся итог подводить) из левой колонки в правую.

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

Сохраняем и формируем отчёт:

У нас появились итоги по каждой из групп и по отчёту в целом.

Подводим итог (среднее) по калорийности

Теперь давайте сделаем так, чтобы в ещё одной колонке выводилась средняя калорийность продуктов по группам и в целом по отчёту.

Трогать уже имеющуюся колонку "Калорийность" нельзя - в неё уже выводится итог-сумма, поэтому заведём ещё одно поле , которое будет являться точной копией поля "Калорийность".

Чтобы завести такое "виртуальное" поле воспользуемся механизмом вычисляемых полей .

Переходим на закладку "Вычисляемые поля " и нажимаем зелёный плюсик:

В колонке "Путь к данным " пишем имя нового поля (слитно , без пробелов ). Пусть оно будет называться "СредняяКалорийность ", а в колонке "Выражение " пишем имя уже существующего поля, на основании которого будет рассчитываться новое поле. Пишем туда "Калорийность ". Колонка "Заголовок " заполнится автоматически.

Мы добавили новое поле ("СредняяКалорийность "), но в отчёте оно само по себе не появится - нужно или вновь вызывать конструктор настроек ("волшебная палочка") или добавить это поле вручную .

Поступим вторым способом. Для этого переходим на закладку "Настройки ", выбираем "Отчет " (ведь мы хотим добавить поле в целом к отчёту), выбираем внизу закладку "Выбранные поля " и перетаскиваем поле "СредняяКалорийность " из левой колонки в правую:

Получилось вот так:

Сохраняем и формируем отчет:

Поле появилось и мы видим, что его значениями являются значения поля "Калорийность". Отлично!

Для этого вновь воспользуемся уже знакомым нам механизмом ресурсов (подведение итогов). Переходим на закладку "Ресурсы " и перетаскиваем поле "СредняяКалорийность " из левой колонки в правую:

При этом в колонке "Выражение " выбираем "Среднее(СредняяКалорийность) ":

Сохраняем и формируем отчёт:

Видим, что по группам, то есть по каждому цвету, и по отчёту в целом совершенно верно посчиталось среднее значение. Но присутствуют лишние записи по отдельным продуктам (не по группам), которые хотелось бы убрать из отчёта.

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

Исправим ошибку. Для этого вернёмся на закладку "Настройки ", выберем "Детальные записи " сначала сверху (шаг 2), а затем "Детальные записи " снизу (шаг 3), перейдём на закладку "Выбранные поля " и увидим в её правой колонке элемент "Авто ".

Элемент "Авто " - это не одно поле. Это несколько полей, которые попадают сюда автоматически на основании вышестоящих настроек.

Чтобы увидеть, что это за поля - нажмём на элемент "Авто " правой кнопкой и выберем пункт "Развернуть ":

Элемент "Авто " раскрылся в следующие поля:

А вот и наше поле "СредняяКалорийность ", которое попало сюда из пункта "Отчет ", когда мы его туда перетаскивали. Просто снимем галку рядом с этим полем, чтобы убрать его вывода.

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

  1. нарастающий итог в группировке;
  2. нарастающий итог в кросс-таблице;
  3. получение предыдущего значения;
  4. вывод ТЧ в одной строке.

1. Получение показателя нарастающим итогом

Получим количество товара нарастающим итогом на уровне группировки. Для этого создаем вычисляемое поле (см. рисунок 1).
На вкладке "Ресурсы" задаем функцию для вычисляемого поля:
ВычислитьВыражение("Сумма(КоличествоОборот)", "Первая", "Текущая")
которая будет суммировать количество товаров от первой записи до текущей (см. рисунок 2).

Если количество товара нарастающим итогом требуется получать на уровне детальных записей, то функцию ВычислитьВыражение задаем для вычисляемого поля на вкладке "Вычисляемые поля" (см. рисунок 3).
В зависимости от уровня получения нарастающего итога, создаем группировку (см. рисунок 4): на уровне ресурсов - группировку по товарам, на уровне ДЗ - группировку детальных записей.
Рисунок 4. Группировки отчета с нарастающим итогом

2. Получение значения показателя из предыдущей строки

Получим курс валюты на дату и предыдущую дату. Для этого создаем вычисляемое поле и в поле выражение пишем следующее выражение (см. рисунок 5):
ВычислитьВыражение("Курс", "Предыдущая", "Предыдущая")
которое будет брать предыдущее значение курса валюты для текущей строки, последний параметр функции ограничивает получение данных.
Так как работаем на уровне детальных записей, сразу переходим к вкладке "Настройки" и создаем группировку - детальные записи.

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

Получим количество товара нарастающим итогом в разрезе периода. Для этого создаем вычисляемое поле (см. рисунок 1). На вкладке "Ресурсы" для вычисляемого поля укажем следующее выражение (см. рисунок 6):
ВычислитьВыражение("Сумма(КоличествоОборот)", "Период", "Первая", "Текущая")
которое на уровне группировки будет вычислять количество товара в промежутке от первой строки до текущей в разрезе периода по каждой номенклатуре.
На вкладке "Настройки" создаем таблицу с группировкой по номенклатуре в строке и группировкой по периоду в колонке (см. рисунок 7).

4. Вывод данных табличной части в одну строку

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

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

Создание отчета в 1С через СКД

Процесс разработки отчета при помощи СКД можно разделить на следующие этапы:

  1. Создание запроса. Запрос можно написать вручную или обойтись без программного кода, воспользовавшись удобным интерфейсом;
  2. Настройка отчета. Выбираются поля, итоги, группировки, параметры, оформление отчета;
  3. После этого нам останется лишь подключить получившийся отчет в конфигурацию любым доступным способом.

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

Рассмотрим пример создания внешнего отчета на СКД:


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

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

Возможности СКД

Бывают ситуации, когда мы сделали отчет, а потом приходит пользователь и просит сделать небольшую доработку. Например, вместо названий номенклатуры выводить артикулы. СКД позволяет такие доработки делать пользователям самостоятельно с помощью кнопки «Еще» - «Изменить вариант…».


Открывшееся окно похоже на окно настройки в отчете в конфигураторе, а также оно имеет схожие функции. Чтобы решить поставленную задачу пользователь должен зайти во вкладку «Поля» и изменить поле «Номенклатура». Это поле для редактирования открывается двойным щелчком, и становится доступна кнопка «Выбрать…».


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


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


Механизм СКД 1С:Предприятие 8.3 также имеет расширенный функционал для разработчиков. При разработке отчета мы пользовались всего 2 вкладками – «Наборы данных» и «Настройки», но в СКД их намного больше. Чтобы пользоваться всеми функциями системы компоновки данных, необходимо представлять, для чего каждая из вкладок нужна:

  1. Наборы данных – здесь перечислены все запросы, участвующие в формировании отчета;
  2. Связи наборов данных – используется для построения связи между различными запросами с первой вкладки;
  3. Вычисляемые поля – перечень добавленных полей не из запроса. Чаще всего используется в случаях, когда на основании значений нескольких полей из запроса нужно получить 1 значение;
  4. Ресурсы. В 1С так называются поля, по которым необходимо знать итоги. Ресурсы поддерживают различные арифметические операции – сумму, количество, максимум и другие;
  5. Параметры. Используются, если для формирования отчета необходимо, чтобы пользователь ввел определенные данные – дату, подразделений или номенклатуру, например;
  6. Макеты. Предназначены для тех случаев, когда пользователи хотят увидеть уникально оформленный отчет. Создать отдельное место для подписей или новую верхнюю часть отчета – все это можно здесь;
  7. Вложенные схемы. Они необходимы, когда ваш отчет должен содержать данные других отчетов;
  8. Настройки. В разделе объявляются выводимые поля, группировки, настраивается внешний вид отчета.


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

Close