Выполнение внешней обработки в фоне с выводом прогресса. Максимум использования БСП

13.02.25

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

Статья, как выполнить код внешней обработки в фоне с подключением внешней обработки в справочник или через "Файл-Открыть". Для файловых и клиент-серверных баз.

Бесплатные

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

Наименование Скачано Бесплатно
Выполнение внешней обработки в фоне с выводом прогресса. Максимум использования БСП:
.epf 8,57Kb
286 Скачать бесплатно

Дисклеймер. Делаю больше себе шпаргалку на будущее, чтоб не воспроизводить все это руками, когда потребуется. Плюс все что находил тут так или иначе содержит какие-то костыли которые можно не использовать. А тут готовый вариант Ctrl+C Ctrl+V.

Нам потребуется внешняя обработка. Любая. 

В модуле объекта нам потребуется процедура или функция, которая будет выполнять нашу длительную операцию. Для примера сделал процедуру имитирующей длительную операцию на минуту.
 

 
 Процедура модуля объекта обработки с длительной операцией.


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

 
 Код кнопки ВыполнитьВФоне (без подключения в справочник дополнительных отчетов и обработок)

 

 
 Код кнопки ВыполнитьВФоне (С подключеннием обработки в справочник)


Разница  между двумя вариантами лишь в том, что через "Файл - открыть" через бсп будет всегда включен безопасный режим.
 

 
 Вспомогательные функции. 



Ну и пример процедуры ОписаниеОповещения после завершения нашей операции
 

 
 ОписаниеОповещения ПослеВыполненияОбработки



Обработка с двумя примерами в закрепе.


Все описанное тестировалось на БСП 3.1.10.х.

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.30.117

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

Внешнаяя обработка Выполнение в фоне БСП

См. также

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

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

15500 руб.

02.09.2020    202116    1114    410    

1021

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

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

8400 руб.

20.08.2024    35487    206    104    

195

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

22200 руб.

06.10.2023    23919    63    26    

92

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

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

16000 руб.

10.11.2023    16413    69    39    

88

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

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

9360 руб.

17.05.2024    34604    122    53    

165

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1641    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    107115    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RocKeR_13 1428 13.02.25 17:11 Сейчас в теме
"Никогда такого не было и вот опять")))
Al3x; Yellow_Cube; mrChOP93; qwinter; lone_mayson; +5 Ответить
2. user1401407 14.02.25 02:58 Сейчас в теме
(1) Тут автор применил более современный подход
7. RocKeR_13 1428 14.02.25 09:35 Сейчас в теме
8. kalyaka 1136 14.02.25 09:53 Сейчас в теме
(7) хотя суть осталась, но все же методы БСП уже поменялись
mrChOP93; d4rkmesa; +2 Ответить
9. RocKeR_13 1428 14.02.25 09:58 Сейчас в теме
(8) Ладно, уговорили: ВыполнитьВФоне заменили на ВыполнитьПроцедуру + добавили Асинх)
15. user1832003 60 17.02.25 02:08 Сейчас в теме
(7)
как минимум во всех 3х вариантах платные примеры, что, по моему мнению, полнейшая дичь. Это не уникальный или суперсложный контент чтобы продавать его, да еще и с пачкой костылей в придачу.

так же абсолютно во всех 3х примера есть куча бессмысленного текста(кода) не относящегося к теме вопроса
eeeio; prog1c_vl; mirokiro; so-lf; antistress; mrChOP93; +6 Ответить
13. alex_sayan 62 16.02.25 13:21 Сейчас в теме
(2) тут банальное использование возможностей БСП
45. so-lf 2 29.04.25 13:33 Сейчас в теме
(13) Банальное или нет, но Автор не за деньги а просто по доброте поделился знаниями для начинающих программистов. На сайте не все гуру есть и начинающие!!!Автор если ты это читаешь то здоровья тебе!!!
Димон; eeeio; prog1c_vl; Al3x; ochirul; +5 Ответить
11. user1832003 60 14.02.25 10:18 Сейчас в теме
(1) Делал чисто как шпаргалку для себя, т.к. хранить в "гугле" такие вещи проще.
41. elian 149 22.02.25 02:53 Сейчас в теме
(1) Таких статей куча. Да. Но... У всех какие-то свои косяки... у всех какие-то свои костыли... у всех какие-то свои подходы... у всех чего-то своего наверчено явно лишнего... и у всех по-своему некрасиво и нелаконично...

Да... И тут тоже самое!
3. PerlAmutor 160 14.02.25 06:23 Сейчас в теме
С временными файлами не все так просто. Надо учесть, что он может автоматически удалится платформой через 20 минут после создания. Я на это наткнулся когда у меня было много долгоиграющих фоновых заданий установленных на ночь. Чтобы исправить - сериализовал двоичные данные обработки в двоичные данные, перевел в base64 и таскаю через параметры записывая во временный файл прямо перед запуском нового фонового задания.
prog1c_vl; Al3x; mrChOP93; dsdred; BigB; +5 Ответить
4. user1832003 60 14.02.25 07:34 Сейчас в теме
(3) Не то чтобы может, а это прямо прописано в документации к методу ПолучитьИмяВременногоФайла()
mrChOP93; BigB; +2 Ответить
6. kalyaka 1136 14.02.25 09:29 Сейчас в теме
(4)
а это прямо прописано в документации
Если быть точнее, то в документации написано
Если файл не будет удален средствами встроенного языка, он будет удален платформой при следующем запуске.
Дополнительно в клиент-серверном варианте:
1. файлы, созданные во время работы сеанса, будут удалены в течение 20 минут после завершения сеанса.
2. (недоступно в режиме совместимости 8.3.16 и ниже) файлы, созданные во время серверного вызова, будут удалены через 20 минут после завершения этого вызова.
т.е. после завершения сеанса/серверного вызова
mirokiro; +1 Ответить
5. Xershi 1538 14.02.25 09:17 Сейчас в теме
Не плохо бы привести ссылку на ИТС, где всё разжевано и больше вариативности.
10. user1832003 60 14.02.25 10:17 Сейчас в теме
(5) если бы была ссылка на итс, то этой статьи как других по этой тематике бы не было
12. Xershi 1538 14.02.25 10:57 Сейчас в теме
(10) она есть, я пользовался. И даже в парочке таких статей писал, но тут автор выложил бесплатно файл, поэтому грех статью не закинуть!
14. user1832003 60 17.02.25 01:57 Сейчас в теме
(12) если находил то кинь. Вставлю в пост. Я не находил
18. Xershi 1538 17.02.25 13:52 Сейчас в теме
19. user1832003 60 17.02.25 17:40 Сейчас в теме
(18) так по ссылке описание длительных операций бсп для выполнния из конфигурации, а не из внешней обработки. Статья именно о внешней
21. Xershi 1538 17.02.25 17:47 Сейчас в теме
(19) принцип тот же. Я не говорил что на ИТС внешняя обработка. Я писал, что подходы к разработке описаны плюс расширены возможности работы с данными.
А внешняя обработка скорее всего есть в демке БСП. Но у меня свои наработки туда нет нужды лезть.
Да и в добавок весь текст и картинки это именно выполнение длительной операции на сервере.
22. user1832003 60 17.02.25 17:54 Сейчас в теме
(21) без всего текста не показать. Плюс для демонстрационной обработки нужен полный цикл.

А в самом методе мало того что нет описания которое обычно сверху, так и на итсе тоже ничего нет (именно про внешнюю обработку)
23. Xershi 1538 17.02.25 18:34 Сейчас в теме
(22) ты раскопал внешнюю обработку из демки БСП? Не понял про что ты.
24. user1832003 60 17.02.25 18:50 Сейчас в теме
(23) нет. я все писал сам с помощью гугла. Без полного цикла (просто запуск процедуры в фоне) не показать пример запуска в фоне для внешней обработки. А статьи по запуску в фоне именно внешней обработки на итсе нет. Ну а т.к. эта статья про запуск в фоне именно внешей обработки, то статья на итс по запуску в фоне (из конфигурации) здесь не нужна
43. Xershi 1538 12.03.25 00:52 Сейчас в теме
(24) на днях написал универсальную обработку, как раз будет пример сравнения.
Плюс куча фишек в догонку.
16. maksa2005 374 17.02.25 12:40 Сейчас в теме
попробовал 2 варианта. оба без вывода окна о фоновом выполнении
17. maksa2005 374 17.02.25 12:42 Сейчас в теме
оба действия выполняются на сервере и блокируют работаю пользователя.
20. user1832003 60 17.02.25 17:44 Сейчас в теме
(17) нужно больше инфы.
напиши конфу, релиз, платформу, тип клиента. Можешь скрин "о программе" кинуть

Статья для запуска в тонком клиенте УФ
25. maksa2005 374 17.02.25 19:41 Сейчас в теме
(20) вот
отбой. я проверял на толстом клиенте!
Прикрепленные файлы:
26. user1832003 60 17.02.25 19:46 Сейчас в теме
(25) не знаю че за конфа, но бухня 3.0.110....там бсп сильно старее чем 3.1.10. Там 3.1.7 или старше. На старых версиях не тестил. В общем покури общий модуль ДлительныеОперации Там должно быть. думаю не составит проблем это адаптировать
27. maksa2005 374 18.02.25 08:56 Сейчас в теме
(26) все получилось на тонком клиенте. странно. почему на толстом такое не отрабатывает. в плане индикации
28. user1832003 60 18.02.25 08:59 Сейчас в теме
(27) потому что толстый клиент почти = сервер по факту и все вычисления делаются на клиентской машине
29. maksa2005 374 18.02.25 08:59 Сейчас в теме
30. maksa2005 374 18.02.25 12:10 Сейчас в теме
(28) скажите а как получить результат сделанные на сервере? я про АдресРезультата
31. maksa2005 374 18.02.25 12:12 Сейчас в теме
(28) а отбой.
ПоместитьВоВременноеХранилище(Данные,Новый УникальныйИдентификатор);
34. user1832003 60 18.02.25 15:59 Сейчас в теме
(31) в адресе уже ест адрес. Нужно просто ПоместитьВоВременноеХранилище(Данные, АдресРезультата);

Я там заранее ложу ничего по адресу чтоб получить адрес
32. maksa2005 374 18.02.25 12:43 Сейчас в теме
все равно не понимаю
ОперацияНаМинуту(Параметры, АдресРезультата) Экспорт

Данные = ТекущаяДата;
ПоместитьВоВременноеХранилище(Данные,АдресРезультата);

АдресРезультата - уже есть, но после выполнения

Результат.АдресРезультата = пустое значение.
как получить его?
35. user1832003 60 18.02.25 16:01 Сейчас в теме
(32) Вообще адрес в таком случае нужен для функций. В примере процедура. По факту адрес там бесполезен, но иначе оно не работает, т.к. ранее через ДлительныеОперации.ВыполнитьВФоне() нужно было минимум 2 параметра, 1 из которых адрес
36. maksa2005 374 19.02.25 07:31 Сейчас в теме
(35) я вышел из ситуации по адресу, но с отчетом - встал в ступор(
37. user1832003 60 19.02.25 08:05 Сейчас в теме
(36) отчеты формируются по другому. Тут такой метод не подойдет. Щас в типовых конфигурациях подключенные отчеты они в фоне формируют. Можешь попробовать поотлаживать, полюбому найдешь. Там не должно быть сложно. А использовать отчеты через "файл-открыть" лютейшая дичь
38. maksa2005 374 19.02.25 08:06 Сейчас в теме
(37)
А использовать отчеты через "файл-открыть" лютейшая дичь

не понял...
39. user1832003 60 19.02.25 08:10 Сейчас в теме
(38) Отчеты как правило используются на постоянку. Если тебе нужен отчет на 1 раз, то делать его в фоне ради этого без подключения в справочник смысла особо не имеет (имхо).Да и внешние отчеты редко собираются долго. Обычно это вызвано криворукостью самого отчета.

В случае обработок же может понадобится сделать что-то объемное разово. Поэтому здесь выполнение в фоне без подключения в справочник имеет смысл.

кури в сторону ОтчетыСервер.ПодключитьСхему() и целом весь этот модуль
40. maksa2005 374 19.02.25 08:11 Сейчас в теме
33. maksa2005 374 18.02.25 15:26 Сейчас в теме
Работает только для дополнительных обработок, если указать как внешний отчет - не видит саму экспортную процедуру!
42. eudgan 03.03.25 13:52 Сейчас в теме
Спасибо, помогли разобраться. Просто и понятно
44. zurg 12.03.25 09:32 Сейчас в теме
Создаем макет двоичных данных куда помещаем саму обработку и используем в параметрах выполнения. ДополнительнаяОбработкаСсылка не нужна!

ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ДвоичныеДанные = ОбработкаОбъект.ПолучитьМакет("ВнешняяОбработкаДД");

ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияФункции(УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ВнешнийОтчетОбработка = ДвоичныеДанные;

СтруктураФоновогоЗадания = ДлительныеОперации.ВыполнитьФункцию ...
Оставьте свое сообщение