Обучающие статьи. Отчеты СКД в BAS

Эта статья была обновлена 31 Мая 2022, Вт
Оглавление
  1. Отчеты с помощью Системы Компоновки Данных (СКД)
  2. Реализации задачи: сравнение остатков товаров в 2-ух разных базах.
  3. Объект
  4. Пример задачи
  5. Настройка СКД
  6. Обработчик соединения
  7. Связь параметров СКД с элементами формы
  8. Указание периодов в виртуальных таблицах в системе компоновки данных
  9. Конструктор запроса СКД

СКД - набор данных. Пример

Отчеты с помощью Системы Компоновки Данных (СКД)

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

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

Давайте добавим в нашу конфигурацию отчет отражающий данные по расчетам логистики.

Назовем его: фсОтчетОРасчетахПоЛогистике.

Отчеты на СКД

И сразу заходим в Схему компоновки данных. Добавляем новый набор данных. В открывшемся окне нажимаем «Готово».

Далее создаем новый набор данных «Запрос»

Отчеты на СКД

И заходим в конструктор запроса.

Отчеты на СКД

В запросе обратимся к нашему ранее созданному регистру накопления «фсРасчетыПоЛогистике». Добавляем поля в запрос.

Отчеты на СКД

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

Отчеты на СКД

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

  • Период. Тип – Стандартный период.

Теперь немного доработаем наши ранее созданные параметры. В поле выражение добавить значение:

  • Для «ДатаНачала» добавить выражение &Период.ДатаНачала;
  • Для «ДатаОкончания» добавить соответственно &Период.ДатаОкончания.

В итоге у нас должна получиться вот такая картина:

Отчеты на СКД 

Обязательно измените галочки пользовательской доступности.

Для того чтобы наш отчет автоматически мог считать итоги - перейдем в закладку ресурсы и назначим поля, которые будут рассчитываться.

Отчеты на СКД 

Теперь, переходим на вкладку Настройки. Здесь нужно задавать основные настройки нашего отчета. Начнем с группировок. Воспользуйтесь мастером настройки.

Отчеты на СКД

На первой странице мастера укажем, какие поля выводить.

Отчеты на СКД

На второй странице зададим группировки (по ним, возможно, будет сворачивание)

Отчеты на СКД

А на третьей странице можно задать упорядочивание.

Отчеты на СКД 

Все, настройки группировки завершены. Теперь закончим настройку наших параметров.

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

Отчеты на СКД

И на вкладке Выбранные поля, соответственно выбираем поля, по  которым мы хотим видеть информацию в отчете.

Отчеты на СКД

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

Как добавлять формы, мы уже знаем, осталось только добавить на форму табличное поле, дадим ему имя НастройкиОтчета и в поле данных укажем - КомпоновщикНастроек.Настройки.ПараметрыДанных.

Отчеты на СКД

Вот и все, отчет готов.

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

Отчеты на СКД

Теперь перейдем на закладку «Параметры» и снимем галочку «Ограничение пользовательской доступности» и установим галочку «Включать в пользовательские поля»

Отчеты на СКД

Перейдем на закладку «Настройки» в закладку «Параметры». Укажем, что по умолчанию параметр водитель равен пустой ссылке.

Отчеты на СКД

Вот и все, отбор готов.

Для управляемого приложения так же нужно указывать доступность пользовательских настроек вот так:

Отчеты на СКД

Если этого не сделать, ваш параметр не будет доступен в отборах на форме.

Давайте пройдемся по вкладках основной закладки «Настройки»

Отчеты на СКД

Выбранные поля – тут мы указываем, какие поля попадут в отчет. Это аналог первой страницы мастера настроек.

Отбор – тут можно задать специфический отбор, который будет доступен пользователю. В разрезе нашего отчета это может быть сумма более 60, что означает, что такую сумму могут получать только старшие водители, так вот, чтобы пользователь мог их быстро выбрать, можем добавить такой отбор.

Отчеты на СКД

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

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

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

Добавляем поле с такими отборами:

Отчеты на СКД

И добавляем наше новое поле в выбранные поля:

Отчеты на СКД

Другие настройки. Здесь можно задать общие настройки для макета отчета.

  • Макет оформления – выбираем цветовую гамму отчета.
  • Расположение итогов, полей группировок, и реквизитов, для настройки вида отчета. Для каждого параметра просто выбираем доступное значение, которое нам нужно.
  • Выводить Заголовки и Заголовки – позволяет отдельно выводить на форму отчета заголовки всех полей в отчете

Выводить отбор и параметры – соответственно, выводит на форму отчета параметры и отбор которые мы добавили в отчет.

Фиксация слева и сверху. Позволяет настроить расположение отчета на форме.

Реализации задачи: сравнение остатков товаров в 2-ух разных базах.

Объект

– это тоже набор данных но «внешний». Это может быть таблица, которую можно заполнить данными результата запроса или из другой таблицы значений или даже набора записей. Главная сложность, заключается в том, что нужно этот объект заполнить самостоятельно, а значит и вывод самого отчета и его расшифровки тоже.

Пример задачи

Представим задачу: нужно получить и сравнить остатки товара в 2-х базах BAS в обще количественном выражении. Из текущей базы получим данные с помощью набора данных запрос, а из внешней базы - с помощью COM соединения.

Настройка СКД

Создаем новый отчет, открываем схему компоновки данных, добавляем два типа набора данных: Набор-Запрос и Набор-Объект. Собственно Набор-Запрос – это получение остатков в текущей базе, а Набор-Объект – это таблица в которую будут помещены данные из внешней базы, как мы и сказали выше.

Набор-запрос: вот такой простенький текст запроса, суть сейчас в показании взаимодействия этих объектов.

СКД - набор данных. Пример

Набор-объект: В низу открывшегося окна есть поле с именем «Имя:» введем туда название «ВнешниеДанные» добавим поля: «КодСкладаВнешний» (по этому полю будет выполняться связь набора-запроса и набора-объекта) и «ОстатокВнешняяБаза».

СКД - набор данных. Пример

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

Заполняем поля следующим образом:

  1. Источник связи: Набор-Запрос;
  2. Приемник связи: Набор-Объект;
  3. Выражение источник: Склад.Код;
  4. Выражение приемник: КодСкладаВнешний.

СКД - набор данных. Пример

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

Здесь же добавим в «Выбранные поля»: Склад, КоличествоОстаток и ОстатокВнешняяБаза.

СКД - набор данных. Пример

На этом конструирование отчета завершено, пора переходить к программированию!

Обработчик соединения

Добавим новую основную форму отчета, на форме добавим кнопку «Сформировать». В обработчик кнопки добавим текст процедуры COM соединения, а после – вывод отчета, если данные получены:

СКД - набор данных. Пример

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

СКД - набор данных. Пример

 

Все работает, но при попытке отфильтровать, упорядочить, оформить и т.д. возникает ошибка исполнения: «Не найден внешний набор данных ВнешниеДанные». Момент в том, что фильтрация, упорядочивание и пр. по сути, являются установкой настроек отчета и переформированием результата. А так как используется внешний набор данных, необходимо передавать его при инициализации процессора компоновки. С учетом этого, определим для поля табличного документа «Результат», процедуру «ОбработкаРасшифровки»:

СКД - набор данных. Пример

Связь параметров СКД с элементами формы

Итак, рассмотрим простейший пример реализации подобной задачи.

В качестве параметра выступает период формирования произвольного отчета.

Обратите внимание на выражение для параметра КонецПериода, если использовать функцию КонецПериода() и не проверять заполненность получим отчет за период 01.01.0001 00:00:00 - 01.01.0001 23:59:59, что есть некорректно. 

Добавим в объект два реквизита, соответственно НачалоПериода и КонецПериода и выведем их на форму.

Обработчик кнопки настройки периода, там же происходит связывание измененных значений реквизитов Формы с параметрами СКД:

Параметры СКД и форма элемента

Как нетрудно догадаться в случае простого параметра код будет иметь вид:

Параметры СКД и форма элемента

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

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

Параметр «Период» для:

  • периодических регистров сведений - «СрезПервых»«СрезПоследних»,
  • регистров накопления и регистров бухгалтерии «Остатки»,

В качестве примера рассмотрим виртуальную таблицу остатков РН ТоварыНаСкладах.

СКД параметры виртуальных таблиц

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

СКД параметры виртуальных таблиц

Аналогично для регистров накопления и регистров  - «Обороты»«Остатки и обороты» СКД автоматически добавит параметры «НачалоПериода» и «КонецПериода»

Часто возникает ситуация когда нет необходимости пользователю указывать параметры (необязательные параметры виртуальной таблицы), т.е. для параметров:

  • «Период» это равносильно текущей дате,
  • «НачалоПериода» и «КонецПериода» - без ограничения по периоду.

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

Конструктор запроса СКД

-> закладка «Компоновка данных» -> закладка «Таблицы» -> кнопка «Параметры виртуальной таблицы».

СКД параметры виртуальных таблиц

В таком случае, текст запроса СКД примет вид:

Листинг кода 1

Где {} и являются расширением языка запросов компоновки данных, указывающие на необязательность параметров виртуальной таблицы.

С другими полезными темами вы можете ознакомиться в нашей базе знаний

Если Вы еще не приобрели эту программу, у Вас есть отличная возможность это сделать в нашем магазине

Кроме этого, мы предоставляем услуги Сопровождения BAS

Также Вы можете ознакомиться с нашими разработками для программы BAS

Также, наша компания проводит обучение по курсам:

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

Если у вас остались вопросы, Вы всегда можете обратиться к нашим аналитикам по телефонам:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20

( 16 )
Комментарии
Пока нет комментариев
Написать комментарий

Свяжитесь с нами

Если вы хотите получить больше информации, заполните эту форму. Мы свяжемся с вами в ближайшее время.

(073) 090-70-20 (095) 090-70-20 (068) 090-70-20 info@finsoft.ua