Перший звіт на Скд. Перший звіт на СКД Створення звіту за допомогою системи компонування даних

Увійдіть на сайт як учень

Система компонування даних 1С 8.3 для початківців: перший звіт на СКД

Якщо ви не читали вступ до цього модуля - будь ласка, прочитайте його: .

Для виконання уроків вам знадобиться 1С 8.3 (не нижче 8.3.4.482) .

Якщо у вас є встановлена ​​1С версії 8.3 - використовуйте її. Якщо ні – скачайте та встановіть навчальну версію, яку фірма 1С випускає спеціально для освітніх цілей.

Для цього:

  • Розпакуйте архів, завантажений за посиланням на окрему папку на робочому столі:
    • посилання на скачування з Dropbox (варіант №1)
    • посилання на скачування з Mail.ru (варіант №2)
  • Запустіть файл "setup.exe".
  • Натисніть "Далі", "Далі", "Встановити".
  • Дочекайтеся закінчення установки.

На вашому робочому столі має з'явитися такий ярлик:

Для всіх уроків цього циклу ми будемо використовувати підготовлену мною базу даних "Гастроном". Вона повністю збігається з базою, яку ми використовували в модулях школи при вивченні запитів. Тому я розраховую, що ви знайомі з її довідниками та документами.

Якщо ви її видалили - завантажте заново по наступній , розпакуйте і до списку баз.

Зрештою, робоче місце налаштоване і зараз ми разом створимо наш перший звіт за допомогою системи компонування даних. Він буде дуже простим, щоб продемонструвати загальні можливості системи компонування даних (скорочено СКД).

Ставимо мету

Мета цього уроку- створити звіт, який у режимі користувача виводить список клієнтів із наступними полями:

  • Ім'я
  • Підлога
  • Улюблений колір клієнта.

Звіт має бути зовнішнім. Це означає, що його буде створено та налаштовано в конфігураторі, а потім збережено у вигляді окремого (зовнішнього) файлу на комп'ютері.

Щоб сформувати такий звіт у 1С користувачеві, потрібно буде запустити базу в режимі користувача, відкрити цей файл і натиснути кнопку "Сформувати".

Поїхали!

Створюємо звіт

Запускаємо конфігуратор для бази "Гастроном":

З головного меню вибираємо пункт "Файл"->"Новий...":

Вибираємо "Зовнішній звіт":

Створюємо схему компонування даних усередині звіту

Відкрилося вікно створення зовнішнього звіту. Як ім'я вводимо: " Урок 1", а потім тиснемо кнопку " Відкрити схему компонування даних":

Запустився конструктор створення схеми. Погоджуємося з ім'ям за умовчанням " ОсновнаСхемаКомпонівкиДаних"і тиснемо кнопку" Готово":

Відкрилося основне робоче вікно, з безліччю закладок та полів, в якому ми і налаштовуватимемо нашу схему компонування даних.

Не треба лякатися – можливостей тут справді багато, але далеко не всі з них нам потрібні. Особливо на першому уроці.

Зараз ми знаходимося на закладці Набори данихНа ній і залишимося.

Пишемо запит через конструктор

Система компонування даних (скорочено СКД) вимагає від нас дані,які вона виводитиме користувачеві.

Найпростіший спосіб - написати запитдо основи. У школи ми навчилися писати і розуміти запити - тому я розраховую, що ви маєте відповідні навички.

Натискаємо на зеленийплюсик і в списку, що розкрився, вибираємо пункт " Додати набір даних - запит":

Наше завдання – написати в це поле текст запиту. Ви ще не забули, як це робиться?

Я вам підкажу:

У цьому запиті ми вибрали три поля (" Найменування", "Підлога"і" Улюблений колір") із таблиці " Довідник.".

Але не поспішайте писати цей текст у полі "Запит" вручну.

Зараз ми створимо той же запит візуально, тільки за допомогою мишки. Цей спосіб називається " Конструктор запиту".

Щоб викликати цей конструктор, натисніть кнопку " Конструктор запиту...у верхній правій частині поля "Запит":

У вікні, що перетягне таблицю " Клієнтиз першого стовпця до другого, щоб вказати, що саме з цієї таблиці ми будемо запитувати дані:

Вийшло ось так:

Далі розкриємо таблицю " Клієнти" у другому стовпці за знаком " Плюс", щоб побачити всі її поля і перетягнути поле" Найменування" з другого стовпця до третього, щоб вказати, що з цієї таблиці нам потрібно запитувати поле "Найменування":

Вийшло ось так:

Вчинимо так само з полями " Підлога"і" Улюблений колір". Результат буде таким:

Натисніть кнопку "ОК", щоб вийти з конструктора запиту та побачимо, що текст запиту автоматично додався у полі "Запит".

Більше того на підставі тексту запиту 1С сама витягла імена полів (область вище за запит), які будуть використовуватися схемою компонування даних:

Тепер, коли ми склали запит, СКД знає, яким чином отримувати дані для звіту.

Налаштовуємо представлення даних

Залишилось якось візуалізувати ці данідля користувача як друкованої форми. І ось тут СКД може творити чудеса!

Щоб створити таке диво, перейдемо на вкладку " Налаштуванняі натиснемо кнопку конструктора налаштувань ( Чарівна паличка):

У вікні вкажемо тип звіту " Перелік"і натиснемо " Далі":

У наступному вікні виберемо (шляхом перетягування) поля, які потрібно буде відобразити в списку (перетягнемо всі доступні нам: " Улюблений колір", "Найменування"і" Підлога"):

Отримаємо такий результат і натиснемо кнопку " ОК":

Конструктор налаштувань закрився і з'явився пункт Детальні записи":

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

Зберігаємо звіт у вигляді файлу

Відкриємо пункт головного меню Файл"->"Зберегти":

Я збережу його на робочий стіл під ім'ям Урок 1":

Перевіряємо звіт у режимі користувача

Нарешті закриємо конфігуратор і зайдемо в нашу базу в режимі користувача:

Ім'я користувача "Адміністратор", пароля немає:

Через меню виберемо пункт " Файл"->"Відкрити...":

І вкажемо файл звіту (я зберігав його на робочий стіл під ім'ям "Урок1.erf":

Відкрилася форма звіту, натисніть кнопку " Сформувати":

Готово! Ось вона наша друкована форма зі списком клієнтів, їх улюбленим кольором та підлогою:

Друковану форму можна легко роздрукувати. Для цього достатньо вибрати в меню пункт " Файл"->"Друк...":

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

учнів - відповідаю поштою, але спочатку загляньте в.

Увійдіть на сайт як учень

Увійдіть як учень, щоб отримати доступ до матеріалів школи

Здрастуйте, шановний читачу! Сьогодні ми почнемо з вами розглядати основи системи компонування. Ви дізнаєтеся, що таке СКД і познайомитеся з основними складовими СКД. Також розгляньте вхідні дані для побудови звіту та дізнаєтеся про основні етапи виконання звіту в системі компонування та багато іншого. Крім того, у вас є можливість перевірити свої знання, пройшовши невеликий . Давайте почнемо!

Вхідні дані для побудови звіту із використанням системи компонування даних (СКД).

    1. Схема компонування даних— містить опис наборів даних та параметрів отримання даних. У ній записано, звідки отримувати дані та як управляти компонуванням даних. Ця схема виходить з допомогою конструктора.
  1. Налаштування компонування даних— налаштування виконання звіту, тобто, як повинен виводитися звіт, які мають бути параметри отримання даних та які застосовані відбори для певної схеми компонування даних.
  2. Компонувальник макету— обробляє схему компонування даних та налаштування компонування даних.
    В результаті роботи компонувальника макета виходить макет компонування данихякий є результатом застосування налаштувань до схеми компонування.

Основні етапи, у тому числі складається виконання звіту з допомогою системи компонування даних (СКД).

Етапи СКД 1С 8

    1. Макет компонування даних— схема побудови звіту, готовий опис побудови звіту, зазначення системи, які потрібно вибрати дані, які побудувати запити. Вказівка процесору компонуванняформувати звіт певної структури з урахуванням заданих налаштувань. Отже, Схема компонування данихмістить загальний опис схеми, а макет компонування данихмістить також конкретні налаштування користувача. Схема = Звіти. Прайс лист. ОтриматиМакет( "ОсновнаСхемаКомпонівкиДаних"); Налаштування = Схема. НалаштуванняЗа замовчуванням;

      КомпонувальникМакета = Новий КомпонувальникМакетаКомпонуванняДаних;
      Макет = КомпонувальникМакета. Виконати (Схема, Налаштування);

    2. Процесор компонування даних- Отримує інформацію з БД або зовнішніх джерел з урахуванням даних з макету компонування даних. Виконує компонування даних та формує результат. Отриманий результат міститься в процесорі компонування даних. ПроцесорКомпонування = Новий ПроцесорКомпонуванняДаних; ПроцесорКомпонування. Ініціалізувати (Макет);
  1. Процесор виведення результату- виводить результат роботи, для подання користувачеві,
    або в табличний документ, або таблицю значень.
ПроцесорВиводу = Новий ПроцесорВиводуРезультатуКомпонуванняДанихВТабличнийДокумент; ТабДок = Новий Табличний Документ; Процесор Висновку. Встановити Документ(ТабДок); Процесор Висновку. Вивести(ПроцесорКомпонівки) ;

Результат кожного етапу можна серіалізувати (зберегти) у файл XML. Тоді можна кожен етап формування звіту виконувати різних комп'ютерах.

Що таке схема компонування даних?

Схема компонування даних- Об'єкт вбудованої мови системи 1С:Підприємство «СхемаКомпонівкиДаних».
Ще можна назвати макетом спеціального типу, який може бути створений у будь-якого об'єкта конфігурації 1С Схема компонування данихвідповідає поняттю макета, оскільки макет — це об'єкт, що містить різні дані, потрібні відображення вихідної інформації.

З чого складається схема компонування даних?

Набори даних

Джерела данихдля наборів даних — це функціонал, що не використовується, створений для вказівки на деякі зовнішні інформаційні бази. Наразі вказують на локальну базу, в якій виконується звіт.

  1. Запит- Звернення до поточної інформаційної бази для отримання даних.
  2. Об'єкт- Як об'єкт вибирається: таблиця значень, таблична частина, результат запиту, область осередків табличного документа, документ, набір записів регістра і т.д. Навіщо потрібен набір даних об'єкт? Наприклад, якщо на вході використовуємо таблицю значень, а ній дані з іншої бази (можливо навіть не 1С), то, по суті, ми працюємо даними цієї бази.
  3. Об'єднання— об'єднує дані із наборів даних: запит та об'єкт. Навіщо потрібен набір даних об'єкт, якщо у запиті існує пропозиція UNION, що дозволяє пов'язати різні дані, тобто об'єднати їх? Цей набір даних необхідний, оскільки як набору даних може бути не тільки запит, а також, наприклад, таблиця значень.

Налаштування

  1. Якщо не вказати жодних налаштувань звіту, тоді не буде нічого відображено. Досвідчений користувач зможе сам вказати налаштування і тоді результат з'явиться відповідно до його налаштувань. Але краще створити базові налаштування під час розробки звіту.

Напевно, матеріалу на сьогодні достатньо. Новий матеріал обов'язково з'явиться, тож підпишіться на оновлення на нашому сайті, щоб не пропустити! Якщо в чомусь є труднощі, пишіть коментарі. Постараюся одразу відповісти. Ви зможете закріпити свої знання, пройшовши перший тест з .


Наприкінці статті хочу порадити вам безкоштовний від Сотнікова Анатолія. Це курс досвідченого програміста. Він на окремій базі покаже вам, як робити звіти в СКД. Вам тільки потрібно уважно слухати та запам'ятовувати! Ви отримаєте відповіді на такі запитання:
  • Як створити простий звіт у вигляді списку?
  • Навіщо потрібні колонки Поле, Шлях і Заголовок на закладці «Поля»?
  • Які існують обмеження для полів компонування?
  • Як правильно налаштовувати ролі?
  • Які існують ролі для полів компонування?
  • Де знайти закладку компонування даних у запиті?
  • Як настроювати параметри в СКД?
  • Далі ще цікавіше...
Напевно, чи не варто самому намагатися борознити інтернет у пошуках потрібної інформації? Тим більше, все готове для застосування. Тільки почніть! Всі подробиці про те, що є у безкоштовних відеоуроках

СКД 1С розшифровується як Система Компонування Даних. СКД 1С – це новий спосіб написання звітів у 1С, який дозволяє користувачеві повністю налаштовувати звіт самостійно.

Мінус СКД 1С у тому, що його налаштування досить складні та не всі користувачі засвоюють їх швидко.

Написання звітів СКД вимагає вміння працювати із запитами в 1С, що ми обговорювали у .

Яка технологія створення звіту СКД 1С:

  • Написати запит 1С в СКД 1С, який забезпечує отримання даних
  • Вказати СКД 1С роль полів (обчислювані поля, ресурси)
  • Ввести налаштування СКД 1С за замовчуванням.

Користувачеві залишається можливість змінити безліч налаштувань за власним бажанням.

Яка технологія створення звіту за попередніми технологіями:

  • Написати запит у програмі 1С
  • Розробити форму налаштувань (унікальну для звіту), яка дозволить змінювати лише вибрані програмістом N налаштувань
  • Написати код (програму) виконання запиту та побудови друкованої форми звіту.

Як Ви бачите, СКД 1С має значну перевагу як для користувача, так і для програміста:

  • Програміст – позбавляє написання програми для виконання звіту та налаштувань
  • Користувач – отримує значний доступ до установок звіту.

У всіх нових конфігураціях 1С всі звіти будуть використані лише на СКД 1С.

Давайте подивимося, як створити звіт на СКД 1С самому з нуля.

Створюємо звіт СКД 1С

У конфігураторі натисніть кнопку нового файлу (меню Файл/Новий).

Виберіть тип файлу Новий звіт.

Буде створено новий звіт. Введемо найменування - без пробілів для конфігурації, синонім для користувача.

Створимо основну схему СКД 1С.

Створюємо запит для звіту СКД 1С

Джерел даних для СКД 1С може бути безліч. Щоб використати, наприклад, два окремі запити – додайте спочатку «Набір даних – об'єднання», а потім кілька запитів.

У прикладі ми будемо використовувати простий запит.

Надаємо запит для отримання даних.

Робота з конструктором запиту нічим не відрізняється від звичайної, ми обговорювали це у .

В результаті формування запиту, СКД 1С створить список доступних для використання полів і заповнить їм за промовчанням найменування.

Якщо найменування незручне, його можна змінити.

Зверніть увагу, що ми використовували у запиті параметр &ДатаПочатку. У СКД 1С є параметр (дата) за умовчанням під назвою &Період і Ви можете використовувати його.

Причому вказувати його у запиті прямо не треба – його буде використано автоматично. Однак є тонкість – він застосовується до всіх таблиць, включаючи ліві з'єднання та інше, що може викликати помилки.

Наприклад, Ви отримуєте залишки на початок місяця, а лівим з'єднанням отримуєте дані на сьогодні. При використанні Період буде застосований до всіх таблиць однаково, і запит працюватиме неправильно.

Налаштування СКД 1С

На закладці Ресурси вкажемо ті поля, які сумуватимуться для підсумків (тобто цифри). У полів можна вказати функцію підсумовування. За замовчуванням це Сума (тобто підсумовувати цифри з усіх рядків і отримати разом), а можна використовувати Середнє, Кількість, Максимум і т.п.

На закладці Параметри заборонимо непотрібні нам і включимо потрібні. Тут можна задати людську назву параметра.

Основне налаштування здійснюється на закладці Налаштування:


Відкриємо його у режимі Підприємство. Зверніть увагу, що ми не займалися жодним програмуванням, малюванням форм та іншого. Щоб встановити параметр, натисніть кнопку Настройки.

Користувач бачить майже таку форму налаштувань, як і програміст.

Вуаль. Звіт працює.

Налаштування СКД 1С

Усі налаштування звіту СКД 1С виконуються за допомогою натискання на кнопку Налаштування. Принаймні у шаблоні за промовчанням. Існує можливість створити самому форму звіту СКД 1С і тоді налаштування можуть бути винесені до інших форм, намальованих програмістом самостійно.

Перетягніть Склад з Колонки в Рядки.

Перетягнемо номенклатуру на склад.

Натисніть кнопку ОК і сформуйте звіт. Ура – ми тільки-но змінили роботу звіту в режимі Програмування без програмування.

Натисніть правою кнопкою на Рядки (а можна на будь-яке з полів) і виберіть Нове угруповання.

Розкриємо поле Склад і виберемо одне з його полів, наприклад, Вид складу.

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

Якщо Ви додасте нове угруповання, але поле не виберете, це означає «Всі поля» (відображається як «Детальні записи»). Це так.

Схопіть лівою кнопкою миші наше угруповання (Склад/Номенклатура) та перетягніть його на нове угруповання (Вигляд складу).

Результат наших налаштувань.

Крім налаштувань, про дію яких легко здогадатися за їхньою назвою (Відбір, Сортування тощо) є закладка «Інші налаштування». Вона дозволяє дозволити чи заборонити такі речі як відображення підсумків, розташування угруповань у колонках тощо.

Зверніть увагу, що налаштування можуть бути задані для всього звіту (вибрано Звіт) або для певного рядка полів (виберіть рядок, наприклад Номенклатура, та виберіть Установки:Нонменклатура).

Система компонування даних (СКД) — потужний механізм платформи 1С (8.2 і більше) розробки звітів, а не система контролю доступу.

Навіщо було придумано «система компонування даних»? Система була вигадана для того, щоб декларативно створювати звіти. Звіт створюється без потреби писати програмний код. За допомогою певного конструктора та налаштувань, зроблених у ньому, програміст задає бажаний результат, система компонування даних це розуміє та виводить цей результат користувачеві. Якщо потрібно змінити звіт, достатньо знову звернутися до конструктора, внести необхідні зміни, і змінений звіт готовий.

Відеоурок зі створення звіту «Журнал документів» у 1С СКД:

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

Отримайте 267 відеоуроків з 1С безкоштовно:

Все це, безумовно, захаращує схему компонування даних, і недосвідченому фахівцю розібратися в ньому досить складно. Оскільки при відкритті конструктора перед ним з'являється величезна кількість різних налаштувань, значення яких часом не очевидне.

Незважаючи на те, що СКД в 1С 8.3 може створюватися інтерактивно за допомогою відповідного конструктора, можна і програмним чином виконати ті ж дії. Можна піти від початку. Програмними засобами створити схему компонування даних, виконати всі необхідні налаштування, створити параметр варіанта звіту, скомпонувати звіт і вивести його на екран користувачеві. Це більш трудомістке завдання, але все ж таки здійсненне.

Також варто зазначити, що система компонування даних використовується не лише у процесі створення звіту. За бажанням можна і друковану форму документа реалізувати за допомогою схеми компонування даних. Принципових складнощів тут немає, але важливо розуміти до створення таких друкованих форм, як у цілому працює система і з яких взаємозалежних елементів вона складається.

Основа керованого інтерфейсу 1С - СКД

У концепції керованих форм лежить система компонування даних. Всі відбори, налаштування умовного оформлення сортування, які ми маємо для точно такі ж, як у СКД. Слід зазначити, що це елементи СКД мають можливість реалізуватися. Тому ми можемо створювати схему програмним чином, використовуючи штатні засоби платформи, і крім цього, і зовнішніми засобами можливо оперувати.

Як освоїти та навчитися робити звіти на СКД?

Одна з найважливіших областей бізнес-софту – це звітність. Від того, наскільки легко налаштувати під мінливі потреби бізнесу (і законодавства) існуючий звіт або зробити новий, може залежати (причому не в переносному сенсі!) доля бізнесу, чи то звіт для податкової інспекції, чи діаграма залежності попиту на товари від сезону та інших факторів . Потужна та гнучка система звітності, що дозволяє легко витягти з системи потрібні дані, представити їх у доступному для розуміння вигляді, що дозволяє кінцевому користувачеві переналаштувати стандартний звіт так, щоб побачити дані в новому світлі – це ідеал, якого повинна прагнути кожна бізнес-система.

У платформі «1С:Підприємство» за побудову звітів відповідає механізм під назвою «Система компонування даних» (скорочено СКД). У цій статті ми намагатимемося дати короткий опис ідеї та архітектури механізму СКД та його можливостей.


СКД – це механізм, що ґрунтується на декларативному описі звітів. СКД призначений для побудови звітів та для виведення інформації, що має складну структуру. До речі, окрім розробки звітів, механізм СКД також використовується в «1С:Підприємстві» в динамічному списку, засобі показу спискової інформації з багатою функціональністю (показ плоских та ієрархічних списків, умовне оформлення рядків, угруповання тощо).

Трохи історії

У першій версії платформи «1С:Підприємство 8», версії 8.0, звіти робилися так:
  1. Писав один або декілька запитів мовою запитів 1С (SQL-подібна мова, детальніше про неї нижче).
  2. Писав код, який переносив результати виконаних запитів у табличний документ або діаграму. Код також міг виконувати роботу, яку у запиті зробити неможливо – наприклад, обчислював значення, використовуючи вбудовану мову 1С.
Підхід прямолінійний, але не найзручніший – візуальних налаштувань мінімум, все доводиться програмувати «врукопашну». А один із козирів на той момент зовсім нової платформи «1С:Підприємство 8» - це мінімізація у прикладному рішенні обсягу коду, який потрібно писати вручну, зокрема, за рахунок візуального проектування. Логічно було б піти цим шляхом і в механізмі побудови звітів. Що і було зроблено шляхом розробки нового механізму – Системи Компонування Даних.

Однією з ідей, що лягли в основу СКД, була гнучкість і настроюваність звітів, причому доступна як розробнику, так і кінцевому користувачеві. В ідеалі хотілося б дати доступ кінцевому користувачеві до того ж набору інструментів для дизайну звіту, що й розробнику. Логічно було б зробити єдиний набір інструментів, доступний для всіх. Ну а раз інструменти припускають участь кінцевого користувача - значить, потрібно використання програмування в них прибрати до мінімуму (найкраще - усунути зовсім), і максимально використовувати візуальні налаштування.

Постановка задачі

Завдання перед командою розробки стояло таке – створити систему створення звітів, засновану не так на алгоритмічному (тобто через написання коду), але в декларативному підході до створення звітів. І ми вважаємо, що завдання успішно вирішили. На наш досвід, близько 80% необхідної звітності може бути реалізована за допомогою СКД без єдиного рядка коду (за винятком написання формул полів, що обчислюються), здебільшого - через візуальні налаштування.
Розробка першої версії СКД зайняла близько 5 людино-років.

Дві мови

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

Мова запитів

Мова запитів заснована на SQL і легко освоюється знаючими SQL. Приклад запиту:

Легко бачити аналоги стандартних для SQL-запиту секцій – SELECT, FROM, GROUP BY, ORDER BY.

При цьому мова запитів містить значну кількість розширень, орієнтованих на відображення специфіки фінансово-економічних завдань та на максимальне скорочення зусиль розробки прикладних рішень:

  • Звернення до полів через точку. Якщо поля будь-якої таблиці мають тип посилання (зберігають посилання на об'єкти іншої таблиці), розробник може в тексті запиту посилатися на них через ".", при цьому кількість рівнів вкладеності таких посилань система не обмежує (наприклад, Замовлення Клієнта. Угода. Організація. телефон).
  • Багатовимірне та багаторівневе формування підсумків. Підсумки та підсумки формуються з урахуванням угруповання та ієрархії, обхід рівнів може виконуватися у довільному порядку з підведенням підсумків, забезпечується коректна побудова підсумків за тимчасовими вимірами.
  • Підтримка віртуальних таблиць. Віртуальні таблиці, що надаються системою, дозволяють отримати практично готові дані більшості прикладних завдань без необхідності складання складних запитів. Так, віртуальна таблиця може надати дані щодо залишків товарів у розрізі періодів на якийсь момент часу. При цьому віртуальні таблиці максимально використовують інформацію, що зберігається, наприклад, раніше розраховані підсумки і т.д.
  • Тимчасові таблиці. Мова запитів дозволяє використовувати у запитах тимчасові таблиці. З їхньою допомогою можна підвищити продуктивність запитів, у деяких випадках знизити кількість блокувань і зробити текст запиту легшим для сприйняття.
  • Пакетні запити Для зручнішої роботи з тимчасовими таблицями у мові запитів підтримується робота з пакетними запитами - в такий спосіб, створення тимчасової таблиці та її використання поміщаються однією запит. Пакетний запит є послідовністю запитів, розділених точкою з комою (";"). Запити в пакеті виконуються один за одним. Результатом виконання пакетного запиту, залежно від використовуваного методу, буде або результат, який повертається останнім запитом пакета, або масив результатів всіх запитів пакета в тій послідовності, в якій запити в пакеті.
  • Отримання уявлень посилальних полів. Кожна об'єктна таблиця (у якій зберігається довідник чи документ) має віртуальне поле - «Уявлення». Це поле містить текстове представлення об'єкта та полегшує роботу творця звітів. Так, для документа це поле містить всю ключову інформацію - назву типу документа, його номер і дату (наприклад, «Продаж 000000003 від 06.07.2017 17:49:14»), позбавляючи розробника від написання поля, що обчислюється.
  • та ін.
Механізм запитів автоматично модифікує запит з урахуванням ролей, до яких належить користувач, від імені якого виконується запит (тобто користувач побачить лише ті дані, які має право бачити) та функціональних опцій (тобто відповідно до налаштованої у прикладному рішенні) функціональністю).

Є також спеціальні розширення мови запитів для СКД. Розширення здійснюється за допомогою спеціальних синтаксичних інструкцій, що укладаються у фігурні дужки та розміщуються безпосередньо в тексті запиту. За допомогою розширень розробник визначає які операції кінцевий користувач зможе проводити, налаштовуючи звіт.

Наприклад:

  • ВИБРАТИ. У цій пропозиції описуються поля, які користувач зможе вибирати для виведення. Після цього ключового слова через кому перераховуються псевдоніми полів з основного списку вибірки запиту, які будуть доступними для налаштування. Приклад: (ВИБРАТИ Номенклатура, Склад)
  • ДЕ. Описуються поля, куди користувач зможе накладати відбір. У цій пропозиції використовуються поля таблиць. Використання псевдонімів полів списку вибірки є неприпустимим. Кожна частина об'єднання може містити власний елемент ДЕ. Приклади: (ДЕ Номенклатура.*, Склад), (ДЕ Документ.Дата >= &ДатаПочатку, Документ.Дата<= &ДатаКонца}
  • та ін.
Приклад використання розширень:

Мова виразів компонування даних

Мова виразів компонування даних призначений для запису виразів, що використовуються, зокрема, для опису виразів полів користувача. СКД дозволяє визначати у звіті поля користувача, використовуючи або власні вирази, або набори варіантів з умовами їх вибору (аналог CASE в SQL). Поля користувача є аналогом обчислюваних полів. Вони можуть задаватися як у конфігураторі, так і в режимі «1С:Підприємство», але у виразах полів користувача не можна використовувати функції загальних модулів. Тому поля користувача призначені швидше для користувача, ніж для розробника.

Приклад:

Процес створення звіту на СКД

При створенні звіту нам потрібно створити макет, який визначає, як дані відображатимуться у звіті. Можна створити макет, який базується на схемі компонування даних. Схема компонування даних визначає суть даних, що надаються звітом (звідки отримувати дані і як можна керувати їх компонуванням). Схема компонування даних є базу, основі якої можуть бути сформовані всілякі звіти. Схема компонування даних може містити:
  • текст запиту з інструкціями системи компонування даних;
  • опис кількох наборів даних;
  • докладний опис доступних полів;
  • опис зв'язків між кількома наборами даних;
  • опис параметрів отримання даних;
  • опис макетів полів та угруповань;
  • та ін.

Наприклад, можна як набору даних додати в схему компонування даних запит, і викликати конструктор запиту, що дозволяє в графічному вигляді скласти запит довільної складності:

Підсумком запуску конструктора запитів буде текст запиту (мовою запитів «1С:Підприємства»). Цей текст можна за необхідності скоригувати вручну:

Наборів даних у схемі компонування даних може бути кілька, набори даних можуть бути пов'язані в макеті довільним чином, можуть бути додані поля, задані параметри звіту і т.п. Варто згадати цікаву особливість роботи механізму запитів у 1С:Підприємстві. Запити зрештою транслюються у діалект SQL, специфічний для СУБД, з якою безпосередньо працює додаток. Ми взагалі намагаємося задіяти можливості серверів СУБД по максимуму (нас обмежує те, що ми використовуємо тільки ті можливості, які є одночасно у всіх підтримуваних платформою «1С:Підприємство» СУБД – MS SQL, Oracle, IBM DB2, PostgreSQL). Таким чином, на рівні запиту в обчислюваних полях ми можемо використовувати ті функції, які транслюються в SQL.

А ось на рівні схеми компонування даних ми вже можемо додавати поля користувача і використовувати в них функції вбудованою мовою розробки 1С (у тому числі й написані нами), що сильно розширює можливості звітів. Технічно це виглядає так - все, що можна транслювати в SQL, транслюється в SQL, запит виконується на рівні СУБД, результати запиту поміщаються в пам'ять сервера додатків 1С і СКД обчислює для кожного запису значення полів, що обчислюються, чиї формули написані мовою 1С.


Додавання полів користувача

До звіту можна додати довільну кількість таблиць та діаграм:


Дизайнер звітів


Звіт під час виконання

За допомогою СКД користувач може додавати до звіту складні відбори (які будуть додані до запиту в потрібних місцях), умовне оформлення (що дозволяє по-різному форматувати – шрифтом, кольором тощо – поля, що виводяться в залежності від їх значень) та багато іншого .

Коротко описати процес побудови та формування звіту можна так:

  • Розробник у design time за допомогою дизайнера (або в runtime за допомогою коду) визначає схему компонування даних:
    • Текст запиту/запитів
    • Опис обчислюваних полів
    • Зв'язки між запитами (якщо їх декілька)
    • Параметри звіту
    • Параметри за замовчуванням
    • І т.д.
  • Вищеописані налаштування зберігаються в макеті
  • Користувач відкриває звіт
    • Можливо, робить додаткові налаштування (наприклад, змінює значення параметрів)
    • Натискає кнопку "Сформувати"
  • Установки користувача застосовуються до схеми компонування даних, визначеної розробником.
  • Формується проміжний макет компонування даних, що містить інструкції, звідки отримувати дані. Зокрема, коригуються запити, задані у макеті. Так, із запиту видаляються поля, які не використовуються у звіті (це робиться з метою мінімізувати обсяг отриманих даних). У запит додаються всі поля, що беруть участь у формулах полів, що обчислюються.
  • У справу включається процесор компонування даних. Процесор компонування виконує запити, здійснює зв'язок наборів даних, розраховує значення полів і ресурсів, що обчислюються, виконує угруповання. Словом, робить усі розрахунки, які були виконані лише на рівні СУБД.
  • Процесор виведення даних запускає запит виконання і виводить отримані дані в табличний документ, діаграму тощо.


Процес формування звіту механізмом СКД

Ми намагаємося мінімізувати обсяг даних звітів, що передаються з сервера до клієнтського додатку. При показі даних у табличному документі при відкритті табличного документа ми передаємо з сервера ті рядки, які користувач бачить на початку документа. У міру просування користувача по рядках документа на клієнта підкачуються з сервера дані, що відсутні.

Налаштування користувача

Весь інструментарій СКД доступний як розробнику, так і кінцевому користувачеві. Але практика показала, що кінцевого користувача часто лякає безліч можливостей інструменту. Тим більше, що в більшості випадків вся потужність налаштувань кінцевому користувачеві і не потрібна – йому достатньо мати швидкий доступ до налаштування одного-двох параметрів звіту (наприклад, періоду та контрагента). Починаючи з певної версії платформи, у розробника звіту з'явилася можливість відзначити, які налаштування звіту доступні користувачеві. Робиться це за допомогою прапорця «Включати в налаштування користувача». Також у налаштувань звіту з'явився прапор «Режим відображення», який приймає одне з трьох значень:
  • Швидкий доступ. Налаштування буде виведено безпосередньо у верхню частину вікна звіту.
  • Звичайний. Налаштування буде доступне за допомогою кнопки «Налаштування».
  • Недоступне. Налаштування буде недоступне кінцевому користувачеві.


Режим відображення налаштування у design time


Відображення налаштувань у режимі «Швидкий доступ» під час виконання (під кнопкою «Сформувати»)

Плани розвитку

Один із пріоритетних напрямків у розвитку СКД для нас – спрощення налаштувань користувача. Наш досвід показує, що для частини кінцевих користувачів робота з налаштуваннями користувача - все ще серйозна праця. Ми це враховуємо та працюємо в цьому напрямку. Відповідно, і розробникам також простіше працювати з СКД, т.к. ми, як і раніше, хочемо надавати єдиний інструментарій налаштування звітів як для розробника, так і для кінцевого користувача.

Подібні публікації