Внешние, дополнительные и фоновые обработки в Документообороте: запуск, расписание, контроль

· 9 мин

Содержание

Внешнюю обработку (файл .epf) в 1С:Документооборот запускают через Главное меню → Файл → Открыть или сочетание Ctrl+O. Постоянную обработку, которой пользуются регулярно, правильнее зарегистрировать в справочнике «Дополнительные отчеты и обработки»: там же её можно поставить на расписание. Встроенные обработки конфигурации открываются из Главное меню → Все функции → Обработки.

Типичная ситуация: администратор получил от подрядчика файл для массовой смены ответственных по 3 000 карточкам документов. Открыть его двойным щелчком не выйдет, пользователь без прав увидит отказ, а запуск «в лоб» днём подвесит работу отдела. Порядок ниже снимает все три проблемы. Механизмы общие для платформы 8.3 и Библиотеки стандартных подсистем, поэтому работают одинаково в Документообороте 2.1 и 3.x.

Какие обработки бывают в Документообороте и чем отличается их запуск

Под словом «обработка» скрываются четыре разных объекта. Способ запуска зависит от того, с каким из них вы имеете дело.

ВидГде хранитсяКак запускаютТипичный сценарий
Встроенная обработкав конфигурацииВсе функции → Обработки, команды разделовслужебные операции, обслуживание
Внешняя обработка .epfфайл на дискеФайл → Открытьразовая выгрузка, исправление данных
Дополнительная обработкасправочник в базекоманда в разделе или форме объекта, по расписаниюрегулярные задачи, печатные формы, заполнение
Фоновое или регламентное заданиепроцедура в общем модулеплатформа по расписанию или по вызову из коданочная обработка, интеграции, индексирование
  • 📄 Разовые задачи (поправить реквизит у сотни карточек, выгрузить список в Excel) решают внешней обработкой.
  • 🔁 Повторяющиеся задачи лучше оформить дополнительной обработкой: файл лежит в базе, а не на чьём-то рабочем столе, у него есть версия и список пользователей.
  • 🌙 Тяжёлые и ночные задачи запускают в фоне, без участия человека.

Подготовка: права, защита от опасных действий и проверка файла

Перед первым запуском проверьте три вещи.

Права пользователя

  1. Для открытия файла .epf через меню нужна роль «Интерактивное открытие внешних отчетов и обработок». Её дают через профиль группы доступа, в который входит пользователь.
  2. Чтобы регистрировать файлы в справочнике дополнительных обработок, нужна роль «Добавление и изменение дополнительных отчетов и обработок». Обычно она есть только у администраторов.
  3. Самой обработке нужны права на те объекты, которые она меняет. Если у сотрудника нет права изменять карточки чужого подразделения, обработка, запущенная от его имени, упрётся в те же ограничения.

Обработку, которая массово меняет данные, запускайте под учётной записью администратора. Так права доступа не оборвут выполнение на середине.

Защита от опасных действий

В свойствах пользователя информационной базы есть флажок «Защита от опасных действий». Когда он включён, при открытии внешнего файла платформа показывает предупреждение о том, что файл может быть небезопасен, и просит подтвердить действие. Флажок задают в Конфигураторе: Администрирование → Пользователи, карточка пользователя, вкладка «Основные».

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

Проверка самого файла

  • 🧩 Обработка должна быть написана под Документооборот. Файл из Бухгалтерии обращается к справочникам, которых в ДО нет, и упадёт с ошибкой при открытии или первом нажатии кнопки.
  • 🔢 Номер версии платформы на компьютере пользователя должен быть не ниже того, на котором обработку сохранили.
  • 📝 Для регистрации в справочнике в модуле обработки должна быть экспортная функция СведенияОВнешнейОбработке(). Без неё справочник файл не примет. Простую .epf «для разового случая» такая функция обычно не содержит, её запускают только через меню.

Перед обработкой, которая меняет или удаляет данные, сделайте резервную копию базы . Отменить массовое изменение тысяч карточек средствами программы нельзя.

Ручной запуск обработки из интерфейса

Внешняя обработка через меню «Файл»

  1. Нажмите кнопку главного меню в левом верхнем углу окна (значок с тремя полосками).
  2. Выберите Файл → Открыть или нажмите Ctrl+O.
  3. Укажите файл .epf на диске.
  4. Подтвердите предупреждение безопасности, если оно появилось.
  5. Заполните параметры на форме и нажмите кнопку выполнения.

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

Встроенная обработка через «Все функции»

Если пункта «Все функции» в главном меню нет, включите его: Главное меню → Сервис → Параметры, флажок «Отображать команду “Все функции”». Затем откройте Главное меню → Все функции → Обработки и выберите нужную из списка.

Дополнительная обработка из справочника

  1. Откройте справочник: Все функции → Справочники → Дополнительные отчеты и обработки.
  2. Нажмите «Добавить из файла…» и выберите .epf.
  3. В карточке проверьте поле «Публикация»: значение «Используется» делает команды доступными, «Режим отладки» показывает их только администраторам, «Отключена» прячет.
  4. В таблице команд укажите, кому открыть быстрый доступ, и при необходимости раздел, где появится команда.
  5. Запишите и закройте карточку.

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

При обновлении версии обработки не создавайте новый элемент справочника. Откройте существующий и загрузите файл заново: настройки доступа и расписания сохранятся.

Как запустить обработку в фоне и по расписанию

Расписание для дополнительной обработки

У каждой команды дополнительной обработки есть вариант запуска. Для работы без пользователя нужен вариант «Вызов серверного метода»: только у таких команд в карточке доступна колонка расписания.

  1. Откройте карточку обработки в справочнике.
  2. В таблице команд выберите строку с вариантом «Вызов серверного метода».
  3. Задайте расписание: например, ежедневно в 02:00, повтор через 0 секунд, без даты окончания.
  4. Включите использование и запишите карточку.

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

Фоновое задание из кода

Разработчик запускает фоновое задание методом ФоновыеЗадания.Выполнить(). Процедура должна быть экспортной и лежать в серверном общем модуле конфигурации или расширения:

Параметры = Новый Массив;
Параметры.Добавить(ДатаНачала);
Параметры.Добавить(ДатаОкончания);

Задание = ФоновыеЗадания.Выполнить(
    "ОбработкаКарточекСервер.СменитьОтветственных",
    Параметры,
    "СменаОтветственных",           // ключ: второй такой же не запустится
    "Смена ответственных по карточкам");

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

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

Регламентные и фоновые задания: где смотреть и как управлять

Список заданий открывается обработкой «Регламентные и фоновые задания»: Все функции → Обработки → Регламентные и фоновые задания. В ней две вкладки.

  • ⏰ Регламентные задания: расписание, флажок использования, время последнего запуска и его результат. Отсюда задание можно выполнить вручную, не дожидаясь расписания.
  • ⚙️ Фоновые задания: что выполняется сейчас, что завершилось, с какой ошибкой. Двойной щелчок по строке открывает подробности и текст ошибки.

Файловая база и клиент-серверная

Это главный источник вопросов «почему задание не сработало ночью».

Вариант базыКто выполняет заданияЧто проверить
Файловаяклиентский сеанс одного из пользователейв момент расписания базу должен держать открытой хотя бы один пользователь
Клиент-сервернаярабочие процессы кластера 1Сфлажок «Блокировка регламентных заданий включена» в свойствах базы в консоли кластера должен быть снят

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

Флажок блокировки регламентных заданий часто остаётся включённым после развёртывания копии базы для тестов. Это правильно для копии и ошибка для рабочей базы. Меняйте его в консоли администрирования серверов в свойствах информационной базы.

Обработка не запускается: диагностика по журналу регистрации

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

Диагностика: выберите симптом

Если обработка падает на одной карточке из тысячи, ищите в журнале запись с уровнем «Ошибка» непосредственно перед событием отмены задания. В комментарии часто есть ссылка на объект.

Массовые запуски без нагрузки на пользователей

Обработка, которая на 50 карточках отрабатывает за секунду, на 50 000 может занять час и заблокировать работу отдела. Несколько правил снимают проблему.

  1. Делите на порции. Не обрабатывайте всё в одной транзакции. Порция по 200–500 объектов с фиксацией после каждой даёт короткие блокировки, а при ошибке теряется только текущая порция.
  2. Запускайте вне рабочего времени. Массовое изменение карточек, файлов и задач днём конкурирует с пользователями за одни и те же записи.
  3. Не запускайте вместе с тяжёлыми регламентными заданиями. Полнотекстовое индексирование и извлечение текста из файлов сами нагружают сервер. Сдвиньте свою обработку на час.
  4. Параллельте осторожно. Несколько фоновых заданий, каждое со своим диапазоном объектов, ускоряют работу на клиент-серверной базе. Диапазоны не должны пересекаться, иначе задания будут ждать друг друга на блокировках.
  5. Пишите прогресс в журнал. Запись «обработано 1 500 из 12 000» раз в порцию показывает, что задание живо, и позволяет продолжить с нужного места после сбоя.
  6. Проверьте на копии. Запуск на копии базы покажет и время выполнения, и ошибки на реальных данных.

Пример расчёта: обработка тратит 0,4 секунды на карточку. 12 000 карточек в один поток — 4 800 секунд, то есть 80 минут. Четыре непересекающихся потока сократят время примерно до 20–25 минут, если сервер не упрётся в диск или блокировки.

Если фоновое задание зависло и его нужно прервать, отмените его в обработке «Регламентные и фоновые задания». Завершать рабочий процесс кластера можно только в крайнем случае и вне рабочего времени: вместе с ним оборвутся сеансы пользователей, работающих в этом процессе.

Частые вопросы

Можно ли запустить внешнюю обработку в веб-клиенте Документооборота?
Да, через то же меню «Файл → Открыть». Браузер загрузит файл на сервер, нужны те же права, что и в тонком клиенте.
Почему после обновления Документооборота перестала работать старая обработка?
В новом релизе могли переименовать или удалить реквизиты, к которым она обращается. Обработку нужно адаптировать под новую структуру.
Как узнать, под каким пользователем выполняется регламентное задание?
Откройте задание в обработке «Регламентные и фоновые задания»: пользователь указан в его свойствах. Для заданий, которые меняют данные, указывайте служебного пользователя с нужными правами, чтобы в журнале было видно, кто внёс изменения.
Можно ли запретить сотруднику открывать внешние файлы, но оставить ему дополнительные обработки?
Да. Уберите роль интерактивного открытия внешних обработок, а нужные команды дайте через быстрый доступ в карточке дополнительной обработки.
Сколько регламентных заданий может выполняться одновременно?
В клиент-серверной базе ограничение задаёт мощность сервера и настройки кластера. В файловой задания выполняются по очереди в одном клиентском сеансе, поэтому долгое задание задерживает остальные.