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

Концепция

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

Пользователь может сделать себе отчет по товарам:

по складам:

по складам, с товарами внутри:

по товарам, со складами внутри:

можно даже и так:

или даже так:

Правда, последние два варианта потребуют от разработчика чуть больше усилий.

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

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

Другой пример такого рода

Все, что нужно для старта

Что вам потребуется, чтобы создать отчет на основе СКД по шагам.

  • В окне работы с СКД, на первой закладке с названием «Наборы данных» добавьте набор данных типа «Запрос» и напишите запрос без группировок и сортировок (система компоновки данных все это «умеет» сама). Тут можно будет воспользоваться конструктором запросов

  • Перейдите на закладку «Ресурсы» и скажите системе, что числовое поле «Сумма» есть ни что иное, как ресурс. Надо сказать, что тут разработчики платформы явно поленились. Можно было бы автоматом определять ресурсы по числовому типу, и тем самым избавить нас от излишних действий.

  • На закладке «Настройки» добавьте новую группировку. Например, «Товар». Можно добавить и связку полей группировок, например, «Товар, Склад». Для этого нужно сначала добавить одиночную группировку, а потом ее отредактировать. Я понимаю, что это выглядит немного сумбурно, но дело обстоит именно так. Вы не можете сразу ввести связку, платформа вам не даст.

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

  • Если мы хотим дать пользователю возможность настраивать отчет, тогда надо нажать вторую справа кнопку в командной панели (даже не буду писать, как ее назвали)

Вот теперь отчет на основе СКД готов, можно запускать и, при желании, менять настройки. Остался один нюанс, связанный с датами. Для большинства отчетов требуется так или иначе задавать период или момент времени. То, как реализовали задание периода, может легко вас запутать. У пользователя есть доступ к отборам. И там, в разделе «Параметры» есть «Начало периода» и «Конец периода». Мы их, кстати, не добавляли в явном виде. Но, так как мы построили запрос к виртуальной таблице регистра накопления, система «поняла», что тут нужен период и нужны дата начала и конца. Вот только работать такие «отборы» не будут. Потому что пользовательские отборы накладываются после исполнения запроса, а нам нужно сделать это до.

В Конфигураторе идем на закладку «Параметры» и делаем то, что изображено на картинке

И это не все. На закладке настройки, внизу выбираем закладку «Параметры», нажимаем самую нижнюю кнопку боковой панели (опять не буду говорить, как ее назвали), устаналиваем галку «Включать в пользовательские настройки».

И только после этих манипуляций пользователь сможет задавать период

Заключение

Я показал вам только самое необходимое — то, что позволяет «создавать минимально жизнеспособные отчеты» и не попадать в «ловушки от разработчиков». Это уже работающий инструмент. Более того, в большом количестве случаев вам будет его вполне достаточно.

В заключение хотел бы отметить, что этот инструмент, несмотря на отдельные «казусы», очень неплох. Но жизнь не стоит на месте. Сегодня мы можем описать схему данных и дать пользователю развлекаться не с кнопочками и прочими элементами GUI. Теперь пользователь может задавать вопросы на естественном языке и получать соответствующий вопросу результат из базы данных. И все это благодаря большим языковым моделям.

Завершая, порекомендую открытый урок по видам тестирования в 1С, который пройдет 20 июля. На нем участники:

  • Изучат концепцию TDD и BDD.

  • Напишут тесты, используя фреймворк Vanessa automation.

  • Научатся запускать тесты через консольное приложение.

Записаться можно на странице курса «Архитектор 1С».

Комментарии (1)


  1. Pinkerton42
    15.07.2023 07:28

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