Схемы компоновки данных (СКД).
Многие 1С-программисты избегают изучения и использования схемы компоновки данных. Особенно те, которые до этого привыкли пользоваться построителем отчета. В построителе все относительно просто и понятно. И обладает он достаточным функционалом для формирования отчетов. Зачастую это действительно так.
Но тем не менее СКД представляет потрясающие возможности по отборам, группировкам и оформлению выходного макета (а кроме этого массу других нужных, интересных и не очень возможностей). На вход в СКД подаем плоскую таблицу с данными,
которую на выходе с легкостью можно превратить в шедевр отчетного творчества, вообще не прибегая к программированию.
С чего начать?
На самом деле создать в СКД простой отчет очень легко. Можно сколько угодно рисовать скриншоты и показывать, куда нужно нажать, чтобы выполнить то или иное действие. Но лучше понять суть и основную последовательность организации СКД:
Сама по себе СКД – это отдельная сущность, которая (как следует из названия) является некой схемой, указывающей, как связаны данные, настройки и представление этих данных. Созданную единожды схему можно будет сохранить в файле (в формате XML). После это можно подключать ее в различных отчетах и обработках, динамически подгружать в коде, отдавать ее друзьям и т.д.
В свое время в 1с был добавлен (видимо для СКД) новый вид метаданных – внешний отчет. В отличие от внешней обработки,
он имеет реквизит по умолчанию: СхемаКомпоновкиДанных. Чем мы и воспользуемся .
Для начала определимся, какие данные мы хотим увидеть в отчете. Я возьму для примера отчет по регистру продажи. Он есть во многих стандартных конфигурациях. В основе будет лежать простейший запрос :
ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи.Обороты
Откроем конфигуратор и создадим внешний отчет:
Во внешней обработке поле основная схема компоновки данных – и есть наш реквизит. Открываем его и видим изучаемую сущность.
Множество пугающе неизвестных таблиц, полей и закладок. Скажу правду - половина из них действительно лишние и нужны в особо исключительных случаях. Но не будем рассеивать внимание и займемся первым пунктом: Наборами данных. В нашем случае - это простейший запрос, указанный выше.
Добавим новый элемент набора, назвать его можно "УраЭтоМойНаборДанных". Но можно оставить и оригинальное название "НаборДанных1". В нижнее правое окно вставим текст нашего запроса ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи.Обороты (Можно вызвать знакомый с 1С-детства конструктор и редактировать запрос там.)
Щелкаем мышью вне поля запроса - наш источник данных готов. В верхнем правом окне появятся поля запроса. Поля не трогаем, оставляем как есть. Если поля не появились - читаем текст ошибки. Тут два варианта (на самом деле три, но последний озвучивать не будем):
Если все хорошо, то переходим ко второму пункту, который в нашем случае сведется к простой вещи: указать ресурсы - поля по которым мы будем суммировать итоги по группировкам. Идем на закладку ресурсы и просто кликаем слева по нужным полям:
Остальные пункты будем рассматривать уже не в конфигураторе, а в 1С-предприятии.
Создаем у внешней обработки форму. Настраивать в ней ничего не надо. Сохраняем наш отчет под названием "КакЯБыстроНаучилсяИспользоватьСКДУраУра". Хотя можно оставить и оригинальное название:
ВнешнийОтчет1.
Запускаем 1С-предприятие. Файл - Открыть - находим наш отчет, сохраненный ранее, и открываем его.
Перед запуском надо настроить группировки и установить период. Нажимаем кнопку Настройки... и попадаем в форму настроек.
Она похожа на ту, что находится на закладке "Настройки" конструктора СКД. Различие в том, что в конструкторе задаются настройки по умолчанию.
Находим кнопку конструктора настроек отчетов и нажимаем ее. Видим три варианта:
Таблицу, как и диаграмму, пока оставим в покое.
Список - это то что нам нужно. Если опять провести аналогию с построителем отчета - то с помощью списка мы задаем ИзмеренияСтроки. (С помощью таблицы - ИзмеренияКолонки.)
Вначале выбираем доступные поля. Для простоты выберем все, нажав на кнопку >>
Нажимаем Далее и выбираем группировки отчета, для примера:
Нажимаем ОК и видим лесенку группировок. Осталось в нижней части окна задать начало и конец периода. Эти параметры автоматически поставляются в регистры, которые присутствуют в запросе.
Все, можно нажимать кнопку "Сформировать". Если не вылезло сообщения об ошибке, то у вы увидите отчет на экране.
В заключение - видеоурок, демонстрирующий вышеописанное.