Навчальні статті. Звіти СКД в BAS
- Звіти за допомогою Системи Компоновки Даних (СКД)
- Реалізації завдання: порівняння залишків продуктів у двох різних основах.
- Об'єкт
- Приклад завдання
- Налаштування СКД
- Обробник з'єднання
- Зв'язок параметрів СКД з елементами форми
- Зазначення періодів в віртуальних таблицях в системі компонування даних
- Конструктор запиту СКД
Звіти за допомогою Системи Компоновки Даних (СКД)
Вітаємо читачів сайту. Сьогодні ми продовжимо вивчення звітів BAS і перейдемо до більш складним типам звітів створених на СКД (Система компоновки даних).
Система компоновки даних або СКД, як її часто називають, іноді лякає початківців своєю складністю і неприступністю. Але ж вона спочатку вигадувалася, щоб значно спростити створення звітів. Одна з основних її можливостей це створення звітів без єдиної строчки коду. СКД це деякий конструктор, на вхід якого ми подаємо текст запиту, далі робимо налаштування мишкою для представлення результатів цього запиту і звіт готовий.
Давайте додамо в нашу конфігурацію звіт відображає дані за розрахунками логістики.
Назвемо його: фсОтчетОРасчетахПоЛогистике.
І відразу заходимо в Схему компонування даних. Додаємо новий набір даних. У вікні, натискаємо «Готово».
Далі створюємо новий набір даних «Запрос»
І заходимо в конструктор запиту.
У запиті звернемося до нашого раніше створеному регістром накопичення «фсРасчетыПоЛогистике». Додаємо поля в запит.
Після цього переходимо в закладку умови і додамо 2 параметра, що дозволяють встановлювати період, за який ми хочемо отримати дані в звіті це «ДатаНачала» і «ДатаОкончания».
Закриваємо конструктор запиту і переходимо до налаштування виводу звіту. Йдемо на вкладку «Параметри». Після додавання параметрів в конструкторі запиту, тут автоматично додаються ці параметри. Нам потрібно додати ще один параметр для того, щоб користувач міг вибрати період звіту на формі. І так додаємо параметр:
- Період. Тип - Стандартний період.
Тепер трохи доопрацюємо наші раніше створені параметри. В поле вираз додати значення:
- Для «ДатаНачала» додати вираз &Период.ДатаНачала;
- Для «ДатаОкончания» додати відповідно &Период.ДатаОкончания.
В результаті у нас повинна вийти ось така картина:
Обов'язково змініть галочки користувальницької доступності.
Для того щоб наш звіт автоматично міг вважати підсумки - перейдемо в ятати ресурси і призначимо поля, які будуть розраховуватися.
Тепер, переходимо на вкладку Налаштування. Тут потрібно задавати основні параметри нашого звіту. Почнемо з групувань. Скористайтеся майстром налаштування.
На першій сторінці майстра вкажемо, які поля виводити.
На другій сторінці задамо групування (по ним, можливо, буде згортання)
А на третій сторінці можна задати упорядкування.
Все, налаштування угруповання завершені. Тепер закінчимо настройку наших параметрів.
На вкладці параметри, вкажемо період за замовчуванням, за який буде формуватися звіт.
І на вкладці Вибрані поля, відповідно вибираємо поля, за якими ми хочемо бачити інформацію в звіті.
Решту вкладок поки не будемо чіпати. Тепер, для того, щоб ми могли вибирати період, створимо форму звіту, і на форму додамо настройки компонування даних.
Як додавати форми, ми вже знаємо, залишилося тільки додати на форму табличное поле, дамо йому ім'я НастройкиОтчета і в поле даних вкажемо - КомпоновщикНастроек.Настройки.ПараметрыДанных.
Ось і все, звіт готовий.
Давайте тепер додамо ще один відбір по водієві, так само, як ми робили раніше з менеджером. Через конструкцію Выбор Когда. Повернемося в конструктор запиту і додамо умову:
Тепер перейдемо на закладку «Параметри» і знімемо галочку «Обмеження користувальницької доступності» і встановимо галочку «Включати в користувальницькі поля»
Перейдемо на закладку «Налаштування» в закладку «Параметри». Зазначимо, що за замовчуванням параметр водій дорівнює порожньому посиланню.
Ось і все, відбір готовий.
Для керованого застосування так само потрібно вказувати доступність для користувача налаштувань ось так:
Якщо цього не зробити, ваш параметр не буде доступний у відборах на формі.
Давайте пройдемося по вкладках основної закладки «Налаштування»
Выбранные поля – тут ми вказуємо, які поля потраплять в звіт. Це аналог першої сторінки майстра налаштувань.
Отбор - тут можна задати специфічний відбір, який буде доступний користувачеві. У розрізі нашого звіту це може бути сума більше 60, що означає, що таку суму можуть отримувати тільки старші водії, так ось, щоб користувач міг їх швидко вибрати, можемо додати такий відбір.
Сортировка. Як зрозуміло з назви, ця вкладка потрібна нам для упорядкування даних в звіті. Поле для сортування можна вказувати будь-який з обраних полів в звіті.
Условное оформление. Тут ми можемо поставити оформлення полів звіту. Список налаштувань для оформлення досить великий. Тут можна задати і фон колонки, формат і колір тексту, який виводиться в колонці, шрифт, відступ і багато іншого.
Пользовательские поля. Тут можна створювати свої поля і колонки. Наприклад, ми хочемо зробити колонку, в якій буде інформація про категорії водія, заснована на сумі нарахувань, якщо нарахування менше 60 означає категорія «Молодший», якщо більше значить «Старший».
Додаємо поле з такими відборами:
І додаємо наше нове поле в обрані поля:
Інші настройки. Тут можна задати загальні настройки для макета звіту.
- Макет оформления – вибираємо кольорову гамму звіту.
- Расположение итогов, полей группировок, и реквизитов, для настройки вида отчета. Для кожного параметра просто вибираємо доступне значення, яке нам потрібно.
- Выводить Заголовки и Заголовки – дозволяє окремо виводити на форму звіту заголовки всіх полів в звіті
- Выводить отбор и параметры – відповідно, виводить на форму звіту параметри і відбір які ми додали в звіт.
- Фиксация слева и сверху. Дозволяє налаштувати розташування звіту на формі.
Реалізації завдання: порівняння залишків продуктів у двох різних основах.
Об'єкт
- це теж набір даних але «зовнішній». Це може бути таблиця, яку можна заповнити даними результату запиту або з іншої таблиці значень або навіть набору записів. Головна складність, полягає в тому, що потрібно цей об'єкт заповнити самостійно, а значить і висновок самого звіту та його розшифровки теж.
Приклад завдання
Уявімо завдання: потрібно отримати і порівняти залишки товару в 2-х базах BAS в загально кількісному вираженні. З поточної бази отримаємо дані за допомогою набору даних запит, а із зовнішньої бази - за допомогою COM з'єднання.
Налаштування СКД
Створюємо новий звіт, відкриваємо схему компоновки даних, додаємо два типи набору даних: Набір-Запит і Набір-Об'єкт. Власне Набір-Запит - це отримання залишків в поточній базі, а Набір-Об'єкт - це таблиця в яку будуть поміщені дані із зовнішньої бази, як ми і сказали вище.
Набір-запит: ось такий простенький текст запиту, суть зараз в показанні взаємодії цих об'єктів.
Набір-об'єкт: В низу вікна є поле з ім'ям «Ім'я:» введемо туди назву «ВнешниеДанные» додамо поля: «КодСкладаВнешний» (по цьому полю буде виконуватися зв'язок набору-запиту і набору-об'єкта) і «ОстатокВнешняяБаза».
Тепер на закладці «Зв'язки наборів даних», задамо зв'язок наших наборів даних. Зв'язки наборів даних, аналогічні зв'язкам таблиць в конструкторі запитів. Винятком є те що в СКД з'єднання може бути тільки ЛЕВЫМ.
Заповнюємо поля наступним чином:
- Джерело зв'язку: Набір-Запит;
- Приймач зв'язку: Набір-Об'єкт;
- Вираз джерело: Склад.Код;
- Вираз приймач: КодСкладаВнешний.
На вкладці «Налаштування», додамо висновок детальних записів. Для цього клацніть правою кнопкою на «Звіт», виберіть «Нова угруповання» і, не вибираючи жодного поля, натисніть «ОК».
Тут же додамо в «Вибрані поля»: Склад, КоличествоОстаток и ОстатокВнешняяБаза.
На цьому конструювання звіту завершено, пора переходити до програмування!
Обробник з'єднання
Додамо нову основну форму звіту, на формі додамо кнопку «Сформувати». В обробник кнопки додамо текст процедури COM з'єднання, а після - висновок звіту, якщо дані отримані:
На програмному виведення звіту не будемо сильно зупинятися, він досить описаний в літературі і інших місцях. Але варто зазначити що потрібно обов'язково передавати в метод «Виконати» - ДанныеРасшифровки, інакше розшифровка (це те, що відбувається по подвійному кліку на осередку табличного документа) доступна не буде. Так само передаємо ДанныеРасшифровки процесору компонування при ініціалізації.
Все працює, але при спробі відфільтрувати, упорядкувати, оформити і т.д. виникає помилка виконання: «Не знайдений зовнішній набір даних ВнешниеДанные». Момент в тому, що фільтрація, упорядкування та ін. По суті, є установкою налаштувань звіту і переформовуванням результату. А так як використовується зовнішній набір даних, необхідно передавати його при ініціалізації процесора компонування. З огляду на це, визначимо для поля табличного документа «Результат», процедуру «ОбработкаРасшифровки»:
Зв'язок параметрів СКД з елементами форми
Отже, розглянемо найпростіший приклад реалізації такого завдання.
Як параметр виступає період формування довільного звіту.
Зверніть увагу на вираз для параметра КонецПериода, якщо використовувати функцію КонецПериода () і не перевіряти заповненість отримаємо звіт за період 01.01.0001 00:00:00 - 01.01.0001 23:59:59, що є некоректно.
Додамо в об'єкт два реквізити, відповідно НачалоПериода і КонецПериода і виведемо їх на форму.
Оброблювач кнопки настройки періоду, там же відбувається зв'язування змінених значень реквізитів Форми з параметрами СКД:
Як неважко здогадатися в разі простого параметра код буде мати вигляд:
Зазначення періодів в віртуальних таблицях в системі компонування даних
Залежно від типу віртуальної таблиці СКД автоматично додасть параметр (параметри).
Параметр «Період» для:
- періодичних регістрів відомостей - «СрезПервых», «СрезПоследних»,
- регістрів накопичення і регістрів бухгалтерії «Остатки»,
Як приклад розглянемо віртуальну таблицю залишків РН ТовариНаСкладах.
У запиті параметри віртуальної таблиці не вказані, але як видно на малюнку нижче СКД додав параметр «Період», при цьому прапор «Обмеження доступності» за замовчуванням знято, отже цей параметр доступний користувачеві для редагування при налаштуванні звіту.
Аналогічно для регістрів накопичення і регістрів - «Обороти», «Залишки і обороти» СКД автоматично додасть параметри «НачалоПериода» і «КонецПериода».
Часто виникає ситуація коли немає необхідності користувачеві вказувати параметри (необов'язкові параметри віртуальної таблиці), тобто для параметрів:
- «Период» це рівносильно поточну дату,
- «НачалоПериода» і «КонецПериода» - без обмеження по періоду.
В такому випадку необхідно скористатися розширенням мови запитів компонування даних:
Конструктор запиту СКД
-> закладка «Компонування даних» -> закладка «Таблиці» -> кнопка «Параметры виртуальной таблицы».
В такому випадку, текст запиту СКД набуде вигляду:
Де {} і є розширенням мови запитів компонування даних, що вказують на необов'язковість параметрів віртуальної таблиці.
З іншими корисними темами ви можете ознайомитися в нашій базі знань
Крім цього, ми надаємо послуги Супроводу BAS.
Також Ви можете ознайомитися з нашими розробками для програми BAS
Також, наша компанія проводить навчання за курсами:
Навчання проводиться у вечірній час, що дозволить вам не відриватися від роботи або навчання, практикуючим програмістом нашої компанії.
Якщо у вас залишилися питання, Ви завжди можете звернутися до наших аналітиків за телефонами:
(093) 090-70-20
(095) 090-70-20
(068) 090-70-20
Зв'яжіться з нами
Якщо ви хочете отримати більше інформації, заповніть цю форму. Ми зв'яжемося з вами найближчим часом.