Контакти

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

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

Набір даних – запит.

  1. На відміну від звичайного запиту, у запиті для компонування даних відсутня пропозиція ПІДСУМКИ. Натомість підсумки формуються на закладці «Ресурси». На цій закладці вибираються поля, за якими необхідно отримати підсумкові вирази. А на закладці «Налаштування» вказується в якому розрізі будуть отримуватися підсумки, тобто тут створюються відповідні угруповання та розраховуються за ними ресурси. Докладніше про це можна прочитати у статті.
  2. Наступний момент стосується настроювання відборів. Існує дві можливості виконання.
    1. Через налаштування варіанта звіту. Це можна зробити на вкладці "Параметри" - "Відбір". Якщо використовуємо цей варіант, він є найбільш гнучким, оскільки можна вказувати різні види порівнянь, які може обирати навіть користувач. Крім того, при використанні цього варіанту умови фільтрації накладаються в самому запиті. Якщо звіт базується на пакетному запиті з використанням тимчасових таблиць, відбір буде впливати на всі таблиці пакетного запиту, де зустрічається поле відбору.
    2. На рівні запиту. Якщо використовуємо запит, то, крім операції, рівність не зможемо використовувати нічого.
      Винятком є ​​випадок, коли нам потрібно виконати жорстку фільтрацію даних за деяким значенням. Допустимо, за значенням перерахування. У вкладці "Параметри" можемо задати умову. Якщо увімкнемо прапор «Обмеження доступності», то користувач не зможе скасувати цю умову.
  3. Сортування теж правильніше накладати на рівні налаштувань варіанта звіту.
    1. Якщо в запиті вказати деяке поле сортування, то користувач у налаштуванні свого варіанта звіту вкаже інше поле, тоді наше налаштування, виконане на рівні запиту, матиме нижчий пріоритет. Спочатку буде виконуватися сортування, встановлене користувачем у налаштуванні варіанта звіту. Тому, якщо потрібно виставити сортування за промовчанням, то використовуємо налаштування варіанта звіту в Конфігураторі.
    2. А якщо необхідно налаштувати «жорстке» сортування у звіті, щоб користувач не зміг його змінити? Тоді встановлюємо сортування на рівні запиту, а на закладці "Набори даних" налаштуємо обмеження поля. Виділимо потрібний набір даних і в колонці "Обмеження поля" - "Упорядкування" поставимо галочку.

Параметри віртуальних таблиць.

  • Побудова віртуальних таблиць регістрів бухгалтерії, регістрів накопичення, регістрів даних залежить від заданої дати. Це може бути як одна дата, так і інтервал, наприклад, для таблиці залишків і оборотів. СКД створена так, якщо в основі звіту лежить віртуальна таблиця, тоді необхідно дати користувачеві вибрати, за який інтервал або на яку дату формувати звіт. СКД автоматично додає необхідні параметри періоду до схеми компонування.
  • Якщо у запиті вибрано віртуальну таблицю залишків або віртуальну таблицю регістрів відомостей, тоді автоматично додається параметр під назвою «Період».
  • Якщо в запиті вибрано віртуальну таблицю залишків і обертів або віртуальну таблицю обертів, автоматично додаються параметри «ПочатокПеріоду» та «КінецьПеріоду».
  • Що потрібно зробити, якщо потрібно отримати залишки на кінець періоду? Існує два способи:
    1. Заходимо на вкладку "Параметри" і в параметрі "Період" у колонці "Вирази" пишемо наступне:
      &КінецьПеріоду. Також увімкнемо прапор «Обмеження доступності».
    2. Повністю позбавляємося параметра «Період» і замінюємо його на параметр «КінецьПеріоду». Налаштуємо необов'язковий параметр віртуальної таблиці:
      • Заходимо на вкладку «Набори даних», натискаємо на кнопку «Конструктор запиту…».
      • На вкладці «Компонування даних» у верхньому лівому куті натискаємо кнопку для виклику діалогу «Параметри віртуальної таблиці» (це сіра квадратна кнопка із зображенням шестерні на тлі маленької таблиці).
      • У полі «Період» діалогового вікна пишемо: КонецПериода.
      • Тепер у тексті запиту набору даних у параметрах віртуальної таблиці цей параметр з'явиться в оточенні фігурних дужок:
Регістр Накопичення. ЗалишкиТоварів. Залишки(((&КінецьПеріоду) ), ) ЯК Залишки

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

Розширення мови запитів.

Це спеціальні інструкції, які поміщені у фігурні дужки у тексті запиту. У цих інструкціях вказуються поля та параметри, якими можна оперувати під час налаштування варіанта звіту. Дані з фігурних дужок будуть присутні у схемі компонування навіть у тому випадку, коли прапорець «Автозаповнення» вимкнено.

Коли створюється набір даних запиту, за замовчуванням відбувається автоматичне заповнення доступних полів схеми компонування даних на підставі створеного запиту (прапорець «Автозаповнення» встановлено на закладці «Набори даних»).

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

    1. Стають доступними поля зі списку вибірки запиту та їх дочірні поля.
    2. Якщо вибираємо з регістру накопичення, навіть не включені у запит поля регістру стають доступними у полях компонування даних. Але ці поля доступні лише для відбору (в умовних виразах)
      і їх не можна буде використовувати як вихідні поля.
    3. Параметри віртуальних таблиць «Період», «ПочатокПеріоду» та «КінецьПеріоду» стають
      доступними для відбору.
    4. Якщо в тексті запиту вказана «жорстка» умова, цей параметр також буде доданий на закладці «Параметри».

Якщо прапорець «Автозаповнення» знято, поля схеми компонування даних очищаються, але залишаються параметри, укладені у фігурні дужки в тексті запиту.

Як самостійно заповнити поля схеми компонування даних?

Знімаємо прапорець "Автозаповнення" на закладці "Набори даних".

Натискаємо на кнопку "Конструктор запиту ...". Сформуємо наступний запит:

ВИБРАТИ Залишки. Номенклатура ЯК Номенклатура, Залишки. Кількість ЯК Кількість РегістрНакопичення. ЗалишкиТоварів. Залишки(((&КінецьПеріоду) ), ) ЯК Залишки

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

Тепер на вкладці «Компонування даних» вибираємо закладку «Поля». Тут задаємо поля вибірки, які
будуть представлені у схемі компонування.

Поле "І.." означає, що будуть включені у вибірку дочірні записи
полів складного типу, таких як довідники та документи тощо. Якщо поле , таке як число, то поставити прапор у полі «І..» буде неможливо.

Виберемо два поля «Номенклатура» та «Кількість». Для поля "Номенклатура" встановимо прапор "І..",
щоб вибиралися дочірні записи. Вийде наступний запит:

ВИБРАТИ Залишки. Номенклатура ЯК Номенклатура, Залишки. Кількість ЯК Кількість (ВИБРАТИ Номенклатура. * , Кількість) Регістр Накопичення. ЗалишкиТоварів. Залишки(((&КінецьПеріоду) ), ) ЯК Залишки

У новому запиті у фігурних дужках з'явилася ще одна секція ВИБРАТИ — це текст розширення, який вказує на поля, які будуть доступні в компонуванні. Поле "Номенклатура.*" вказує, що буде доступне поле "Номенклатура" та її дочірні реквізити, такі як "Код", "Найменування" і т.п. Отже, ми заповнили поля компонування самостійно.

Але зараз ми не можемо використовувати поля за умов компонування. Якщо зайти на закладку «Налаштування» та вибрати вкладку «Відбір», то не можна встановити умови на жодне поле, яке ми вибрали в попередньому пункті. Чому?

Накладення умов на параметри віртуальної таблиці також потрібно вказувати на вкладці "Компонування даних" Конструктора запиту. У верхньому лівому куті натискаємо кнопку для виклику діалогу «Параметри віртуальної таблиці»
(це сіра квадратна кнопка із зображенням шестерні на тлі маленької таблиці). У полі "Умова" діалогового вікна пишемо: Номенклатура. Тепер у тексті запиту набору даних у параметрах віртуальної таблиці цей параметр "Номенклатура" з'явиться в оточенні фігурних дужок:

Регістр Накопичення. ЗалишкиТоварів. Залишки(((&КінецьПеріоду) ), ((Номенклатура) )) ЯК Залишки

У звичайній мові запитів вказівка ​​параметра має такий вигляд: Номенклатура = &Номенклатура. Але розширення мови запитів це записується по-іншому. Вказується лише назва поля. Тут ми не вказуємо операцію рівності, нерівності чи ієрархії, оскільки користувач сам вибиратиме потрібну операцію у налаштуваннях.

На вкладці «Компонування даних» Конструктора запиту ми бачимо ще одну закладку, «Умови». Вона потрібна, щоб вказати у розширенні мови запитів умови на пропозицію ДЕ. Виберемо поле «Кількість». Тепер це поле доступне в умовах на закладці "Налаштування" - "Відбір". На тексті запиту з'явилися нові рядки, укладені у фігурні дужки.

(ДЕ Залишки. Кількість)

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

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

А в цій серії уроків ми розглянемо функції мови виразів СКД, поговоримо про особливості роботи системи компонування, а також розберемо основні параметри полів компонування. Успіхів у розумінні цього нелегкого матеріалу!

Наприкінці статті хочу порадити вам безкоштовний від Сотнікова Анатолія. Це курс досвідченого програміста. Він на окремій базі покаже вам, як робити звіти в СКД. Вам тільки потрібно уважно слухати та запам'ятовувати! Ви отримаєте відповіді на такі запитання:
  • Як створити простий звіт у вигляді списку?
  • Навіщо потрібні колонки Поле, Шлях і Заголовок на закладці «Поля»?
  • Які існують обмеження для полів компонування?
  • Як правильно налаштовувати ролі?
  • Які існують ролі для полів компонування?
  • Де знайти закладку компонування даних у запиті?
  • Як настроювати параметри в СКД?
  • Далі ще цікавіше...
Напевно, чи не варто самому намагатися борознити інтернет у пошуках потрібної інформації? Тим більше, все готове для застосування. Тільки почніть! Всі подробиці про те, що є у безкоштовних відеоуроках на сторінці автора softmaker http://www..pngsoftmaker 2015-12-07 14:51:12 2018-06-12 13:14:13 Система компонування даних (СКД). Частина 2.

Увага! Перед вами ознайомлювальна версія уроку, матеріали якого можуть бути неповними.

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

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

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

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

Створюємо новий звіт

Відкриваємо базу "Гастроном" у конфігураторі та через головне меню створюємо новий звіт:

Вид документа - "Зовнішній звіт":

У формі нового звіту вказуємо ім'я "Урок6" та натискаємо кнопку "Відкрити схему компонування даних":

Залишаємо ім'я схеми за замовчуванням:

Додаємо перший набір даних

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

Викликаємо конструктор запиту:

Вказуємо таблицю "Клієнти" та поля, які потрібно отримати із запиту:

Додаємо другий набір даних

Додаємо другий набір даних:

Виділяємо його (НаборДаних2) і знову викликаємо конструктор запиту:

Вказуємо таблицю довідника "Їжа" та поля, які потрібно отримати із запиту:

Вийшов такий текст запиту:

Зверніть увагу, що у нас зараз у звіті є два набори даних: НаборДанних1 і НаборДанных2. У кожного свій текст запиту та свої дані.

Робимо імена наочнішими

Для наочності, давайте перейменуємо НаборДаних1 на Клієнти, а НаборДаних2 на Їжа.

Зробіть це подвійним клацанням по кожному з наборів:

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

На даний момент у набору "Клієнти" наступні поля: "Найменування" та "Улюблена Колір", а у набору "Їжа": "Найменування" та "Колір".

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

Виділяємо набір "Клієнти" та змінюємо імена полів так:

Потім виділяємо набір "Їжа" та міняємо імена полів так:

Викликаємо конструктор налаштувань

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

Тип звіту - "Список...":

Вибираємо поля для звіту з обох наборів:

Чому так важливо було змінити імена полів? На етапі налаштувань компонування даних ми бачимо з яких наборів ці поля. Бачимо лише їхні імена.

Перевіряємо звіт

Зберігаємо звіт та формуємо в режимі користувача:

Ага. Добре, але не зовсім. Відбулося так зване перехресне з'єднання двох наборів (вам це має бути добре знайоме зі з'єднань у запитах, які ми вивчали в попередніх модулях). Кожному запису з таблиці "Клієнти" зіставлено запис із таблиці "Їжа".

Але нам потрібно з усіх цих записів залишити тільки ті у яких поле "Улюблений Квіт Клієнта" дорівнює полю "Квіти Єди":

Здійснюємо зв'язок двох наборів даних

Для цього здійснимо зв'язок двох наборів даних (Клієнти та Їжа) по полях Улюблений Квіт Клієнта та Колір Єди.

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

Налаштовуємо параметри як на малюнку нижче:

Зроблю пояснення.

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

Вираз джерело.Вказуємо тут вираз або просто поле із набору даних джерела (ми тут вказали поле Улюблений Квіт Клієнта з набору Клієнти).

Вираз приймача.Вказуємо тут вираз або просто поле із набору даних приймача (ми тут вказали поле Колір Їди з набору Їжа).

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

Збережемо звіт і запустимо в режимі користувача:

Чудово!

Зроблю пояснення про поле Умова зв'язку", Про яке так часто б'ють свої списи програмісти-початківці.

Умова зв'язку – це допоміжне поле. Туди можна писати висловлювання за участю полів тільки з набору даних, вказаних у джерелі зв'язку.

У цьому випадку для всіх рядків із джерела зв'язку перед здійсненням зв'язку перевірятиметься цей вираз (умова зв'язку). І якщо цей вислів дорівнює ІСТИНА, то буде спроба встановити зв'язки цього рядка з рядками з приймача зв'язку. Якщо ж вираз одно Брехня, то таких спроб робити не буде.

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

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

Запит = Новий Запит(
"ВИБРАТИ
| Номенклатура,
| Таблиця.

| &ТЗ ЯК Таблиця");
Запит.ВстановитиПараметр("ТЗ", ТЗ);

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

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

Деталізуємо завдання до прикладу. Є типовий звіт Розрахункові відомості організації зміни ЗиК 8. Необхідно щоб види розрахунків у звіті групувалися за деяким групам. Відповідності ВидРозрахунку-Група зберігаються у зовнішній таблиці значень. Для підвантаження її в основну схему компанування даних створюємо "набір даних об'єкта" з ім'ям "Групи" (рисунок 2). Зв'язок провадимо з "набором даних запит" - "Нарахування" за видом розрахунку (рисунок 3). У "наборі даних запит" - "Нарахування" значиться інформація щодо груп, видаляємо всі входження. Після цього, на вкладці "Параметри" ми можемо використовувати поле "Група", значення якого підвантажується із зовнішнього джерела даних (рисунок 4). До функцій формування звіту доповнюємо підвантаження зовнішніх даних.

Функція Сформувати Звіт (Результат = Невизначено, Дані Розшифровки = Невизначено, Висновок у Форму Звіту = Істина) Експорт

//отримання або формування шуканої таблиці значень "Групи" та її запис до однойменної змінної

ЗовнішніДані = Новий Структура();//створюємо та заповнюємо структуру зовнішніх даних
ЗовнішніДані.Вставити(Групи);

ЗначенняПанелікористувача = Типові Звіти.
НалаштуванняЗа замовчуванням = КомпонувальникНалаштувань.ОтриматиНалаштування();
ТиповіЗвіти.ОтриматиЗастосовануНалаштування(ЦейОб'єкт);
Типові Звіти.
КомпонувальникНалаштувань.ЗавантажитиНалаштування(НалаштуванняЗа замовчуванням);
Повернення Результат;

КінецьФункції

Якщо б ми робили звіт "з нуля", то код запуску формування звіту виглядав би наступним чином:

ЗовнішніНабориДаних = Новий Структура;
ЗовнішніНабориДаних.Вставити("Групи", Групи); //Групи - шукана таблиця значень
СхемаКомпонуванняДаних = ОтриматиМакет("ОсновнаСхемаКомпонуванняДаних"); //наш макет із схемою команівки даних
Параметри = СхемаКомпонуванняДаних.ПараметриЗа замовчуванням;
КомпонувальникМакета = Новий КомпонувальникМакетаКомпонуванняДаних;
МакетКомпонування = КомпонувальникМакета.Виконати(СхемаКомпонуванняДаних, Налаштування);
ПроцесорКомпонуванняДаних = Новий ПроцесорКомпонуванняДаних;
ПроцесорКомпонівкиДаних.Ініціалізувати(МакетКомпонівки, ЗовнішніНабориДаних);
ТабДок = Новий Табличний Документ;
ПроцесорВиводу = Новий ПроцесорВиводуРезультатуКомпонуванняДанихВТабличнийДокумент;
ПроцесорВиводу.ВстановитиДокумент(ТабДок);
Процесор Виводу.Вивести(ПроцесорКомпонівкиДаних);

Прочитано 9660 раз



Сподобалася стаття? Поділіться їй