Формирование внешнего отчета в фоне

07.08.19

Разработка - Инструментарий разработчика

Принципы формирования внешнего отчета в фоновом режиме. Используя стандартную форму отчета БСП или свою. Вопросы передачи параметров от команды внешнего отчета в фоновом процессе к ожидающей завершения процедуре формы.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Формирование внешнего отчета в фоне:
.erf 17,15Kb ver:1.0.1
40 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

При доработке типового отчета БП, возник вопрос, как сделать формирование внешнего отчета в фоне. Результатами исследования захотелось поделится. Использовалась БСП версии 3.0.1.

Сразу стоит отметить, что отчет просто открытый через Файл - Открыть запустить в фоне нельзя (если только он до этого не был добавлен в справочник ДополнительныеОтчетыИОбработки)

Для дополнительного отчета (добавленного в справочник ДополнительныеОтчетыИОбработки) есть два варианта реализации:

1. Использование типовой формы отчета из БСП.

Для этого не указываем (и не создаем) основную форму отчета. Условием формирования в фоновым режиме для формы отчета БСП является его отключенный "Безопасный режим". Т.е. в функции СведенияОВнешнейОбработке указываем 

ПараметрыРегистрации.БезопасныйРежим = Ложь; // !!! Что бы выполнялось в фоне на сервере через БСП форму отчета

Есть прекрасная статья по этому варианту Подсистема "Варианты отчетов". Используете ли Вы ее правильно? Там "Безопасный режим" в примере сброшен, написано про фоновое формирование, но не описана взаимосвязь.

2. Использование своей формы отчета

Она будет нестандартной для пользователя. В ней нужно реализовывать запуск отчета в фоновом процессе самому. Но можно запустить в фоне и безопасный отчет. 

Есть статья Пример формирования внешнего отчета программно и в фоновом режиме, реализующая этот вариант. Но в ней есть ряд недоработок. Используется устаревшая процедура ДлительныеОперации.ЗапуститьВыполнениеВФоне.

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

Привожу свою реализацию формирования отчета со своей формой в фоновом режиме. Первый вариант (с формой БСП) легко реализуем и так. Достаточно отключить основную форму от отчета.

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

Все действия и поведение системы подробно описаны в комментариях. Понять в контексте кода проще, чем абстрактные описания.

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

 
 Модуль объекта
 
 Модуль формы

Update: исправил работу с данными расшифровки по замечанию в комментарии (добавлена пара строчек в модуль формы и реквизит формы ДанныеРасшифровки). 

Вступайте в нашу телеграмм-группу Инфостарт

Фоновый Отчет БСП

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, формы интерфейса 8.5. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    71328    365    170    

317

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    261758    1460    421    

1170

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    38836    107    46    

122

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    57748    116    32    

128

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

6000 руб.

25.02.2026    4095    13    1    

18

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    25703    94    46    

102

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Программист Бизнес-аналитик Руководитель проекта 1С 8.3 Платные (руб)

В крупных внедрениях 1С типовая почти всегда дополнена расширениями, а конфигуратор показывает их раздельно. «Поиск ссылок на объект» в ERP — минуты ожидания, и даже после него неясно: типовое поведение, дополнение из расширения или переопределённый обработчик. Analyzer 1C — веб-инструмент, который парсит выгрузку (основную плюс все расширения) и собирает единый граф знаний в ArangoDB. Любой межсущностный запрос — за доли секунды. Внутри: — Сквозные пометки «Доб.» / «Заимств.» / переопределения во всём UI — Импакт-анализ через подписки, регламентные задания и переопределения — Анализ запросов BSL: кто читает и пишет объект — модули, формы, СКД — Роли: матрица «роль × объект × право», RLS, программные РольДоступна, PRIV — Конструктор профилей, граф функций, обработчики обновления, XDTO, функциональные опции — Мгновенный поиск по конфигурации Разворачивается за минуту через Docker, без интернета. Любая 1С:Предприятие 8.3+.

12200 руб.

17.04.2026    6786    29    35    

44

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    53575    185    63    

217
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ids79 8837 08.08.19 08:55 Сейчас в теме
А как быть с данными расшифровки. Вы уверены, что они будут корректно заполнены при фоновом формировании с использованием своей формы?
4. partizand 145 08.08.19 11:26 Сейчас в теме
(1) Если вы про механизмы СКД, то не уверен. Пока не понимаю СКД досконально.
Процедуры формирования брал с упомянутой мной статьи Пример формирования внешнего отчета программно и в фоновом режиме. Насколько я понимаю механизм работы идентичный.
Беглым ознакомлением нашёл эту статью: https://infostart.ru/public/542223/
По итогу, необходимо будет добавить событие обработки расшифровки. Данные расшифровки возвращаются из фоновой процедуры.
Попробую допилить реализацию. Спасибо за замечание.
10. ids79 8837 08.08.19 22:07 Сейчас в теме
(4)Вообще, данные расшифровки, это реквизит формы отчета, который связан с одноименным параметром формы. Во время стандартной компоновки в него передается адрес на временное хранилище с данными расшифровки. В этом случае, обработка расшифровки работает автоматически. В вашем случае, очень может быть, что придется обрабатывать событие расшифровки табличного поля самостоятельно.
11. partizand 145 09.08.19 11:30 Сейчас в теме
(10) Исправил по вашим замечаниям. Так работает лучше.
Самостоятельно обрабатывать не надо, просто по окончании программного формирования помещаем ДанныеРасшифровки в хранилище.

Спасибо. После экспериментов, удаляя лишние реквизиты, удалил и ДанныеРасшифровки, не понимая зачем они :)
12. ids79 8837 09.08.19 13:21 Сейчас в теме
2. dsdred 4239 08.08.19 09:15 Сейчас в теме
Бегло посмотрел, такое ощущение что чего то не хватает...

П.С. Проще с БСП с ФормыОтчета выдрать один раз и сохранить шаблон.
3. partizand 145 08.08.19 10:49 Сейчас в теме
(2) Может чего-то и не хватает, могу ошибаться

На мой взгляд брать код из формы БСП некорректно. Форма БСП использует внутренний интерфейс БСП, который меняется без предупреждения (он не для вас по сути). Ну и понимание никто не отменял.
5. dsdred 4239 08.08.19 12:12 Сейчас в теме
(3)Я имею ввиду выдрать ту часть что завязана на Длительных операциях (ФЗ)
У меня выдран и я часто просто копи паст делаю.

Сначала делаю код, тестирую, а потом добавляю часть из готового шаблона которая его в ФЗ запускает.
Если в базе БСП нет тогда пишу запуск фонового задания не через длительные операции.
8. partizand 145 08.08.19 13:49 Сейчас в теме
(5) Да, можно и так, согласен
Если у меня есть время, почему бы и не поковыряться :)
По моему опыту копипаст обычно все-равно заканчивается разбором и пониманием, т.к. часто перестаёт работать.
Длительные операции БСП в принципе не сложны для реализации, всего 3 функции. Пример в описании самой процедуры ДлительныеОперации.ВыполнитьВФоне
6. bugagashenka 205 08.08.19 12:26 Сейчас в теме
А чем на кнопке Сформитровать не понравилось "ЭтаФорма.СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый);" ?
7. bugagashenka 205 08.08.19 12:29 Сейчас в теме
Если честно, я не совсем понял статью.
1. Не создать форму внешнего отчета, будет открыта форма отчета конфигурации или платформенная, которая формирует отчет в фоне.
2. Для чего здесь нужна БСП, если все формируется одной строкой?
9. partizand 145 08.08.19 14:11 Сейчас в теме
(7)
1. Форма отчета БСП не всегда формирует в фоне. Причины я нашёл в коде БСПшной формы и описал в статье, т.к. этот момент нигде не освещён (или я не нашёл). Вдруг кому пригодится.
Платформенная форма, насколько я понимаю, в фоне отчет не формирует. Или ошибаюсь?
2. Например, расшифровка не работает. И не известны условия формирования в фоне (для меня).

БСП не обязательно, конечно. Отчёт писался для реальной базы БП, где присутствует БСП и используется БСПшная форма отёта (см. п.1). Вариант 2 в статье родился из дальнейшего интереса к теме, что бы закрыть вопрос фонового формирования отчётов. И заодно так же будут работать фоновые обработки.

Было бы интересно сформулировать 3 вариант фонового формирования отчёта в вашем примере (одной строкой), я бы добавил в статью. Если вы имеете в виду создание своей формы и формирование по СкомпоноватьРезультат(РежимКомпоновкиРезультата.Фоновый), то будем считать это реализованным в варианте 2 :)
13. 7OH 70 15.11.19 12:41 Сейчас в теме
Искал причину формирования отчетов, которые не в составе конфигурации, не в фоне.
Оказалось банально - в общей форме отчета

ФоновоеЗаданиеЗапустить(ФормированиеПриОткрытии, НастройкиОтчета.Внешний Или НастройкиОтчета.Безопасный);


убрать лишнюю проверку (расширением, своей формой, непосредственно - на своё усмотрение).
Светлый ум; +1 Ответить
15. Светлый ум 506 21.01.22 13:19 Сейчас в теме
(13)
ФоновоеЗаданиеЗапустить(ФормированиеПриОткрытии, НастройкиОтчета.Внешний Или НастройкиОтчета.Безопасный);

+ 1, в копилку
14. user621646_elena-2509 24.12.19 20:44 Сейчас в теме
partizand, Скопировала приведенный Вами код в новый внешний отчет, но почему-то зависает на формировании и ничего не выводит.
16. JinAir7460 08.12.23 10:48 Сейчас в теме
спасибо огромное!
17. AntoShiK86 37 01.10.24 05:25 Сейчас в теме
Здравствуйте. В УПП будет работать?
18. partizand 145 05.10.24 13:39 Сейчас в теме
(17) Здравствуйте. Это функционал БСП. Кажется в УПП БСП версии 1. А в статье про БСП 2.
19. check2 400 26.01.26 13:39 Сейчас в теме
Спасибо за работоспособный пример! Буду рекомендовать как образец. Скажите, нет ли у вас ссылки / методики как отлаживать подобный отчёты, если именно в фоне что то идёт не так как задумывалось? Я имею в виду как поймать отладчиком фоновое задание которое исполняет код из модуля объекта. Как то давно я с этим помаялась прилично, отладить легко когда и сервер и клиент на одном хосте, пляски с бубном начинаются, когда сервер и клиент - это разные среды. Там, помню на сервере нужно как то подпихивать файл, и его же открывать на клиенте через расшаренную папку, но вот детали не помню... Если есть ссылка на такую методику, то буду благодарна.
Ещё раз спасибо!
20. partizand 145 26.01.26 21:17 Сейчас в теме
(19) эту статью я писал давно. На заре захода в 1с. И уже все смутно помню )
Мне кажется сейчас я бы писал по другому...
К сожалению не подскажу.
Если вы про отладку пдключаемых обработок, то суть вы описали верно. Нужна папка видимая с сервера и клиента. Я даже расширение писал для отладки. Но сам таким давно не пользуюсь.
21. check2 400 26.01.26 21:23 Сейчас в теме
(20)
Нужна папка видимая с сервера и клиента.

Точно, и ещё вспомнила, что если сервер и клиент в разных средах сервер Linux и клиент Windows - вообще не судьба, так как пути будут разные, даже если папка будет одна... Я в итоге помню базу документооборота выгрузила из ПГ в мелкософт и только тогда получилось отладить. Спасибо!
Для отправки сообщения требуется регистрация/авторизация