Внешние и дополнительные обработки 1С: от разового запуска до работы по расписанию

· 10 мин

Содержание

Запустить дополнительную процедуру обработки данных в 1С 8.3 можно четырьмя способами: открыть файл .epf через Главное меню → Файл → Открыть, зарегистрировать его в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, передать в параметре /Execute при запуске клиента или повесить на регламентное задание. Первый способ подходит для разовой задачи, остальные — для постоянной работы.

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

Всё сказанное ниже относится к платформе 8.3 и типовым конфигурациям на Библиотеке стандартных подсистем (БСП): Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP.

Какие бывают способы запуска обработок в 1С

Сначала определитесь, что за задача перед вами. От этого зависит способ.

СпособКогда подходитЧто нужноРиски
Файл → ОткрытьРазовая правка, проверка, выгрузкаПраво на интерактивное открытие внешних обработокКод идёт без ограничений безопасного режима, если у пользователя полные права
Справочник «Дополнительные отчеты и обработки»Обработка нужна постоянно, нескольким людямКод регистрации в модуле объектаОбновлять файл придётся вручную в карточке
Параметр /ExecuteПакетный запуск с ярлыка или из планировщика WindowsПользователь с паролем, доступ к базеПароль в командной строке виден в списке процессов
Регламентное заданиеЕжедневная или ночная процедура без участия человекаСерверная команда в обработке, расписаниеВ файловой базе задание идёт, только пока открыт хотя бы один клиент
Консоль кодаОднократный запрос или исправление «на лету»Полные права, внешняя обработка «Консоль кода»Ошибка в коде сразу меняет данные

💡 Внешняя обработка — это файл .epf, который живёт отдельно от конфигурации. Дополнительная обработка — тот же файл, но загруженный в базу через справочник БСП. Технически один и тот же объект, разница в способе подключения.

Подготовка внешней обработки к запуску в базе

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

  1. Версия платформы. Обработка, сохранённая в новой платформе, может не открыться в старой. Номер платформы, на которой работает база, виден в Главное меню → Справка → О программе.
  2. Конфигурация. Обработка обращается к объектам метаданных по именам: Документ.РеализацияТоваровУслуг, Справочник.Контрагенты. Если такого объекта в вашей конфигурации нет, запуск закончится ошибкой.
  3. Источник файла. Обработку от подрядчика или с форума сначала откройте в Конфигураторе (Файл → Открыть) и прочитайте модуль объекта и модуль формы. Ищите УдалитьОбъекты, Удалить(), ПолучитьФайл, КомандаСистемы, ЗапуститьПриложение.

Как сделать обработку пригодной для регистрации в БСП

Справочник дополнительных обработок принимает только файлы, в модуле объекта которых есть экспортная функция СведенияОВнешнейОбработке(). Без неё при загрузке программа сообщит, что обработка не подходит для подключения.

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

Функция СведенияОВнешнейОбработке() Экспорт

	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.1.1");
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Версия = "1.0";
	ПараметрыРегистрации.БезопасныйРежим = Истина;

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Проверить непроведенные реализации";
	Команда.Идентификатор = "ПроверкаНепроведенных";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Истина;

	Возврат ПараметрыРегистрации;

КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

	Если ИдентификаторКоманды = "ПроверкаНепроведенных" Тогда
		ПроверитьНепроведенные();
	КонецЕсли;

КонецПроцедуры

Процедура ПроверитьНепроведенные()

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	КОЛИЧЕСТВО(*) КАК Число
	|ИЗ
	|	Документ.РеализацияТоваровУслуг КАК Д
	|ГДЕ
	|	НЕ Д.Проведен
	|	И НЕ Д.ПометкаУдаления
	|	И Д.Дата >= &Начало";
	Запрос.УстановитьПараметр("Начало", НачалоМесяца(ТекущаяДатаСеанса()));

	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();

	ЗаписьЖурналаРегистрации("Проверка непроведенных реализаций",
		УровеньЖурналаРегистрации.Информация, , ,
		СтрШаблон("С начала месяца не проведено реализаций: %1",
			Формат(Выборка.Число, "ЧН=0; ЧГ=0")));

КонецПроцедуры

Что здесь важно:

  • 🔹 Вид — тип обработки. Для процедуры над данными нужна «Дополнительная обработка» (глобальная). Есть и другие виды: печатная форма, заполнение объекта, создание связанных объектов, отчёт.
  • 🔹 Использование — вариант запуска команды. «Вызов серверного метода» выполняет ВыполнитьКоманду на сервере без формы. Только такие команды можно ставить на расписание.
  • 🔹 Строка "2.4.1.1" — версия БСП, под которую написан код. Указывайте не выше той, что в вашей конфигурации.

Если обработке нужна форма с полями и кнопками, выберите вариант «Открытие формы». Тогда пользователь запускает её руками, а для расписания добавьте вторую, серверную команду.

Как запустить обработку данных вручную: два пути

Разово через меню Файл

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

Пункта «Открыть» в меню нет или после выбора файла появляется «Нарушение прав доступа» — у пользователя нет права на интерактивное открытие внешних обработок. Выдаёт его администратор через профиль групп доступа.

Постоянно через справочник дополнительных обработок

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

После этого в выбранном разделе на панели навигации появляется ссылка «Дополнительные обработки». Пользователь открывает её, выбирает команду и нажимает «Выполнить».

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

Параметры запуска и безопасный режим обработок

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

НастройкаГде задаётсяЧто даёт
БезопасныйРежим = ИстинаМодуль обработки, функция регистрацииОбработка работает в песочнице, даже если её запустил администратор
«Публикация: Используется / Режим отладки / Отключена»Карточка обработкиОтключённая обработка не видна никому, в режиме отладки — только администраторам
Защита от опасных действийКарточка пользователяПредупреждение перед открытием внешнего файла
Профили безопасностиКонсоль кластера и настройки программыПеречень разрешённых обработке ресурсов: каталоги, адреса, компоненты

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

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

Запуск из командной строки

Параметр /Execute открывает внешнюю обработку сразу после входа в программу:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Base\Buh" /N"Обработчик" /P"пароль" /Execute"D:\Scripts\proverka.epf"

Для серверной базы вместо /F укажите /S"server\base". Сам код запускается из обработчика ПриОткрытии формы или из модуля объекта. Чтобы окно закрылось по окончании, в конце процедуры вызовите ЗавершитьРаботуСистемы(Ложь).

Такой приём используют, когда нужно прогнать обработку из планировщика Windows. Создайте для этого отдельного пользователя с минимальными правами: пароль лежит в задании планировщика открытым текстом.

Регламентное задание для запуска дополнительной обработки по расписанию

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

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

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

Особенности файлового и клиент-серверного режима

РежимКто выполняет заданиеНа что смотреть
ФайловыйОдин из открытых клиентских сеансовЕсли ночью в базе никого нет, задание не выполнится
Клиент-серверныйРабочий процесс кластераВ свойствах информационной базы в консоли кластера не должна стоять блокировка регламентных заданий

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

В копии базы для тестов включите блокировку регламентных заданий до первого запуска. Иначе копия начнёт по расписанию отправлять письма контрагентам или выгружать данные в ЕГАИС и ЭДО от имени рабочей организации.

Если процедура долгая, разбейте её на порции по 500–1000 объектов с записью каждой порции в отдельной транзакции. Одна транзакция на 50 000 документов держит блокировки и мешает пользователям, а при сбое откатывается целиком.

Как часто нужна процедура?

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

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

Как работать безопасно:

  1. 💾 Сделайте копию базы или хотя бы выгрузку .dt.
  2. 🧪 Прогоните код сначала на копии.
  3. 🔍 Начните с выборки: выведите в сообщения, какие объекты будут изменены, и проверьте список глазами.
  4. ✏️ Только потом добавьте запись объектов.
  5. 📝 Сохраните текст кода в файл рядом с датой. Через месяц это единственный способ понять, что случилось с данными.

Помните про режим выполнения. Код на сервере работает быстрее и видит серверные методы. Код на клиенте не может напрямую создать Запрос в тонком клиенте. В консолях это обычно переключатель «на сервере / на клиенте».

Запись документа из консоли с режимом проведения перепроводит его и меняет движения. Если документ закрытого периода — проверьте дату запрета изменения данных и последствия для отчётности до запуска.

💡 Для одной проверки выражения есть Конфигуратор: запустите отладку, поставьте точку останова и откройте окно вычисления выражений (Shift+F9). Изменять данные этим путём не стоит, а посмотреть значение — удобно.

Диагностика: почему обработка не запускается и где смотреть логи

Первым делом откройте журнал регистрации: Администрирование → Обслуживание, ссылка «Журнал регистрации». Отфильтруйте по уровню «Ошибка» и по нужному интервалу времени. Обработки на БСП пишут события с именами вида «Дополнительные отчеты и обработки», а свои сообщения ищите по имени события из вызова ЗаписьЖурналаРегистрации.

Для регламентного задания второй источник — список «Регламентные и фоновые задания». Откройте задание и посмотрите последний фоновый запуск: состояние, время начала и окончания, текст ошибки.

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

Отладка внешней обработки

  1. В карточке установите публикацию «Режим отладки», чтобы обработку видели только администраторы.
  2. В Конфигураторе откройте тот же файл .epf и расставьте точки останова.
  3. Запустите клиент из Конфигуратора в режиме отладки и выполните команду.

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

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

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