Исполняем метод внешней обработки в фоновом задании и выводим лог сообщений

02.04.25

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

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

Скачать файл

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

Наименование Бесплатно
Пример исполнения метода внешней обработки в фоне:
.epf 8,66Kb
46
46 Скачать бесплатно
Исполняем метод внешней обработки в фоновом задании и выводим лог сообщений. Вариант с ОбщегоНазначения.ВыполнитьВБезопасномРежиме:
.epf 8,44Kb
0
0 Скачать бесплатно

На первый взгляд делов-то - подключить внешнюю обработку и вызвать метод в фоне.

Сложность в том, что функция ФоновыеЗадания.Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>) требует в первом параметре указать имя процедуры, доступной отовсюду. А его такого нету.

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

// Собственно ради этой процедуры разработка и затеяна
ИмяФайлаНаСервере = ПолучитьИмяВременногоФайла("epf");
ДанныеФайла = ПолучитьИзВременногоХранилища(АрдесФайлаНаСервере);
ДанныеФайла.Записать(ИмяФайлаНаСервере) ;
 
ИмяОбработки = "ПримерВнешнейОбработкиВФоне";
ИмяМетода = "ТестовыйМетод";

ПараметрыВыполнения = Новый Структура("КоличествоЦиклов,ВызыватьИсключение",
									КоличествоЦиклов, ВызыватьИсключение);
									
ПараметрыВыполнитьПроцедуруМодуляОбъектаОбработки = Новый Структура;
ПараметрыВыполнитьПроцедуруМодуляОбъектаОбработки.Вставить("БезопасныйРежим", Ложь);
ПараметрыВыполнитьПроцедуруМодуляОбъектаОбработки.Вставить("ЭтоВнешняяОбработка", Истина);
ПараметрыВыполнитьПроцедуруМодуляОбъектаОбработки.Вставить("ИмяОбработки", ИмяФайлаНаСервере); // ИмяОбработки);
ПараметрыВыполнитьПроцедуруМодуляОбъектаОбработки.Вставить("ИмяМетода", ИмяМетода);
ПараметрыВыполнитьПроцедуруМодуляОбъектаОбработки.Вставить("ПараметрыВыполнения", ПараметрыВыполнения);

МассивПараметры = Новый Массив;
МассивПараметры.Добавить(ПараметрыВыполнитьПроцедуруМодуляОбъектаОбработки);
МассивПараметры.Добавить(Неопределено); // АдресХранилища - непонятный второй параметр функции ВыполнитьПроцедуруМодуляОбъектаОбработки

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

Оказалось, что БСП 3.1.10.226 ждёт не имя подключённой внешней обработки, а имя файла.

Процедура в модуле обработки должна принимать два параметра. Первый типа Структура - собственно параметры. Второй - непонятный идентификатор.

Процедура ТестовыйМетод(ПараметрыВыполнения, НекийПараметр = Неопределено) Экспорт

В прикреплении пример обработки.

Обновление от 02.04.2025.

Ещё один вариант исполнения метода внешней обработки в фоне.

Возможно использовать процедуру ОбщегоНазначения.ВыполнитьВБезопасномРежиме

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

ДвоичныеДанныеОбработки = ПолучитьИзВременногоХранилища(АдресВХранилище);
ПараметрыВыполнения = Новый Структура("ДвоичныеДанныеОбработки", ДвоичныеДанныеОбработки);
ПараметрыВыполнения.Вставить("КоличествоЦиклов", КоличествоЦиклов);
ПараметрыВыполнения.Вставить("ВызыватьИсключение", ВызыватьИсключение);

КодДляВыполнения = "
    |
    |АдресВХранилище = ПоместитьВоВременноеХранилище(Параметры.ДвоичныеДанныеОбработки);
    |ВнешниеОбработки.Подключить(АдресВХранилище, ""ПримерВыполненияВнешнейОбработкиВФоне"", Истина);
    |МояОбработка = ВнешниеОбработки.Создать(""ПримерВыполненияВнешнейОбработкиВФоне"");
    |МояОбработка.ТестовыйМетод(Параметры);
    |";
// ОбщегоНазначения.ВыполнитьВБезопасномРежиме(КодДляВыполнения, ПараметрыВыполнения);
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(КодДляВыполнения);
ПараметрыЗадания.Добавить(ПараметрыВыполнения);
Задание = ФоновыеЗадания.Выполнить("ОбщегоНазначения.ВыполнитьВБезопасномРежиме",
                                    ПараметрыЗадания,
                                    "ПримерВыполненияВнешнейОбработкиВФоне",
                                    "Пример выполнения внешней обработки в фоне");

Пример в файле ПримерЗапускаМетодаВнешнейОбработкиВФоне2.epf

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

  • Управление торговлей, редакция 11, релизы 11.5.17.117

См. также

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

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

15500 руб.

02.09.2020    183634    1023    403    

966

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

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

8400 руб.

20.08.2024    23992    158    84    

155

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

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

22200 руб.

06.10.2023    20214    51    19    

86

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

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

15000 руб.

10.11.2023    13603    56    33    

76

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

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

9360 руб.

17.05.2024    30414    103    48    

147

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

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    19076    7    32    

43

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    2298    4    0    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Sam13 364 05.02.25 13:01 Сейчас в теме
Второй - это идентификатор хранилища значений, куда будет помещен возвращаемый результат.
Трактор; +1 Ответить
2. Трактор 1267 07.02.25 10:32 Сейчас в теме
(1) Понял. Странное решение. Если мне нужен результат, то адрес хранилища я могу передать в числе прочих параметров. Зачем они его вынесли отдельно - непонятно. Ну ладно.
Оставьте свое сообщение