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

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

В платформе «1С:Предприятие» за построение отчётов отвечает механизм под названием «Система компоновки данных» (сокращенно СКД). В этой статье мы постараемся дать краткое описание идеи и архитектуры механизма СКД и его возможностей.


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

Немного истории

В самой первой версии платформы «1С:Предприятие 8», версии 8.0, отчеты делались так:
  1. Писался один или несколько запросов на языке запросов 1С (SQL-подобный язык, подробнее о нем ниже).
  2. Писался код, который переносил результаты выполненных запросов в табличный документ или в диаграмму. Код также мог делать работу, которую в запросе сделать невозможно – например, вычислял значения, используя встроенный язык 1С.
Подход прямолинейный, но не самый удобный – визуальных настроек минимум, все приходится программировать «врукопашную». А один из козырей на тот момент совсем новой платформы «1С:Предприятие 8» - это минимизация в прикладном решении объема кода, который нужно писать вручную, в частности, за счет визуального проектирования. Логично было бы пойти этим же путем и в механизме построения отчетов. Что и было сделано путем разработки нового механизма - Системы Компоновки Данных.

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

Постановка задачи

Задача перед командой разработки стояла такая – сделать систему создания отчетов, основанную не на алгоритмическом (т.е. через написание кода), а на декларативном подходе к созданию отчетов. И мы считаем, что задачу успешно решили. По нашему опыту, около 80% требуемой отчетности может быть реализована с помощью СКД без единой строчки кода (за исключением написания формул вычисляемых полей), по большей части - через визуальные настройки.
Разработка первой версии СКД заняла около 5 человеко-лет.

Два языка

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

Язык запросов

Язык запросов основан на SQL и легко осваивается знающими SQL. Пример запроса:

Легко видеть аналоги стандартных для SQL-запроса секций - SELECT, FROM, GROUP BY, ORDER BY.

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

  • Обращение к полям через точку. Если поля какой-либо таблицы имеют ссылочный тип (хранят ссылки на объекты другой таблицы), разработчик может в тексте запроса ссылаться на них через ".", при этом количество уровней вложенности таких ссылок система не ограничивает (например, ЗаказКлиента.Соглашение.Организация.Телефон).
  • Многомерное и многоуровневое формирование итогов. Итоги и подитоги формируются с учетом группировки и иерархии, обход уровней может выполняться в произвольном порядке с подведением подитогов, обеспечивается корректное построение итогов по временным измерениям.
  • Поддержка виртуальных таблиц. Виртуальные таблицы, предоставляемые системой, позволяют получить практически готовые данные для большинства прикладных задач без необходимости составления сложных запросов. Так, виртуальная таблица может предоставить данные по остаткам товаров в разрезе периодов на какой-то момент времени. При этом виртуальные таблицы максимально используют хранимую информацию, например, ранее рассчитанные итоги и т.д.
  • Временные таблицы. Язык запросов позволяет использовать в запросах временные таблицы. С их помощью можно повысить производительность запросов, в некоторых случаях снизить количество блокировок и сделать текст запроса более легким для восприятия.
  • Пакетные запросы. Для более удобной работы с временными таблицами в языке запросов поддерживается работа с пакетными запросами - таким образом, создание временной таблицы и ее использование помещаются в один запрос. Пакетный запрос представляет собой последовательность запросов, разделенных точкой с запятой (";"). Запросы в пакете исполняются один за другим. Результатом выполнения пакетного запроса, в зависимости от используемого метода, будет являться либо результат, возвращаемый последним запросом пакета, либо массив результатов всех запросов пакета в той последовательности, в которой следуют запросы в пакете.
  • Получение представлений ссылочных полей. Каждая объектная таблица (в которой хранится справочник или документ) имеет виртуальное поле - «Представление». Это поле содержит текстовое представление объекта и облегчает работу создателя отчетов. Так, для документа это поле содержит всю ключевую информацию - название типа документа, его номер и дату (например, «Продажа 000000003 от 06.07.2017 17:49:14»), избавляя разработчика от написания вычисляемого поля.
  • и др.
Механизм запросов автоматически модифицирует запрос с учетом ролей , к которым принадлежит пользователь, от имени которого выполняется запрос (т.е. пользователь увидит только те данные, которые имеет право видеть) и функциональных опций (т.е. в соответствии с настроенной в прикладном решении функциональностью).

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

Например:

  • ВЫБРАТЬ. В этом предложении описываются поля, которые пользователь сможет выбирать для вывода. После данного ключевого слова через запятую перечисляются псевдонимы полей из основного списка выборки запроса, которые будут доступными для настройки. Пример: {ВЫБРАТЬ Номенклатура, Склад}
  • ГДЕ. Описываются поля, на которые пользователь сможет накладывать отбор. В данном предложении используются поля таблиц. Использование псевдонимов полей списка выборки недопустимо. Каждая часть объединения может содержать собственный элемент ГДЕ. Примеры: {ГДЕ Номенклатура.*, Склад }, {ГДЕ Документ.Дата >= &ДатаНачала, Документ.Дата <= &ДатаКонца}
  • и др.
Пример использования расширений:

Язык выражений компоновки данных

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

Пример:

Процесс создания отчета на СКД

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

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

Итогом запуска конструктора запросов будет текст запроса (на языке запросов «1С:Предприятия»). Этот текст можно при необходимости скорректировать вручную:

Наборов данных в схеме компоновки данных может быть несколько, наборы данных могут быть связаны в макете произвольным образом, могут быть добавлены вычисляемые поля, заданы параметры отчета и т.п. Стоит упомянуть интересную особенность работы механизма запросов в 1С:Предприятии. Запросы в конечном итоге транслируются в диалект SQL, специфичный для СУБД, с которой непосредственно работает приложение. Мы вообще стараемся задействовать возможности серверов СУБД по максимуму (нас ограничивает то, что мы используем только те возможности, которые есть одновременно во всех поддерживаемых платформой «1С:Предприятие» СУБД – MS SQL, Oracle, IBM DB2, PostgreSQL). Таким образом, на уровне запроса в вычисляемых полях мы можем использовать только те функции, которые транслируются в SQL.

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


Добавление пользовательских полей

В отчет можно добавить произвольное количество таблиц и диаграмм:


Дизайнер отчетов


Отчет во время выполнения

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

Коротко описать процесс построения и формирования отчета можно так:

  • Разработчик в design time с помощью дизайнера (или в runtime с помощью кода) определяет схему компоновки данных:
    • Текст запроса/запросов
    • Описание вычисляемых полей
    • Связи между запросами (если их несколько)
    • Параметры отчета
    • Настройки по умолчанию
    • И т.д.
  • Вышеописанные настройки сохраняются в макете
  • Пользователь открывает отчет
    • Возможно, делает дополнительные настройки (например, меняет значения параметров)
    • Нажимает кнопку «Сформировать»
  • Настройки пользователя применяются к схеме компоновки данных, определенной разработчиком.
  • Формируется промежуточный макет компоновки данных, содержащий в себе инструкции, откуда получать данные. В частности, корректируются запросы, заданные в макете. Так, из запроса удаляются поля, которые не используются в отчете (это делается с целью минимизировать объем получаемых данных). В запрос добавляются все поля, участвующие в формулах вычисляемых полей.
  • В дело включается процессор компоновки данных. Процессор компоновки выполняет запросы, осуществляет связь наборов данных, рассчитывает значения вычисляемых полей и ресурсов, выполняет группировку. Словом, делает все расчеты, которые не были выполнены на уровне СУБД.
  • Процессор вывода данных запускает запрос на исполнение и выводит полученные данные в табличный документ, диаграмму и т.п.


Процесс формирования отчета механизмом СКД

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

Пользовательские настройки

Весь инструментарий СКД доступен как разработчику, так и конечному пользователю. Но практика показала, что конечного пользователя часто пугает обилие возможностей инструмента. Тем более что в большинстве случаев вся мощь настроек конечному пользователю и не нужна – ему достаточно иметь быстрый доступ к настройке одного-двух параметров отчета (например, периода и контрагента). Начиная с определенной версии платформы у разработчика отчета появилась возможность отметить, какие настройки отчета доступны пользователю. Делается это с помощью флажка «Включать в пользовательские настройки». Также у настроек отчета появился флаг «Режим отображения», принимающий одно из трех значений:
  • Быстрый доступ. Настройка будет выведена непосредственно в верхнюю часть окна отчета.
  • Обычный. Настройка будет доступна через кнопку «Настройки».
  • Недоступный. Настройка будет недоступна конечному пользователю.


Режим отображения настройки в design time


Отображение настройки в режиме «Быстрый доступ» во время выполнения (под кнопкой «Сформировать»)

Планы развития

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

СКУД включает:

Стандартизация

  • В России действует государственный стандарт на СКУД: ГОСТ Р 51241-98 ("Средства и системы контроля и управления доступом. Классификация. Общие технические требования. Методы испытаний.").
  • В индустрии существуют устоявшиеся стандартные способы решения тех или иных задач. К ним относится использование EIA-485 (RS-485) для передачи данных между контроллерами и программным обеспечением, использование протоколов Wiegand или 1-Wire для передачи данных от УВИП к контроллеру СКУД.

Место СКУД в интеллектуальном здании

СКУД может стыковаться с другими системами автоматизации, например

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

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

Ссылки

  • ГОСТ Р 51241-98 ("Средства и системы контроля и управления доступом. Классификация. Общие технические требования. Методы испытаний.")

Wikimedia Foundation . 2010 .

Смотреть что такое "СКД" в других словарях:

    СКД - социально культурная деятельность СКД синтетический каучук дивиниловый Словарь: С. Фадеев. Словарь сокращений современного русского языка. С. Пб.: Политехника, 1997. 527 с. СКД сальдо конечное дебетовое бухг. фин …

    СКД РФ - СКД СКД РФ Союз концертных деятелей Российской Федерации муз., организация, РФ СКД Источник: http://news.mail.ru/news.html?396588 … Словарь сокращений и аббревиатур

    СКД-Л - синтетический каучук дивинильный на литиевом катализаторе нефт., хим. Источник: http://fs.rts.ru/content/annualreports/517/3/godovoy otchet 2009 eng.pdf … Словарь сокращений и аббревиатур

    СКД-Н - синтетический каучук дивиниловый на неодимовом катализаторе Источник: http://www.avias.com/news/2004/06/16/79836.html … Словарь сокращений и аббревиатур

    СКД - Аббр.: Симуляция Кипучей Деятельности. Так называют кафедру Социально Культурной Деятельности в Гуманитарном университете профсоюзов (ул. Фучика, 15) … Словарь Петербуржца

    СКД - самоходный комбайн двухбарабанный свеклоуборочный комбайн дисковый сверхкритическое давление синтетический каучук дивиниловый система контроля допусков система контроля доступа Совет крестьянских депутатов Союз конституционных демократов (РФ)… … Словарь сокращений русского языка

    СКД Полное название Футбольный клуб СКД Самара Основан 1989? Соревнован … Википедия

    СКД Полное название Футбольный клуб СКД Самара Основан 1989? Соревнование вторая лига, зона «Центр» 1995 15 … Википедия

    РНМЦНТ и СКД - РНМЦ НТ и СКД Республиканский научно методический центр народного творчества и социально культурной деятельности имени А. Е. Кулаковского РНМЦНТ и СКД им. А.Е. Кулаковского г. Якутск, РС(Я) http://rnmc.ykt.ru/​ г. Якутск, образование и… … Словарь сокращений и аббревиатур

    РНМЦ НТ и СКД - РНМЦНТ и СКД РНМЦ НТ и СКД Республиканский научно методический центр народного творчества и социально культурной деятельности имени А. Е. Кулаковского РНМЦНТ и СКД им. А.Е. Кулаковского г. Якутск, РС(Я) http://rnmc.ykt.ru/​ г. Якутск,… … Словарь сокращений и аббревиатур

Книги

  • , Деев В.И. Категория: Учебники для ВУЗов Серия: Университеты России Издатель: ЮРАЙТ , Производитель: ЮРАЙТ ,
  • Ядерные реакторы с водой сверхкритического давления (основы теплового расчета). Учебное пособие для вузов , Деев В.И. , Рассмотрены термодинамические циклы и тепловые схемы атомных энергоблоков с ядерными реакторами 4-го поколения ВВЭР СКД. Приводятся основные характеристики и конструкции данного типа… Категория: Учебники: доп. пособия Серия: Университеты России Издатель:

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

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

Создаем отчет и настраиваем характеристики

Создадим простой отчет. В нем будет один набор данных со следующим запросом:

ТекстЗапроса = " ВЫБРАТЬ | Организации. Ссылка КАК Организация, | Организации. ИНН, | Организации. КПП |ИЗ Справочник" ;

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

На скриншоте ниже представлен вывод отчета с текущими настройками.

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

  1. План видов характеристик "СвойстваОбъектов".
  2. Регистр сведений "ЗначенияСвойствОбъектов".

Графически связь между объектом информационной базы и его характеристиками можно изобразить по такой схеме:

Опишем схему подробнее. В регистре сведений "ЗначенияСвойствОбъектов" в измерении "Объект" содержится ссылка на элемент информационной базы, для которого сохраняется свойство. В нашем примере это ссылка на элемент справочника "Организации". Все возможные свойства объекта определяются в плане видов характеристик (ПВХ) "СвойстваОбъектов". Значение характеристики, сохраняемое в регистре сведений, зависиот от доступных типов данных для элемента плана видов характеристик, записанного в измерение "Свойство". Это описание должно дать лишь общее представление о механизме доп. свойств. На практике он сложнее.

Теперь перейдем к настройке характеристик в схеме компоновки данных. Для этого запустим конструктор запроса и перейдем на вкладку "Характеристики". Здесь нужно добавить поле связи объекта информационной базы с таблицами свойств и значений свойств. Ранее мы рассматривали схему связи между объектами конфигурации для хранения доп. свойств/характеристик. В соответствии с этой информацией настройка будет следюущей:

После этого запрос набора данных дополнится инструкциями получения характеристик объектов.

" ВЫБРАТЬ | Организации. Ссылка КАК Организация, | Организации. ИНН, | Организации. КПП |ИЗ | Справочник. Организации КАК Организации | // Доп. инструкции для получения характеристик |{ХАРАКТЕРИСТИКИ | ТИП(Справочник. Организации) | ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик. СвойстваОбъектов | ПОЛЕКЛЮЧА Ссылка | ПОЛЕИМЕНИ Наименование | ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения | ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений. ЗначенияСвойствОбъектов | ПОЛЕОБЪЕКТА Объект | ПОЛЕВИДА Свойство | ПОЛЕЗНАЧЕНИЯ Значение } "

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

Но если есть необходимость, мы можем добавить поля характеристик, например, в отбор перед его открытием. Рассмотрим небольшой пример.

Программная работа с характеристиками

При открытии формы отчета выполним следующим программный код:

ТекущиеНастройки = КомпоновщикНастроек. Настройки; КоллекцияОтборов = ТекущиеНастройки. Отбор. Элементы; // Добавляем отбор по доп. реквизиту номенклатуры "Основной склад" . [ Основной склад] // Добавляем отбор по доп. реквизиту номенклатуры "Страна размещения" НовЭл = КоллекцияОтборов. Добавить(Тип(" ЭлементОтбораКомпоновкиДанных " ) ) ; НовЭл. ВидСравнения = ВидСравненияКомпоновкиДанных. Равно; НовЭл. ЛевоеЗначение =. [ Страна размещения] " ) ; НовЭл. Использование = Ложь ; // Добавляем отбор по доп. реквизиту номенклатуры "Связанный контрагент" НовЭл = КоллекцияОтборов. Добавить(Тип(" ЭлементОтбораКомпоновкиДанных " ) ) ; НовЭл. ВидСравнения = ВидСравненияКомпоновкиДанных. Равно; НовЭл. ЛевоеЗначение = Новый ПолеКомпоновкиДанных(" Организация. [ Связанный контрагент] " ) ; НовЭл. Использование = Ложь ;

Тогда если мы посмотрим в отбор отчета в режиме 1С:Предприятие, то увидим следующиую картину:

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

Новый ПолеКомпоновкиДанных(" Организация. [ Связанный контрагент] " ) ,

а именно на текст "[Связанный контрагент]". Если мы напишем вот так:

Новый ПолеКомпоновкиДанных(" Организация. СвязанныйКонтрагент " ) ,

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

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

Новый ПолеКомпоновкиДанных(" . " )

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

Вывод

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

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

Понравилось? Лайкни нас на Facebook