1с скд программное формирование отчета параметры
Как программно сформировать отчет в 1С СКД (8.3 и 8.2)
Как известно, с помощью Системы Компоновки Данных (СКД) в 1С 8.3 и 8.2 можно быстро построить отчет практически любой сложности. Простота и скорость создания отчета достигается удобным визуальным конструктором, который обеспечивает необходимый результат без написания кода. Но все же бывает необходимость «вмешаться» в работу конструктора и программно сформировать отчет.
Когда может потребоваться программный вывод отчета в 1С на СКД:
Предлагаю на примере рассмотреть, как можно сформировать отчет на СКД и заполнить его параметры программно.
Создадим новый внешний отчет. Напишем простейший запрос на примере 1С Бухгалтерия, который выводит начальный и конечный остатки и обороты по счету:
Вот, как выглядит отчет в стандартном виде:
Теперь сформируем его программно. Для этого нам нужно добавить Основную Форму:
Добавим команду и кнопку на форме:
В действиях команды пропишем следующий код (читать код на сайте достаточно трудно, поэтому рекомендуем скачать уже готовый пример отчета и посмотреть код в нем):
1С СКД. Программный запуск отчета с открытием и настройкой.
Одна из задач автоматизации — ускорение работы пользователя, что во многом достигается путем сокращения повторяющихся рутинных действий. У многих пользователей есть постоянные отчеты, для открытия которых они находят команду в меню, вводят отборы и параметры в открывшейся форме, нажимают «сформировать». В таких случаях разработчик 1С может создать команды программного запуска отчета с открытием и настройкой, что позволит сразу получить готовый отчет, а механизм системы компоновки данных, называемый в сокращении СКД, представляет ему для этого обширный инструментарий. В этой статье мы познакомимся с несколькими методами программного запуска отчета с открытием и различной настройкой, из которых каждый сможет выбрать наиболее подходящий.
Открытие формы отчета с помощью ПолучитьФорму и расширения формы отчета.
Сначала получаем форму.
Если отчет хранится в базе тогда выполняем на клиенте код:
Если нужен не «вариант по умолчанию»
Далее получаем настройки:
Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.
Загружаем измененные настройки в компоновщик
Открытие формы отчета с помощью ОткрытьФорму и расширения формы отчета.
Код выполняется на клиенте, сначала мы формируем структуру с необходимыми параметрами формы, а потом вызываем процедуру открытия. Часто используемые параметры в данном случае это:
Программный вывод СКД в табличный документ и таблицу значений.
Сначала получаем схему компоновки данных. Схема может быть получена из разных источников: общий макет, макет прикладного объекта, такого как справочник или отчет, макет из внешней обработки.
Код выполняется на сервере.
Получение локального макета
Получение макета произвольного отчета
Получение макета во внешней обработке
Получение макета из внешней обработки или отчета
Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:
Мы можем создать новый компоновщик настроек на основе схемы и получить настройки из него.
Мы можем получить настройки с отдельного компоновщика настроек, добавленного на произвольную форму.
И когда будем формировать
Объявляем создаем необходимые объекты:
Создаем макет компоновки с помощью компоновщика макета:
Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:
Инициализируем процессор компоновки данных
Создаем процессор вывода:
Для вывода в таблицу значений используется другой процессор вывода:
Запускаем процесс вывода:
Теперь мы можем проводить нужные операции с полученными данными.
Если вывод в таблицу значений завершился ошибкой “Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений” значит настройки СКД не подходят для такой выгрузки, и нужно их изменить, об этом ниже.
Возможности настройки Схемы Компоновки Данных и Компоновщика Настроек СКД при программном формировании.
При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.
Или если с добавлением нового параметра
Также при получении настроек можно выбрать не «настройки по умолчанию», а один из вариантов настроек.
Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.
Параметры
Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:
Добавление параметра делается следующим образом
Отбор
У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.
Этот код установит значение для отбора, а если такого отбора нет в настройках, то добавит. В случае если точно известно, есть или нет такой отбор — то код можно упростить.
Структура
Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.
Резюме
Система компоновки данных была создана для ускорения разработки отчетов и упрощения работы пользователей. Программные изменения помогают усилить этот эффект. Программист может создать выгрузки и по сути свои отчеты на основании типовых отчетов. К примеру, выгрузка заработной платы в управленческую базу. Структура базы может сильно изменена, но поля в отчете “Расчетная ведомость Т-51” будут называться так же, и сам отчет вряд ли переименуется. Да и если что-то переименуется — выгрузку исправить будет очень просто.
Программист может упростить работу пользователя по вводу параметров и отборов если есть некоторая закономерность в них, но они всё таки не фиксированы. К примеру, сравнительный отчет по продажам за этот месяц этого года и аналогичные месяца трех предыдущих годов.
Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).
[СКД] Программное создание схемы компоновки данных
Создаем отчет и без создания макета ОсновнаяСхемаКомпоновкиДанных. Переходим в модуль отчета и создаем Процедуру ПриКомпоновкеРезультата, СтандартнаяОбработка = Ложь.
1. Добавляем Источник данных.
2. Добавляем поля набора данных
3. Добавляем группировки данных
4. Добавляем авто поля в группировки.
5. Добавляем выбранные поля
6. Добавляем отбор (ВНаличииОстаток > 500)
7. Добавляем Сортировку
8. Добавляем оформление (Выделять желтым поля ВНаличииОстаток и Номенклатура, если ВНаличииОстаток > 1000).
В результате получаем отчет.
Полный текст процедуры.
Тестировал на платформе 1С:Предприятие 8.3 (8.3.15.1747).
Специальные предложения
Вызов после выполнения компоновщика макета и до инициализации процессора.
Пытался освоить коллекцию элементов параметров скд, пока не получается
А это код построения макета из произвольного запроса.
«лучшая статья». «уважуха». «круто».
я чего-то не понимаю.
Во-первых, таких статей килотонны, во-вторых, программная работа с СКД разжёвана в десятках примеров, и это далеко не лучший, в третьих, есть книги Хрусталёвой. Тем не менее восторги и плюсики прям кучно. И пример-то тут весьма кастомизированный, и даже самое основное не полно объяснено.
Я ещё могу понять, когда статьи Пермитина плюсят, там действительно грамотное изложение. Но этот набор кода.
Нет, я действительно не понимаю.
Обновление 15.01.20 10:01
См. также
Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо
В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.
12.12.2020 3357 Eugen-S 20
Полезные примеры СКД, ч.2
Еще несколько примеров решения задач в СКД.
06.04.2021 9454 Neti 8
Неочевидные нюансы записи управляемой формы
Разберем несколько нюансов записи управляемой формы.
02.04.2021 10698 SeiOkami 52
Полезные примеры СКД, ч.1
Подборка видео по решению различных задач в отчетах на СКД.
30.03.2021 12002 Neti 19
Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)
27.01.2016 84458 Serginio 113
Обзор полезных методов БСП 3.1.4
25.03.2021 33962 rayastar 49
Звуковое управление в 1С 8.3
В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.
16.03.2021 6571 velemir 31
Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions
28.12.2020 8237 comol 31
Использование программных перечислений, ч.1: строковые константы Промо
Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?
10.12.2016 40574 unichkin 74
Базовые вещи БСП, которые облегчат жизнь программисту 1С
В данной публикации я опишу полезные процедуры и функции модуля общего назначения библиотеки стандартных подсистем, обязательные к использованию любым программистом 1С.
30.08.2020 18646 quazare 34
[Общий модуль] Динамическое формирование интерфейса
Версия 2.0.0.1 + добавил GitHub
28.08.2020 11442 rpgshnik 72
Форма выбора (подбор) в управляемых формах
Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.
08.05.2020 67986 user5300 19
Вспомогательные инструкции в коде 1С Промо
Помогаем редактору кода 1С помогать нам писать и анализировать код.
15.10.2018 35419 tormozit 106
Универсальный отчет для сравнения записей регистров накопления между базами по COM-соединению, для обычных форм
Отчет сравнивает данные регистра накопления двух баз по COM-соединению. Работает на обычных формах.
19.03.2020 4062 11 байт 3
Программная работа с настройками СКД
Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.
27.01.2020 60302 ids79 26
Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения
Собрал информацию о событиях/подписках/расширениях в одном месте.
30.12.2019 32742 kuzyara 38
Оформление и рефакторинг сложных логических выражений Промо
В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.
20.09.2012 82283 tormozit 131
30 задач. Странных и не очень
30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.
02.12.2019 23010 YPermitin 62
Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)
Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:
22.11.2019 11740 Sibars 19
Полезные процедуры и функции для программиста
Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.
07.10.2019 38534 HostHost 41
Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо
Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.
11.07.2007 53552 tormozit 51
Таблица значений. Нюансы
Обзор некоторых аспектов использования общеизвестного инструмента 1С.
01.10.2019 50732 Yashazz 56
СКД. Отчеты с картинками
Решение популярных кейсов с картинками в отчетах на СКД.
25.09.2019 31335 YPermitin 57
О программе Postman для тестирования API и для чего она нужна 1С-нику
Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.
24.09.2019 19244 budidich 31
Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо
Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки
10.09.2017 50326 tormozit 74
СКД не только для отчетов
СКД позволяет получать данные из информационной базы не только для вывода в отчеты, но и для других целей. Пример такого использования рассматривается в настоящей статье.
18.09.2019 21562 YPermitin 36
[Шпаргалка] Программное создание элементов формы
Программное создание практически всех популярных элементов формы.
06.09.2019 94125 rpgshnik 72
Агрегатные функции СКД, о которых мало кто знает
Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.
05.09.2019 73501 ids79 55
Выгрузка документа по условию Промо
Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий. А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.
25.04.2019 17681 m-rv 3
Регистры бухгалтерии. Общая информация
Общая информация о внутреннем устройстве регистров бухгалтерии.
05.09.2019 43993 YPermitin 25
Три костыля. Сказ про фокусы в коде
Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.
03.09.2019 29729 YPermitin 81
Отслеживание выполнения фонового задания
Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.
17.08.2019 43657 ids79 19
Как прикрутить ГУИД к регистру сведений Промо
. и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.
16.04.2019 22892 m-rv 17
Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив
Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.
08.08.2019 141793 ids79 75
Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.
02.08.2019 57509 avalakh 26
Разбираемся с параметрами редактирования СКД
Связь по типу, Параметры выбора, Связи параметров выбора
31.07.2019 39208 json 15
Как сделать запрос на изменение данных Промо
В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.
01.06.2018 36040 m-rv 23
Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.
26.07.2019 99778 ids79 16
Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «<…>», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.
17.07.2019 46755 ids79 27
Регистры сведений. За кулисами
Небольшие заметки по внутреннему устройству регистров сведений.
09.07.2019 32950 YPermitin 14
Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо
Отчетность в 1С: Система Компоновки Данных (СКД), идея и архитектура
Одна из самых важных областей бизнес-софта – это отчетность. От того, насколько легко настроить под меняющиеся потребности бизнеса (и законодательства) существующий отчет или сделать новый, может зависеть (причем не в переносном смысле!) судьба бизнеса, будь то отчет для налоговой инспекции или диаграмма зависимости спроса на товары от сезона и других факторов. Мощная и гибкая система отчетности, позволяющая легко извлечь из системы нужные данные, представить их в доступном для понимания виде, позволяющая конечному пользователю перенастроить стандартный отчет так, чтобы увидеть данные в новом свете – это идеал, к которому должна стремиться каждая бизнес-система.
В платформе «1С:Предприятие» за построение отчётов отвечает механизм под названием «Система компоновки данных» (сокращенно СКД). В этой статье мы постараемся дать краткое описание идеи и архитектуры механизма СКД и его возможностей.
СКД – это механизм, основанный на декларативном описании отчетов. СКД предназначен для построения отчетов и для вывода информации, имеющей сложную структуру. Кстати, помимо разработки отчетов механизм СКД также используется в «1С:Предприятии» в динамическом списке, средстве показа списочной информации с богатой функциональностью (показ плоских и иерархических списков, условное оформление строк, группировки и т.п.).
Немного истории
В самой первой версии платформы «1С:Предприятие 8», версии 8.0, отчеты делались так:
Одной из идей, легших в основу СКД, была гибкость и настраиваемость отчетов, причем доступная как разработчику, так и конечному пользователю. В идеале хотелось бы дать доступ конечному пользователю к тому же набору инструментов для дизайна отчета, что и разработчику. Логично было бы сделать единый набор инструментов, доступный всем. Ну а раз инструменты предполагают участие конечного пользователя – значит, нужно использование программирования в них убрать до минимума (лучше всего – устранить совсем), и по максимуму использовать визуальные настройки.
Постановка задачи
Задача перед командой разработки стояла такая – сделать систему создания отчетов, основанную не на алгоритмическом (т.е. через написание кода), а на декларативном подходе к созданию отчетов. И мы считаем, что задачу успешно решили. По нашему опыту, около 80% требуемой отчетности может быть реализована с помощью СКД без единой строчки кода (за исключением написания формул вычисляемых полей), по большей части — через визуальные настройки.
Разработка первой версии СКД заняла около 5 человеко-лет.
Два языка
В создании отчетов задействованы два языка. Один – язык запросов, используемый для выборки данных. Второй – язык выражений компоновки данных, предназначен для записи выражений, используемых в различных частях системы, например, в настройках компоновки данных, для описания выражений пользовательских полей.
Язык запросов
Язык запросов основан на SQL и легко осваивается знающими SQL. Пример запроса:
Легко видеть аналоги стандартных для SQL-запроса секций — SELECT, FROM, GROUP BY, ORDER BY.
При этом язык запросов содержит значительное количество расширений, ориентированных на отражение специфики финансово-экономических задач и на максимальное сокращение усилий по разработке прикладных решений:
Есть также специальные расширения языка запросов для СКД. Расширение осуществляется при помощи специальных синтаксических инструкций, заключаемых в фигурные скобки и помещаемых непосредственно в текст запроса. С помощью расширений разработчик определяет, какие операции конечный пользователь сможет проводить, настраивая отчет.
Создание простого отчета на СКД
Какова технология создания отчета СКД:
— Написать запрос 1С в СКД, который обеспечивает получение данных
— Указать СКД роль полей (вычисляемые поля, ресурсы)
— Ввести настройки СКД по умолчанию.
Пользователю остается возможность изменить множество настроек по своему желанию.
СКД имеет значительное преимущество как для пользователя, так и для программиста:
— Программист – избавляет от написания программы для выполнения отчета и настроек
— Пользователь – получает значительный доступ к настройкам отчета.
Во всех новых конфигурациях 1С все отчеты будут использованы только на СКД 1С.
Создание отчета.
Создается новый отчет. Создадим новую схему СКД по кнопке Открыть схему компоновки данных.
Создание запроса для отчета.
Источников данных для СКД 1С может быть множество. Чтобы использовать, например, два отдельных запроса – добавьте сначала «Набор данных – объединение», а потом несколько запросов. В нашем примере мы будем использовать запрос.
Запрос строится с помощью Конструктора запроса. Работа с конструктором запроса в СКД ничем не отличается от обычной.
В результате формирования запроса, СКД создаст список доступных к использованию полей и заполнит им по умолчанию наименования. Наименование можно изменить.
Настройки СКД.
Построение виртуальных таблиц регистров бухгалтерии, регистров накопления, регистров сведений зависит от заданной даты. СКД создана так, что если в основе отчета лежит виртуальная таблица, тогда необходимо дать пользователю выбрать, за какой интервал или на какую дату формировать отчёт. Если в запросе выбрана виртуальная таблица остатков или виртуальная таблица регистров сведений, тогда СКД автоматически добавляет параметр с названием «Период».
Основная настройка производится на закладке Настройки.
Воспользуемся Конструктором настроек. Выведем данные в список.
Выберем нужные поля.
Группировка. Выберем группировку по номенклатуре.
Сортировка по полю Номенклатура по возрастанию.
Результат настройки СКД выглядит следующим образом.
На вложенной закладке “Параметры” для параметра “Период” установим флаг “Включать в пользовательские настройки”. После выполнения данной настройки параметры будут отображаться в основой форме отчета.
Формирование СКД.
Откроем отчет в 1С:Предприятие. Зададим нужный период и сформируем отчет.
































