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

25.01.2021 Новини

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

Розрізняють кілька видів наборів даних:

  • Запит;
  • Об'єкт;
  • Об'єднання.

Запит – це звичайний 1с-запит, тільки мова запитів трохи розширена. Для зручності можна використати конструктор запиту.

Об'єкт – зовнішній набір даних, наприклад, таблиця значень.

Об'єднання – об'єднання кількох наборів даних типів запит та об'єкт.

У цій статті ми коротко пробіжимося всіма вкладками конструктора схеми компонування даних. Набори даних На цій вкладці можна створити необмежену кількість наборів даних. Набір даних є джерелом отримання даних. Розрізняють кілька видів наборів: Запит; Об'єкт; Об'єднання. Запит – це звичайний 1с-запит, тільки мова запитів трохи розширена. Для зручності можна використати конструктор запиту. Об'єкт – зовнішній набір даних, наприклад, таблиця значень. Об'єднання – об'єднання кількох наборів даних типів запит та об'єкт. Зв'язки наборів даних На цій вкладці описуються зв'язки наборів даних. Тут можна вказати, які набори даних пов'язувати і за якими полями і з якими параметрами. Найголовніше, що потрібно запам'ятати: у схемі компонування даних при зв'язуванні наборів завжди використовується Ліва з'єднання! Обчислювані поля На цій вкладці можна створювати додаткові поля, які не описані на вкладці Набори даних. Як вирази для розрахунку можна використовувати мову виразів компонування даних, поля з основних наборів даних, і навіть функції не глобальних загальних модулів. Ресурси Ресурси – це підсумкові дані щодо угруповань. На вкладці можна призначити ресурсом поля з наборів даних, а також з полів, що обчислюються. Також для ресурсів вказується вираз, за ​​яким вони розраховуються, і можлива вказівка ​​угруповання за якою розраховуватиметься вираз для ресурсів. З значень ресурсів також розраховуються загальні підсумки звіту. Установки Параметри даних, як правило, використовуються в наборі даних запит. Усі параметри, описані в запиті, відображаються на вкладці Параметри. На цій вкладці можна вказати заголовок, доступні типи, доступні значення та деякі інші речі. Докладніше про параметри трохи пізніше. Макети За замовчуванням макет сформованого звіту автоматично генерується системою компонування даних. Однак у системі також є можливість розробнику самому оформляти окремі області звіту (полів, угруповань, ресурсів…). Усі макети окремих областей, створені на цій вкладці, прив'язані лише до поточного звіту. Вкладені схеми Вкладені схеми використовуються у випадках, коли дані одного звіту необхідно використовувати в іншому. Тобто ми "вбудовуємо" одну схему компонування даних в іншу, вказуючи зв'язок по загальному полю. Приклад використання вкладених схем можна переглянути у цій статті. Налаштування На цій вкладці розробник створює стандартні налаштуванняформування звіту. У верхній частині вікна задається ієрархічна структура. Структура формування звіту може складатися з таких елементів: Угруповання; Таблиця; Діаграма; Вкладена схема У нижній частині вікна задаються параметри для всього звіту та для кожного елемента структури звіту. Коротко у вкладках налаштувань: Вибрані поля – список полів, що виводяться у звіт; Відбір - всілякі відбори записів звіту; Порядок – сортування записів у звіті; Параметри даних – значення параметрів звіту; Користувальницькі поля- Додаткові поля звіту, що створюються користувачем; Умовне оформлення – задається умовне оформлення записів звіту; Інші налаштування – всілякі додаткові налаштуваннятакі як: заголовок звіту, макет оформлення, розташування полів тощо.

Вітання!
Сьогодні хочу описати тему, з якою без «аквалангу» не розберешся:);)

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

Наприклад, дуже рекомендую «Розробка складних звітів у «1С:Підприємстві 8.2». Система компонування даних», (якщо конкретніше, дивіться стор. 224, 267 і 473)

У СКД існує 2 види джерел даних: Запит, об'єкт та об'єднання (ця штука не в рахунок, вона не джерело даних, а обробник наявних). Див рис 1:


Отже, якщо із джерелом (набором) даних типу «Запит» нам більш-менш зрозуміло, як працювати, то щодо набору даних «Об'єкт» є труднощі.

Для початку опишу, що ми хочемо отримати на виході:

Звіт, користувач натиснув кнопку « Сформувати» та відобразився список номенклатури (див. рис. 2):

Так, я припустився однієї неточності, а саме: на знімку немає кнопки « Сформувати", але є кнопка " нове дійство»(трохи пізніше поясню, чому так вийшло;)

Так Так! Ще момент: весь цей список виводиться із набору даних «Об'єкт»:

Рішення:

  1. Створюємо зовнішній звіт;
  2. Додаємо макет СКД, назвемо його «Основна Схема Компанівки Даних»;
  3. Додаємо в нього набір даних «Об'єкт», призначаємо йому ім'я «Список номенклатури» (має бути так само, як і в рис. 3);
  4. У налаштуваннях звіту особливо не експериментуємо, нехай буде все просто (див. рис. 4)

Ок, половину справи зробили;

Тепер згенеруємо основну форму звіту (так, ще момент! Моя конфігурація працює на звичайному інтерфейсі, але думаю, на керованих формах ви знайдете рішення;) Отже, форма:

Тут і постає проблема! Якщо натиснути кнопку «сформувати» (рис. 5.), ми побачимо помилку!


Вирішенню цієї проблеми я і присвятив цю статтю!

Перехопити подію кнопки «Сформувати» не вдалося, тому вирішив скористатися милицею. Запустив конфігурацію в режимі налагодження і постарався знайти ту кнопку «сформувати».

Вставляв у формі процедуру "Сформувати", але в неї немає заходів, довелося перевизначити дію кнопки "сформувати" перед відкриттям форми:


На рис. 8 крім зміни дії форми наведено приклад запиту, його обробки та передачі згенерованих даних у СКД. Вивчимо його біліша уважно:

  1. Генеруємо вхідні дані для СКД;
  2. Ініціалізуємо СКД;
  3. Виводимо результат НА ФОРМУ (зверніть на це також увагу!).

Згадаймо схему взаємодії об'єктів системи компонування даних:

Схема компонування даних у зовнішньому звіті є як глобальний об'єкт у методі форми СхемаКомпонівкиДаних.До неї так само можна звернутися на ім'я, передавши його в метод ОтриматиМакет(див. мал. 8)

Основний шматок коду наведено нижче:

Запит = Новий Запит; Запрос.Текст = "ВИБРАТИ | Номенклатура. Найменування як Номенклатура | З | Довідник. Номенклатура ЯК Номенклатура"; НоменклатураСписок = Запрос.Выполнить().Выгрузить(); НабориДаних = Новий Структура("СписокНоменклатури", НоменклатураСписок); //СКД = ОтриматиМакет("ОсновнаСхемаКомпонуванняДаних"); СКД = СхемаКомпонівкиДаних; КомпМакет = новий КомпонувальникМакетаКомпонуванняДаних; макетКомп = КомпМакета.Выполнить(СКД, СКД.НастройкиЗа замовчуванням); ПроцесорКомпДанних = новий ПроцесорКомпонуванняДаних; ПроцесорКомпДаних.Ініціалізувати(макетКомп, НабориДаних); висновок = новий ПроцесорВиводуРезультатуКомпонуванняДанихВТабличнийДокумент; висновок.ВстановитиДокумент(ЕлементиФорми.Результат); висновок.Вивести(ПроцесорКомпДаних, істина);

Так! Ось ще приємний момент!

У даному прикладіЯк бачите (див. рис. 2), висновок здійснюється у форму, а не в табл. документ! І це дуже добре, адже ми можемо працювати з формою (програмно перехоплювати події елемента форми, робити всякі фішки з drag and drop тощо);

У табличному документі ми можемо просто вивести оброблені дані на екран і передати керування документом користувачеві і ми не можемо впливати на подальший процес редагування даного контенту!

Див. довідковій системі « Поле табличного документа «, а я лише наведу витяг з вбудованої документації системи 1с Підприємство 8.2:

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

Гаразд, як кажуть, успіхів у бою;)

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

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

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

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

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

Ставимо мету

  • Зробити копію звіту з минулого уроку.
  • Вивести ті самі дані у вигляді діаграми.
  • При цьому серіями (стовпцями, вісь Y) повинні бути продукти, а точками (вісь X) - клієнти. Значення стовпців (по осі Y) і буде кількість їжі, яку замовив даних клієнт.

Змінюємо копію минулого звіту

Робимо копію звіту з минулого уроку під ім'ям "Урок9" та відкриваємо цю копію у конфігураторі бази "Гастроном".

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

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

Тому відразу переходимо на закладку "Налаштування" та звертаємо нашу увагу на ліву колонку з варіантами звіту.

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

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

За умовчанням цей варіант завжди один і називається "Основним". Вся фішка в тому, що в режимі користувача можна перемикатися між цими варіантами.

І ось у нас зараз є основний варіант, у налаштуваннях якого зазначено – виводити дані у вигляді таблиці:

Давайте так перейменуємо цей варіант ( подвійним клацанням) та основного в "Таблиця":

Додаємо новий варіант звіту

Тепер за допомогою плюсика додамо ще один варіант (куди ми запхаємо налаштування виведення даних у вигляді діаграми):

Відразу назвемо цей варіант "Діаграма":

Налаштовуємо новий варіант звіту

Як бачите праворуч від цього варіанта (ми його виділили) порожньо, тобто немає жодних налаштувань. Створимо їх за допомогою нашої чарівної палички:

На цей раз виберемо тип звіту "Діаграма...":

Як поля для відображення виберемо "Кількість" (за аналогією з таблицею):

В якості серій (вісь Y) вкажемо поле "Їжа", а як точки (вісь X) - поле "Клієнти":

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

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

Ми бачимо таблицю... що таке? А річ у тому, що потрібно просто вибрати інший варіант звіту. Натискаємо на кнопку "Вибрати варіант..." та вибираємо варіант "Діаграма":

Діаграма готова

Ще раз формуємо звіт:

Чудово, яка краса

Еталонна обробка після виконання всіх кроків цього уроку

У висновку модуля

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

Якщо у вас у майбутньому ( я раджу робити це вже після закінчення всієї школи) виникне потреба у глибшому вивченні системи компонування даних - є чудова книга Е. Ю. Хрусталева "Розробка складних звітів в 1С: Підприємство 8".

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

Ми чудово попрацювали, настав час відпочити!

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

Щоб об'єднати два або більше набору даних у СКД, необхідно на закладці Набори данихпопередньо створити спеціальний набір даних - об'єднання


Отримуємо ось таку картину


І вже в цей створений об'єкт додаємо набори, які безпосередньо об'єднуватимуться. Давайте додамо два набори даних. Один із яких буде запит, а другий для різноманітності – об'єкт (зовнішнє джерело даних). Ось так:


Як приклад розглянемо поєднання наборів даних із залишками товарів.

У тому наборі, де використовуватимемо , вручну додаємо поля Товар, Кількістьта прописуємо ім'я об'єкта, що містить дані


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


Робимо найпростіший запит

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

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

Тепер звернемося безпосередньо до даних
У регістрі накопичення у мене зберігаються такі залишки товарів

а у зовнішньому джерелі даних ось така картина

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


В результаті виконання звіту з такими налаштуваннями СКД отримуємо таку таблицю

Як бачимо, Лампа, яка є в обох наборах даних, представлена ​​в результаті запиту двома рядками. Щоб згорнути їх в один рядок, необхідно трохи видозмінити структуру в налаштуваннях СКДі замість детальних записів зробити угруповання по полю Товар.


І тепер отримуємо результат без задвоєних рядків.

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

Відкриваємо модуль об'єкта та створюємо зумовлену процедуру ПриКомпонівціРезультату(ДокументРезультат, ДаніРозшифровки, СтандартнаОбробка)

Усередині цієї процедури збиратимемо дані та формуватимемо звіт.
У процедурі ПриКомпонівціРезультату відключаємо стандартну обробку. Стандартна Обробка = Брехня;
Потім формуємо таблицю значень довільним чином. Імена колонок таблиці значень повинні збігатися з майбутніми полями набору даних у СКД.


Наприклад додамо три рядки даних. Далі кроками створюємо висновок звіту.

  • Зі схеми отримуємо налаштування за замовчуванням.

  • У відповідну змінну надсилаємо дані про розшифрування.

  • Формуємо макет за допомогою компонувальника макету.

  • Передаємо в макет компонування схему, налаштування та дані розшифрування.

  • Виконуємо компонування за допомогою процесора компонування. Для цього виконуємо метод процесора компонування даних Ініціалізувати(). Як параметр передаємо макет компонування даних, зовнішні набори даних (тип: Структура, ключ структури повинен збігатися з ім'ям об'єкта в схемі компонування даних, значення - сформована таблиця значень), дані розшифровки.

  • Очищаємо поле табличного документа.

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

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

Додаємо ресурси, якщо це потрібно. За ними рахуватимуться підсумки. У нашому випадку це поля Кількість та Сума.

У закладці Налаштування за допомогою конструктора налаштувань формуємо варіант звіту за умовчанням

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


От і все. Досить просто, чи не так?

Звіт, що вийшов для прикладу, можна скачати