1с как программно открыть отчет скд с параметрами
1С СКД. Программный запуск отчета с открытием и настройкой.
Одна из задач автоматизации — ускорение работы пользователя, что во многом достигается путем сокращения повторяющихся рутинных действий. У многих пользователей есть постоянные отчеты, для открытия которых они находят команду в меню, вводят отборы и параметры в открывшейся форме, нажимают «сформировать». В таких случаях разработчик 1С может создать команды программного запуска отчета с открытием и настройкой, что позволит сразу получить готовый отчет, а механизм системы компоновки данных, называемый в сокращении СКД, представляет ему для этого обширный инструментарий. В этой статье мы познакомимся с несколькими методами программного запуска отчета с открытием и различной настройкой, из которых каждый сможет выбрать наиболее подходящий.
Открытие формы отчета с помощью ПолучитьФорму и расширения формы отчета.
Сначала получаем форму.
Если отчет хранится в базе тогда выполняем на клиенте код:
Если нужен не «вариант по умолчанию»
Далее получаем настройки:
Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.
Загружаем измененные настройки в компоновщик
Открытие формы отчета с помощью ОткрытьФорму и расширения формы отчета.
Код выполняется на клиенте, сначала мы формируем структуру с необходимыми параметрами формы, а потом вызываем процедуру открытия. Часто используемые параметры в данном случае это:
Программный вывод СКД в табличный документ и таблицу значений.
Сначала получаем схему компоновки данных. Схема может быть получена из разных источников: общий макет, макет прикладного объекта, такого как справочник или отчет, макет из внешней обработки.
Код выполняется на сервере.
Получение локального макета
Получение макета произвольного отчета
Получение макета во внешней обработке
Получение макета из внешней обработки или отчета
Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:
Мы можем создать новый компоновщик настроек на основе схемы и получить настройки из него.
Мы можем получить настройки с отдельного компоновщика настроек, добавленного на произвольную форму.
И когда будем формировать
Объявляем создаем необходимые объекты:
Создаем макет компоновки с помощью компоновщика макета:
Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:
Инициализируем процессор компоновки данных
Создаем процессор вывода:
Для вывода в таблицу значений используется другой процессор вывода:
Запускаем процесс вывода:
Теперь мы можем проводить нужные операции с полученными данными.
Если вывод в таблицу значений завершился ошибкой “Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений” значит настройки СКД не подходят для такой выгрузки, и нужно их изменить, об этом ниже.
Возможности настройки Схемы Компоновки Данных и Компоновщика Настроек СКД при программном формировании.
При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.
Или если с добавлением нового параметра
Также при получении настроек можно выбрать не «настройки по умолчанию», а один из вариантов настроек.
Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.
Параметры
Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:
Добавление параметра делается следующим образом
Отбор
У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.
Этот код установит значение для отбора, а если такого отбора нет в настройках, то добавит. В случае если точно известно, есть или нет такой отбор — то код можно упростить.
Структура
Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.
Резюме
Система компоновки данных была создана для ускорения разработки отчетов и упрощения работы пользователей. Программные изменения помогают усилить этот эффект. Программист может создать выгрузки и по сути свои отчеты на основании типовых отчетов. К примеру, выгрузка заработной платы в управленческую базу. Структура базы может сильно изменена, но поля в отчете “Расчетная ведомость Т-51” будут называться так же, и сам отчет вряд ли переименуется. Да и если что-то переименуется — выгрузку исправить будет очень просто.
Программист может упростить работу пользователя по вводу параметров и отборов если есть некоторая закономерность в них, но они всё таки не фиксированы. К примеру, сравнительный отчет по продажам за этот месяц этого года и аналогичные месяца трех предыдущих годов.
Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).
Как программно открыть внешний отчет из «Дополнительных отчетов и обработок» и передать параметры (при помощи БСП)
Дано: конфигурация на платформе 1С 8.3. В «Дополнительные отчеты и обработки» загружен отчет или обработка.
Задача: открыть данный отчет/обработку программно в коде, например, по кнопке.
В моем случае нужно было на одну из форм документа в конфигурации добавить кнопку, которая бы открывала внешний отчет (зарегистрированный через дополнительные отчеты и обработки), с фильтром по данному документу. Чтобы не изменять саму конфигурацию, было сделано расширение к данному документу (расширения здесь не будут рассматриваться, данное описание только в качестве примера), которое добавляло кнопку на форму документа.
Далее рассмотрим пример кода, который будет срабатывать по нажатию кнопки и открывать внешний отчет.
В сети интернет много примеров, как открыть внешний отчет или обработку. Большинство из них содержит код загрузки из файла, если это внешний файл отчета.
Итак, в БСП есть модуль работы со справочником «Дополнительные отчеты и обработки» (ДополнительныеОтчетыИОбработки), в частности есть процедура открытия отчета и функция подключения внешнего отчета:
Вторая вызывается из первой, но ее также можно вызвать и отдельно (что и будет сделано ниже).
Один из вариантов использовать первую процедуру, но он мне не понравился из-за необходимости излишних действий, чтобы заполнить переменную ВыполняемаяКоманда, а также тем, что передать параметры в отчет можно только массивом (ОбъектыНазначения).
Поэтому решила использовать функцию под номером 2, что подключает нужный отчет/обработку, который затем можно открыть по имени, возвращаемому данной функцией.
Итак, сам пример (полный код):
Пример формы с кнопками, вызывающими эти процедуры:
Скачать пример данной формы можно в файлах к статье.
Если вызывается отчет на СКД, то нужно создать для него типовую форму. Подробнее см. Как добавить типовую форму для СКД
Примечание: создавать форму, как оказалось, не обязательно. См. вариант вызова СКД без создания формы
Чтобы сработал код передачи параметров в СКД (ОткрытьВнешнийОтчетСКДсПараметром), нужно в модуле объекта СКД добавить код, принимающий эти параметры:
Скачать пример данного СКД отчета можно в файлах к статье.
Также пробовала передавать параметры в СКД вот так:
Однако возникала ошибка: Невозможно применить фиксированные настройки. Пересекаются элементы отбора.
Поэтому выше описала, как передавала параметры отбора в отчет СКД при котором такой ошибки не было.
Обработки тестировались на демо-базе БСП версии 2.4.5.
См. также Как в СКД по щелчку на какой-либо ячейке в отчете получить значение другой ячейки (там применяется метод, описанный в статье для вызова внешней обработки в качестве расшифровки ячейки СКД)
Как открыть в тонком клиенте 1С отчет СКД, заполнить параметры и сформировать? [решено]
Есть структура: контрагент, договор и так далее.
Нужно по кнопке на клиенте вызвать отчет на СКД, где настройки автоматически заполняются по этой структуре и автоматически же выполняется формирование отчета.
1С:Предприятие 8.3 (8.3.5.1517), тонкий клиент.
во, у меня оно вот так:
на форме (контекст клиента):
на той-же форме но на сервере:
Как правильно передать параметр в запрос через СКД?
Как правильно передать параметр в запрос через СКД?
с параметрами надо сразу по гуиду искать
У меня заработало вот так:
На форме, из которой вызываю отчет:
На форме отчета СКД (там надо создать форму ФормаОтчета):
Для вызова не отдельного отчета, а его варианта, схема работы изменяется так:
Сергей milanse рекомендует такой способ вызова (иначе на клиенте могут не выставляться галочки при не созданных настройках, также тут есть вызов вложенной схемы:
Соответственно, в отчете (надо создать форму под названием ФормаОтчета):
Вроде бы расширение отчета поставляет в параметры упр формы такие параметры.
Отбор:
Расширение управляемой формы для отчета (Managed form extension for reports)
Отбор (Filter)
Описание:
Тип: Структура.
Используется для установки отбора и параметров данных в форме отчета.
Ключ элемента структуры содержит имя поля или параметра, на которое нужно наложить отбор.
Значение элемента структуры содержит значение отбора.
Если имеется параметр системы компоновки данных с именем, соответствующим имени ключа структуры, то значение будет установлено ему. Если параметра нет, но есть поле, то будет добавлен отбор на это поле.
Если значение является массивом или списком значений с не одним элементом, то отбор будет применяться с видом сравнения ВСписке.
Думается, достаточно просто передать эти параметры.
Если нет вложенных схем, то на форме отчета обработка выглядит так:
Программное открытие отчета
=== Для толстого клиента ===
1. В любой встроенный в конфигурацию Отчет, у которого не назначена основная схема компоновки данных (можно обойтись без назначения макета основной схемой, но тогда чуть больше кода писать) добавляем конструкторами а) Макет типа СхемаКомпоновкиДанных и б) форму Отчета
Форму не назначаем отчету. Форма нужна только для работы события расшифровки элемента формы Результат. В примере расшифровка документа ПоступлениеТоваровУслуг
Это все правки в Отчете, т.е. в будущем его будет очень легко обновлять, если это типовая конфигурация.
2. В том месте, где нужно вызвать Отчет программно, пишем вызов отчета.
За счет того, что макет СКД назначен как основная схема СКД сразу после создания отчета можно вызывать КомпоновщикНастроек.ПолучитьНастройки(), наложить нужные отборы.
Чтобы работала расшифровка передаем ДанныеРасшифровкиКомпоновкиДанных в СкомпоноватьРезультат(). При этом создавать/править для простых случаев процедуру ПриКомпоновкеРезультата() в модуле объекта Отчета не требуется.
Пример будет работать в любой конфигурации на любой версии платформы 8.3.* под толстым клиентом.
=== Для тонкого клиента ===
Для полноты описания: в случае с УФ под тонкого клиента действия намного проще.
Создаем как раньше конструкторами а) макет СКД и назначаем его как основную схему компоновки данных, б) управляемую форму отчета. При создании Формы отчета достаточно только поставить галочку использовать СКД.
С формой больше в принципе можно ничего не делать. В месте вызова отчета пишется следующий код, где Отбор накладывается по желанию на нужные поля.
Расшифровка будет работать для выбранных полей ссылочного типа.
Заполнение отбора СКД программно и запуск отчета на СКД программно
Итак, есть в конфигурации отчет на СКД (у меня это ОтчетПоЦенамИНаценкам)
В нужном месте добавляем кнопку вызова отчета, где пишем:
Специальные предложения
Как работает в упр. формах
Обновление 05.06.14 18:47
См. также
Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо
В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.
12.12.2020 3357 Eugen-S 20
Программное открытие отчета СКД с параметрами и отбором
Периодически возникает задача открытия формы отчёта СКД уже со сформированным отчётом, с определёнными параметрами и отборами. В данной публикации рассматриваются способы сделать это как в обычном приложении, так и в управляемом.
07.08.2021 3156 Eugen-S 19
СКД: скрываем нужные группы (блоки) по требованию пользователя
Видимость блоков в определённой группе, регулируемая пользователем в отчёте СКД.
14.07.2021 2171 olja-ljaaa 7
Изменение расшифровки макета СКД до компоновки
Это не про работу с данными расшифровки. Это про изменение расшифровок полей ДО того, как СКД выполнилась. Быстрый способ сделать нужные расшифровки.
12.07.2021 2217 Yashazz 6
Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)
27.01.2016 84456 Serginio 113
Чтоб в СКД по таблице значений был порядок!
28.06.2021 1218 Yashazz 0
Формирование отчета СКД с расшифровкой из обработки
Формирование отчета СКД из обработки немного отличается от формирования из отчета.
27.04.2021 3982 John_d 14
Нестандартное использование СКД
Программист 1С в компании «БКС-технологии» Алексей Шиянов в ходе Infostart Meetup Novosibirsk продемонстрировал необычный способ использования СКД и сравнил результаты заполнения движений документа через СКД с классическим подходом к заполнению движений через запросы и циклы.
14.04.2021 3637 user1127305 11
Звуковое управление в 1С 8.3 Промо
В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.
16.03.2021 6571 velemir 31
Полезные примеры СКД, ч.2
Еще несколько примеров решения задач в СКД.
06.04.2021 9449 Neti 8
Пример платежного календаря. СКД. Работает на любой платформе, без привязки к данным. Подробное описание действий
Отчет-пример, в котором на СКД рассмотрены принципы построения платежного календаря без привязки к данным и работающий на любой платформе. Подробно описаны этапы решения задачи. Тестирование проводилось на платформе 8.3.16.1814.
02.04.2021 1083 parshachello 2
Неочевидные нюансы записи управляемой формы
Разберем несколько нюансов записи управляемой формы.
02.04.2021 10695 SeiOkami 52
Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо
28.12.2020 8235 comol 31
Полезные примеры СКД, ч.1
Подборка видео по решению различных задач в отчетах на СКД.
30.03.2021 12000 Neti 19
Обзор полезных методов БСП 3.1.4
25.03.2021 33960 rayastar 49
Сравнение данных с февралем високосного года (проблема 29 февраля)
Думаю, в практике многим приходится неоднократно сталкиваться с необходимостью разработки отчёта типа LFL (like for like), сравнивающего аналогичные периоды разных лет, например, текущего выбранного периода с аналогичным периодом прошлого года. В новых конфигурациях такой отчёт есть в составе конфигурации (см. «Сравнение продаж аналогичных периодов»), а в старых обычно приходится добавлять. Если не учесть нюанс сравнения с февралём високосного года, данные в отчёте за прошлый период могут быть некорректными.
02.03.2021 404 aleksei_adamov 4










