Где найти и как использовать дополнительные свойства настроек СКД, невидимые в конструкторе?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Что такое "блок-схемы" в контексте СКД?

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

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

Поиск "участков схемы" и свойство ДополнительныеСвойства

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

Рассмотрим подробнее это свойство:

  1. Объект: НастройкиКомпоновкиДанных (DataCompositionSettings). Это объект, который хранит все настройки компоновки данных, такие как группировки, отборы, порядок, условное оформление и т.д.
  2. Свойство: ДополнительныеСвойства (AdditionalProperties).
  3. Использование: Это свойство имеет тип Структура и предназначено для хранения произвольных значений, которые мы хотим связать с текущими настройками компоновки данных.
  4. Доступность: Критически важно понимать, что это свойство доступно только для чтения в контексте самого объекта НастройкиКомпоновкиДанных и не редактируется напрямую в конструкторе СКД. Мы можем программно устанавливать значения в эту структуру.
  5. Назначение: Оно используется для передачи дополнительных данных или параметров в объект отчета, которые не являются стандартными параметрами СКД, но могут быть важны для логики его формирования или дальнейшей обработки результата.

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

Пример программной установки ДополнительныхСвойств

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


// Получаем объект компоновщика настроек или настроек компоновки данных.
// Например, из формы отчета:
// КомпоновщикНастроек = ОтчетОбъект.КомпоновщикНастроек;
// Настройки = КомпоновщикНастроек.Настройки;

// Или если у вас есть схема компоновки данных и вы формируете настройки программно:
СхемаКомпоновкиДанных = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

// ДополнительныеСвойства всегда возвращает Структуру, возможно пустую.
// Мы можем добавлять в нее элементы.
Если Настройки.ДополнительныеСвойства <> Неопределено Тогда
    Настройки.ДополнительныеСвойства.Вставить("ИдентификаторЗадания", "UUID_ABC123");
    Настройки.ДополнительныеСвойства.Вставить("ТребуетсяДетализация", Истина);
    Настройки.ДополнительныеСвойства.Вставить("ДатаФормирования", ТекущаяДата());
    Сообщить("Дополнительные свойства успешно установлены.");
Иначе
    Сообщить("Ошибка: Свойство ДополнительныеСвойства недоступно или неопределено.");
КонецЕсли;

// После установки свойств, эти настройки передаются в компоновщик
// и далее в процесс формирования отчета.
// КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

Пример чтения ДополнительныхСвойств

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


// В модуле объекта отчета или в расширении СКД,
// где доступен объект НастройкиКомпоновкиДанных.

// Например, в обработчике события ПриКомпоновкеРезультата для отчета:
// Параметры = Объект.КомпоновщикНастроек.Настройки.ДополнительныеСвойства;

// Или если мы работаем с полученными настройками из внешнего источника:
НастройкиОтчета = ПолучитьНастройкиИзХранилища(); // Пример функции получения настроек

Если НастройкиОтчета.ДополнительныеСвойства <> Неопределено Тогда
    // Проверяем наличие конкретного свойства
    Если НастройкиОтчета.ДополнительныеСвойства.Свойство("ИдентификаторЗадания") Тогда
        Идентификатор = НастройкиОтчета.ДополнительныеСвойства.ИдентификаторЗадания;
        Сообщить("Получен идентификатор задания: " + Идентификатор);
    КонецЕсли;

    Если НастройкиОтчета.ДополнительныеСвойства.Свойство("ТребуетсяДетализация") Тогда
        Детализация = НастройкиОтчета.ДополнительныеСвойства.ТребуетсяДетализация;
        Если Детализация Тогда
            Сообщить("Для отчета требуется детализация.");
        КонецЕсли;
    КонецЕсли;
Иначе
    Сообщить("Дополнительные свойства в настройках не найдены.");
КонецЕсли;

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

Управление сохраненными вариантами настроек и удаление старых схем

Один из участников форума упомянул, что "конструктор не удаляет из схемы старые варианты". Это замечание касается управления пользовательскими вариантами отчетов. Давайте разберем этот аспект:

  1. Сохраненные варианты: В режиме "1С:Предприятие" пользователи могут сохранять свои варианты настроек отчетов. Эти варианты обычно хранятся в специальном справочнике (например, "Варианты отчетов" или "Сохраненные настройки") или в личных настройках пользователя.
  2. Удаление вариантов: Если речь идет о пользовательских вариантах, то их удаление или изменение происходит через интерфейс "1С:Предприятия" (например, через кнопку "Все действия" -> "Изменить вариант" или "Удалить вариант") или через соответствующий справочник, где они хранятся. Конструктор СКД, который мы видим в режиме "Конфигуратор", работает с базовой схемой отчета, а не с сохраненными пользовательскими вариантами.
  3. Программное управление: Если в нетиповой конфигурации нет стандартного механизма управления вариантами, или требуется автоматизированное удаление/изменение, это может потребовать программного подхода. Мы можем программно обращаться к хранилищам настроек (например, ХранилищеВариантовОтчетов) и манипулировать ими.
  4. Свойство ОграничениеИспользования: Для отдельных полей, параметров или ресурсов в схеме СКД существует свойство ОграничениеИспользования. Оно позволяет ограничить их видимость или использование в настройках компоновки, но это не приводит к физическому удалению из схемы. Это полезно для контроля над тем, что пользователь может изменять или видеть в отчете.

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

Механизм дополнительных характеристик (реквизитов)

Помимо свойства ДополнительныеСвойства для настроек СКД, в 1С существует более общий механизм "дополнительных характеристик" или "дополнительных реквизитов". Этот механизм позволяет пользователям в режиме "1С:Предприятие" без изменения конфигурации создавать новые свойства для объектов информационной базы (например, для элементов справочников "Номенклатура", "Контрагенты" или "ФизическиеЛица").

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

  1. В наборах данных: Если набор данных обращается к объекту, у которого есть дополнительные реквизиты, эти реквизиты могут автоматически появляться в списке доступных полей.
  2. Для отборов: Мы можем использовать дополнительные реквизиты для установки отборов в отчете.
  3. Для вывода: Выводить значения дополнительных реквизитов в отчет.
  4. Для условного оформления: Применять условное оформление в зависимости от значений дополнительных реквизитов.

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

Отладка сложных схем СКД

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

  1. Загружать схемы: Загружать схемы компоновки данных из файлов или из конфигурации.
  2. Редактировать настройки: Редактировать настройки компоновки данных и параметры.
  3. Формировать отчеты: Формировать отчеты и просматривать результат, а также отлаживать запросы и выражения.
  4. Сериализация и десериализация: Одним из очень полезных свойств консоли является возможность сериализовать настройки компоновки данных (или даже всю схему) в XML-строку, а затем загрузить ее обратно. Это помогает нам понять, в каком состоянии находится схема или ее настройки в процессе выполнения программы. Мы можем программно получить настройки, сериализовать их в XML, сохранить в файл или буфер обмена, а затем загрузить этот XML в консоль СКД для анализа и проверки.

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

Таким образом, "блок-схемы" в конструкторе СКД — это, скорее всего, недопонимание. Мы работаем с декларативным описанием, а не с графическим алгоритмом. Если мы ищем способ передать дополнительные данные или управлять поведением отчета вне стандартных параметров, свойство ДополнительныеСвойства объекта НастройкиКомпоновкиДанных является ключевым инструментом для программного решения таких задач, а консоль СКД — незаменимым помощником при отладке.

← На главную