Как известно, с помощью языка запросов 1С получить уникальный идентификатор объекта ссылочного типа на данный момент нельзя. Но используя возможность СКД обращаться к внешним функциям можно получить строковое представление уникального идентификатора ссылки. Для этого необходимо использовать глобальную функцию XMLСтрока в вычисляемых полях в макете схемы компоновки.
Далее проведем эксперимент по быстродействию получения результата через запрос с последующей обработкой выборки и вариантов с использованием СКД.
Рассмотрим два случая - вывод в табличный документ и формирование текстового документа.
Так же в случае с СКД мы можем создать схему компоновки программно или использовать готовую. Результат работы СКД так же можно обойти в цикле, либо вывести в таблицу значений с последующей обработкой. Для экспериментов будет использоваться платформа 8.3, конфигурация УТ11 (файловая), справочник "КлассификаторБанковРФ", более 4000 элементов.
Схему компоновки и макет можно посмотреть, скачав обработку (ссылка в конце).
По результатам замера производительности видно, что вывод результата в табличный документ происходит быстрее при использовании СКД, причем вариант с программным созданием схемы отрабатывает несколько быстрее.
В тоже время вывод результатов в текстовый документ отрабатывает быстрее для запроса.
Программное создание схемы компоновки отработало быстрее, чем получение макета схемы.
Несмотря на то, изучающие СКД встречаются с этим на первый или второй день, это должно быть в разделе FAQ. Простой пример программного вывода отчета на компоновке, использующий настройки по умолчанию.
В статье описан пример создания отчета с использованием системы компоновки данных 1С:Предприятия 8.1. Схема компоновки данных - это описание отчета, при помощи которого платформа позволит вводить настройки и получать результат.
Рассмотрим пример создания отчета по взаиморасчетам с работниками (ЗУП 2.5):
1. Файл - Новый - Внешний отчет Для открытия и создания схемы компоновки нажмем кнопку "Открыть схему компоновки данных".
2. Система предложит создать новую схему компоновки данных. Схема компоновки данных является макетом, и будет записана в макеты. Укажите название схемы и нажмите "Готово"
Вкладка редактирования наборов данных. Здесь можно создавать или редактировать источники данных, в моем примере в качестве источника данных может выступать только текущая информационная база и он будет создаваться автоматически при добавлении первого набора данных.
В качестве набора данных может выступать: Запрос - в этом случае получение данных описывается с помощью терминов языка запросов "1С: Предприятия 8.1" + инструкции специального расширения языка запросов для системы компоновки данных; Объект - произвольный источник данных - например, таблица значений, сформированная и заполненная программно; Объединение предназначено для описания наборов данных, входящих в объединение. Механизм объединения аналогичен объединению запросов средствами языка запросов;
4. Для нашего примера получим данные при помощи запроса, поэтому добавим набор данных - запрос. Для этого нажмем на кнопку "Добавить набор данных", которая расположена в командной панели на закладке "Наборы данных". В открывшемся меню выберем пункт "Добавить набор данных - запрос":
5. Будет создан набор данных. Теперь создадим запрос при помощи конструктора запросов, нажмем кнопку "Конструктор запроса"
6. Отчет, который мы создаем, будет получать данные из регистра накопления "ВзаиморасчетыСРаботникамиОрганизаций". Нас интересуют остатки, и текст запроса следующий:
7. После закрытия конструктора запроса, конструктор схемы компановки Обратите внимание, что доступные поля для текущего набора данных будут сформированы системой автоматически только в том случае, если в конструкторе схемы компоновки данных стоит флаг Автозаполнение. Источником информации служит текст запроса. Система заполнила следующие поля:
Поле - имя поля набора данных, для которого делается описание. В нашем случае определяется именем поля в тексте запроса. Обратите внимание, по этому имени к полю нельзя будет обратиться в дальнейшем. Редактированию не подлежит Путь - имя поля набора данных, под которым можно будет обратиться к полю в других разделах конструктора схемы компоновки данных. Может быть назначено разработчиком конфигурации самостоятельно Заголовок - имя поля набора данных, под которым поле будет фигурировать в настройках в режиме 1С:Предприятие, а также в названии данного поля в шапке самого отчета. Может быть назначено разработчиком конфигурации самостоятельно. В качестве примера изменим Заголовок у поля Физлицо на Сотрудник Роль - показывает, каким образом иоле будет использовано в дальнейшем в системе компоновки данных. Информация о том, что иоле является измерением, используется при расчете итогов по полям остатка.
8. Далее необходимо указать ресурсы. Ресурсы - это поля набора данных, по которым будет происходить агрегация значений.
Необходимо рассчитать суммы по полю "СуммаВзаиморасчетовОстаток". Найдем это поле в списке доступных полей и дважды щелкнем по нему. В правом табличном поле появится строка, содержащая формулу для расчета итога по полю "СуммаВзаиморасчетовОстаток". В нашем случае это "Сумма(СуммаВзаиморасчетовОстаток)". Эта формула означает, что для итоговых записей отчета значение поля "СуммаВзаиморасчетовОстаток" будет вычисляться как сумма поля "СуммаВзаиморасчетовОстаток" для всех строк участвующих в данной итоговой записи.
9. Этих введеных данных, нам хватит для вывода простого отчета. Перейдем на вкладку "Настройки" и откроем "Конструктор настроек"
10. Так как пока мы создаем простой отчет, выберем "Список", нажимая далее укажем выводимые поля:
11. После нажатия на "ОК" в конструкторе настроек, получаем следующее:
12. Закрываем схему компановки, сохраняем отчет в файл и запускаем в режиме 1С:Предприятия 8.1. Получаем: