1с сформировать отчет при открытии

Обновлено: 05.07.2024

Сначала получаем форму.

Если отчет хранится в базе тогда выполняем на клиенте код:

Далее получаем настройки:

Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.

Загружаем измененные настройки в компоновщик

Код выполняется на клиенте, сначала мы формируем структуру с необходимыми параметрами формы, а потом вызываем процедуру открытия. Часто используемые параметры в данном случае это:

Сначала получаем схему компоновки данных. Схема может быть получена из разных источников: общий макет, макет прикладного объекта, такого как справочник или отчет, макет из внешней обработки.

Код выполняется на сервере.

Получение локального макета

Получение макета произвольного отчета

Получение макета во внешней обработке

Получение макета из внешней обработки или отчета

Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:

Мы можем создать новый компоновщик настроек на основе схемы и получить настройки из него.

Мы можем получить настройки с отдельного компоновщика настроек, добавленного на произвольную форму.

И когда будем формировать

Далее программно заполняем параметры Компоновщика. Об этом подробно в разделе 4 .

Объявляем создаем необходимые объекты:

Создаем макет компоновки с помощью компоновщика макета:

Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:

Инициализируем процессор компоновки данных

Создаем процессор вывода:

Для вывода в таблицу значений используется другой процессор вывода:

Запускаем процесс вывода:

Теперь мы можем проводить нужные операции с полученными данными.

Если вывод в таблицу значений завершился ошибкой “Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений” значит настройки СКД не подходят для такой выгрузки, и нужно их изменить, об этом ниже.

При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.

Или если с добавлением нового параметра

Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.

Параметры

Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:

Добавление параметра делается следующим образом

Отбор

У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.

Структура

Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.

Программист может упростить работу пользователя по вводу параметров и отборов если есть некоторая закономерность в них, но они всё таки не фиксированы. К примеру, сравнительный отчет по продажам за этот месяц этого года и аналогичные месяца трех предыдущих годов.

Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).

Сформируем тестовый отчёт СКД, задав его параметр "Период" и отбор "Водитель" в обычном приложении с использованием обычных форм.

Для этого нам понадобится:

  1. Получить объект отчёта;
  2. Из объекта отчёта получить КомпоновщикНастроек СКД;
  3. При помощи вспомогательной процедуры "УстановитьПараметрСКД", в настройках СКД установить необходимые параметры отчёта;
  4. При помощи вспомогательной процедуры "УстановитьОтборСКД", в настройках СКД установить необходимые отборы отчёта;
  5. При помощи метода "ПолучитьФорму", объекта отчёта, получить форму отчёта;
  6. При помощи метода "СкомпоноватьРезультат", сформировать отчёт, в качестве первого параметра данного метода нужно указать элемент табличного поля формы отчёта, в котором отображается результат;
  7. Открыть форму отчёта.


Результат выполнения кода:


Сформируем тестовый отчёт СКД, задав его параметр "Период" и отбор "Водитель" в управляемом приложении с использованием управляемых форм.

Для этого нам понадобится:

  1. Получить форму отчёта;
  2. Из реквизита "Отчет", формы отчёта, получить КомпоновщикНастроек СКД;
  3. При помощи вспомогательной процедуры "УстановитьПользовательскийПараметрСКД", в настройках СКД установить необходимые параметры отчёта;
  4. При помощи вспомогательной процедуры "УстановитьПользовательскийОтборСКД", в настройках СКД установить необходимые отборы отчёта;
  5. Сформировать параметры формы;
  6. Открыть форму отчёта.

Результат выполнения кода:


Представленные реализации не претендуют на «истину в последней инстанции», безусловно данная задача может иметь и другие варианты реализации, например:

А ссылка ниже – краткое руководство по составным частям компоновщика настроек СКД и программной работе с ними:

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Для новых конфигураций на БСП, где вывод отчетов (в т.ч. внешних) реализован через общую форму "ФормаОтчета", а добавление кнопок отчетов на формы объектов через подключаемые команды и программную дорисовку элементов, такой подход, к сожалению, работать не будет. Зачем такие сложности? В пользовательских настройках варианта отчета уже можно указать все значения параметров и отборов. Для ссылочных параметров или полей нельзя корректно заполнить значения в Конфигураторе, но никто не мешает пользовательские настройки сделать в 1С:Предприятие через какую-нибудь консоль СКД, выгрузить настройки в файл и файл настроек уже загрузить в схему СКД в Конфигураторе. (3) Если речь способе программно открыть типовой отчет с произвольными отборами, хотелось бы подробностей в виде кода. Сами пользуетесь этим методом? ?
Я бы вместо установки значений параметров коде просто загрузил бы настройки сразу в схему компоновки данных. (8) какие заранее подготовленные настройки ты бы загрузил, если на входе постоянно разные отборы, а значит параметры? (9) В примере отборы прописаны в коде. Кто мешает установить эти отборы просто интерактивно? Столько плюсов за такую тривиальщину, разжёванную в куче руководств. И это притом, что автор совершенно не упоминает параметр формы "Отбор", и ничего не говорит о конфликте с возможно сохранёнными настройками, о тех прелестях, что могут поджидать в событиях самой открываемой формы, о фиксированных настройках.
Кусок примитивного кода, принятый "на ура". Если такое на ИС пользуется спросом, то очень грустно.
Кусок примитивного кода, принятый "на ура". Если такое на ИС пользуется спросом, то очень грустно.

Yashazz , согласитесь, люди имеют право на своё мнение, и если они добавляют эту публикацию к себе в закладки, значит находят её полезной для себя.


И это притом, что автор совершенно не упоминает параметр формы "Отбор"

Про параметр формы "Отбор" написано на ИТС, но параметр формы "Отбор", работает только на УФ. И к тому же отбор, заданный через этот параметр попадает в фиксированные настройки и никак не отображается в пользовательских.


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

Про остальные сложности, я доходчиво написал в резюме:


Представленные реализации не претендуют на «истину в последней инстанции», безусловно данная задача может иметь и другие варианты реализации

В конфигурации на ОФ мне понадобилось из одного нетипового отчёта СКД открывать обычную форму другого нетипового отчёта СКД, чтобы в ней сразу формировался отчёт, с параметрами первого отчёта.

Найти в ИТС тот самый "примитивный кусок кода" я не смог, и мне пришлось потратить определённое время на "изобретение велосипеда".

Чтобы в следующий раз не заниматься "изобретением велосипеда" столкнувшись с подобной задачей, я и решил написать эту статью.

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

В нужном месте добавляем кнопку вызова отчета, где пишем:

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Надо не по интернету бродить, а по ИТС и синтаксис-помощнику)
Как с помощью команды выполнить отчет с некоторыми параметрами?
Как программно запустить отчет, передав в него значения отбора? Светлый ум; Meson; armeec92; weissfeuer; Yashazz; Поручик; + 6 – 3 Ответить (0) Ваш код в управляемом приложении работать не будет. Кто-нибудь наткнётся, сделает по образцу, убедится в очередной раз "В интернете много решений, часть не работает" и всё заверте. SadrA; rpgshnik; user811769; dj_serega; VachKirp; JohnyDeath; orfos; + 7 – Ответить (3) Поддерживаю - не отработает данный блок при разделение на "клиент" и "сервер" Ну или Хрусталёву почитайте, или просто код типовой конфы посмотрите. (4) Yashazz, не подскажете, где в типовых конфигурациях можно посмотреть? Интересует механизм для управляемого приложения. Для управляемого приложения нужно видимо по предыдущим коментам ходить - это только для обычного, сам изучаю упр приложение.
К сожалению не осталось ссылки, но где то в предыдущей мой статье в коментах писали про встроенные механизмы ( как в 10.3 жмёшь свойства на форме и там где то настраиваешь - попробую поискаить статью снова Работает в УТ но только в толстом клиенте. Приходится выбирать режим запуска. Некошерно как-то (8) juricher, в управляемом отбор передаете в параметрах открываемой формы - и все. Читайте синтаксис-помощник - умные существа писали. Это называется: "Пока другие умничали и давали очень умные советы пришел мужик, взял молча молоток и вбил гвоздь".
Просто и практично.
Спасибо.

Как работает в упр. формах

(11) Круто сделал по вашему образцу все работает как надо Добрый вечер!
Подскажите, а как передать параметр в отчет если в СКД в типовом отчете он идёт как "АналитикаНоменклатуры.Номенклатура", типа отбор через "."
Пробовал создавать и структуру в структуре и через точку - не помогает, или ругается или пишет что не видит поле :( Все конечно жутко умные, но только в простых формах вам автоматически дядя Пушкин отчет не запустит. Поэтому нормальное решение. Правда, без расшифровок почему то формирует. Приходится ещё раз нажимать "Сформировать" (15) В методе "СкомпоноватьРезультат" нужно указать вторым параметром "тФорма.ДанныеРасшифровки", тогда будет работать расшифровка.
(17) Благодаря совету по расшифровкам, получилось именно то, что было нужно. Спасибо!

Просмотры 65257

Загрузки 0

Рейтинг 30

Создание 05.06.14 18:47

Обновление 05.06.14 18:47

№ Публикации 286563

Тип файла Нет файла

Конфигурация Конфигурации 1cv8

Операционная система Windows

Вид учета Не имеет значения

Доступ к файлу Бесплатно (free)

Код открыт Да

См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

В статье показывается простой метод реализации аналога оператора PIVOT в запросе 1С без использования соединений.

12.12.2020 4561 Eugen-S 23

Варианты применения СКД вне отчетов в отраслевых конфигурациях

Директор и ведущий разработчик компании «Арт Порт» Максим Артеменко выступил на митапе, посвященном практике применения СКД. Максим рассказал о вариантах применения механизма настроек СКД для решения нестандартных задач – визуального оформления, сегментирования данных и автоматического заполнения примечаний к документам.

18.11.2021 1279 drmaxart 0

Грабли на СКД

Наиболее частые проблемы, с которыми сталкиваются программисты 1С при разработке отчетов на СКД.

02.11.2021 3685 echo77 16

СКД: 5 советов, как сделать лучше

Несколько примеров решения задач с использованием разных подходов

27.10.2021 4479 Neti 19

27.01.2016 85840 Serginio 116

Что за ? в коде, или Секретный оператор в 1С

Инкремент, модуль и прочая магия, которая скрыта под символом "?"

21.10.2021 8372 SeiOkami 41

Программное создание отчета на СКД с расшифровкой (обычные формы)

Допустим, в конфигурации имеется отчет на СКД и нам нужно его формировать из другой формы, не связанной с ним. Казалось бы, все просто – можно взять из отчета схему, исполнить ее программно и вывести на форму того же отчета.

04.10.2021 1091 Neti 4

Программное открытие отчета СКД с параметрами и отбором

Периодически возникает задача открытия формы отчёта СКД уже со сформированным отчётом, с определёнными параметрами и отборами. В данной публикации рассматриваются способы сделать это как в обычном приложении, так и в управляемом.

07.08.2021 5347 Eugen-S 19

Звуковое управление в 1С 8.3 Промо

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021 7229 velemir 33

СКД: скрываем нужные группы (блоки) по требованию пользователя

Видимость блоков в определённой группе, регулируемая пользователем в отчёте СКД.

14.07.2021 2725 olja-ljaaa 7

Изменение расшифровки макета СКД до компоновки

Это не про работу с данными расшифровки. Это про изменение расшифровок полей ДО того, как СКД выполнилась. Быстрый способ сделать нужные расшифровки.

12.07.2021 2434 Yashazz 6

Чтоб в СКД по таблице значений был порядок!

Сортировка СКД и источник - таблица значений. Заметка.

28.06.2021 1364 Yashazz 0

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020 8963 comol 31

Формирование отчета СКД с расшифровкой из обработки

Формирование отчета СКД из обработки немного отличается от формирования из отчета.

27.04.2021 4238 John_d 14

Нестандартное использование СКД

Программист 1С в компании «БКС-технологии» Алексей Шиянов в ходе Infostart Meetup Novosibirsk продемонстрировал необычный способ использования СКД и сравнил результаты заполнения движений документа через СКД с классическим подходом к заполнению движений через запросы и циклы.

14.04.2021 4074 user1127305 11

Полезные примеры СКД, ч.2

Еще несколько примеров решения задач в СКД.

06.04.2021 10876 Neti 8

Использование программных перечислений, ч.1: строковые константы Промо

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016 41158 unichkin 74

Пример платежного календаря. СКД. Работает на любой платформе, без привязки к данным. Подробное описание действий

Отчет-пример, в котором на СКД рассмотрены принципы построения платежного календаря без привязки к данным и работающий на любой платформе. Подробно описаны этапы решения задачи. Тестирование проводилось на платформе 8.3.16.1814.

02.04.2021 1222 parshachello 2

Полезные примеры СКД, ч.1

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021 13585 Neti 21

Обзор полезных методов БСП 3.1.4

Библиотека стандартных подсистем (далее - БСП) является частью любой типовой конфигурации, поэтому умение применять готовые процедуры и функции повышает качество разработки и избавляет от написания лишнего кода. К сожалению, не у всех есть время и упорство овладеть всей документацией, поэтому я собрал воедино наиболее популярный функционал.

25.03.2021 41424 rayastar 51

Вспомогательные инструкции в коде 1С Промо

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018 36203 tormozit 106

Сравнение данных с февралем високосного года (проблема 29 февраля)

Думаю, в практике многим приходится неоднократно сталкиваться с необходимостью разработки отчёта типа LFL (like for like), сравнивающего аналогичные периоды разных лет, например, текущего выбранного периода с аналогичным периодом прошлого года. В новых конфигурациях такой отчёт есть в составе конфигурации (см. "Сравнение продаж аналогичных периодов"), а в старых обычно приходится добавлять. Если не учесть нюанс сравнения с февралём високосного года, данные в отчёте за прошлый период могут быть некорректными.

Читайте также: