Внешние и дополнительные обработки 1С: от разового запуска до работы по расписанию
Содержание
Запустить дополнительную процедуру обработки данных в 1С 8.3 можно четырьмя способами: открыть файл .epf через Главное меню → Файл → Открыть, зарегистрировать его в Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, передать в параметре /Execute при запуске клиента или повесить на регламентное задание. Первый способ подходит для разовой задачи, остальные — для постоянной работы.
Частое заблуждение: «раз обработка открывается через Файл → Открыть, её можно поставить и на расписание». Нельзя. Регламентное задание запускает только то, что встроено в базу: код конфигурации или обработку, зарегистрированную в справочнике дополнительных обработок с серверной командой. Файл на диске для расписания не существует.
Всё сказанное ниже относится к платформе 8.3 и типовым конфигурациям на Библиотеке стандартных подсистем (БСП): Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP.
Какие бывают способы запуска обработок в 1С
Сначала определитесь, что за задача перед вами. От этого зависит способ.
| Способ | Когда подходит | Что нужно | Риски |
|---|---|---|---|
Файл → Открыть | Разовая правка, проверка, выгрузка | Право на интерактивное открытие внешних обработок | Код идёт без ограничений безопасного режима, если у пользователя полные права |
| Справочник «Дополнительные отчеты и обработки» | Обработка нужна постоянно, нескольким людям | Код регистрации в модуле объекта | Обновлять файл придётся вручную в карточке |
Параметр /Execute | Пакетный запуск с ярлыка или из планировщика Windows | Пользователь с паролем, доступ к базе | Пароль в командной строке виден в списке процессов |
| Регламентное задание | Ежедневная или ночная процедура без участия человека | Серверная команда в обработке, расписание | В файловой базе задание идёт, только пока открыт хотя бы один клиент |
| Консоль кода | Однократный запрос или исправление «на лету» | Полные права, внешняя обработка «Консоль кода» | Ошибка в коде сразу меняет данные |
💡 Внешняя обработка — это файл .epf, который живёт отдельно от конфигурации. Дополнительная обработка — тот же файл, но загруженный в базу через справочник БСП. Технически один и тот же объект, разница в способе подключения.
Подготовка внешней обработки к запуску в базе
Перед первым запуском проверьте три вещи.
- Версия платформы. Обработка, сохранённая в новой платформе, может не открыться в старой. Номер платформы, на которой работает база, виден в
Главное меню → Справка → О программе. - Конфигурация. Обработка обращается к объектам метаданных по именам:
Документ.РеализацияТоваровУслуг,Справочник.Контрагенты. Если такого объекта в вашей конфигурации нет, запуск закончится ошибкой. - Источник файла. Обработку от подрядчика или с форума сначала откройте в Конфигураторе (
Файл → Открыть) и прочитайте модуль объекта и модуль формы. ИщитеУдалитьОбъекты,Удалить(),ПолучитьФайл,КомандаСистемы,ЗапуститьПриложение.
Как сделать обработку пригодной для регистрации в БСП
Справочник дополнительных обработок принимает только файлы, в модуле объекта которых есть экспортная функция СведенияОВнешнейОбработке(). Без неё при загрузке программа сообщит, что обработка не подходит для подключения.
Минимальный рабочий пример для серверной команды, которую потом можно поставить на расписание:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.1.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Проверить непроведенные реализации";
Команда.Идентификатор = "ПроверкаНепроведенных";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
Если ИдентификаторКоманды = "ПроверкаНепроведенных" Тогда
ПроверитьНепроведенные();
КонецЕсли;
КонецПроцедуры
Процедура ПроверитьНепроведенные()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК Число
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Д
|ГДЕ
| НЕ Д.Проведен
| И НЕ Д.ПометкаУдаления
| И Д.Дата >= &Начало";
Запрос.УстановитьПараметр("Начало", НачалоМесяца(ТекущаяДатаСеанса()));
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
ЗаписьЖурналаРегистрации("Проверка непроведенных реализаций",
УровеньЖурналаРегистрации.Информация, , ,
СтрШаблон("С начала месяца не проведено реализаций: %1",
Формат(Выборка.Число, "ЧН=0; ЧГ=0")));
КонецПроцедуры
Что здесь важно:
- 🔹
Вид— тип обработки. Для процедуры над данными нужна «Дополнительная обработка» (глобальная). Есть и другие виды: печатная форма, заполнение объекта, создание связанных объектов, отчёт. - 🔹
Использование— вариант запуска команды. «Вызов серверного метода» выполняетВыполнитьКомандуна сервере без формы. Только такие команды можно ставить на расписание. - 🔹 Строка
"2.4.1.1"— версия БСП, под которую написан код. Указывайте не выше той, что в вашей конфигурации.
Если обработке нужна форма с полями и кнопками, выберите вариант «Открытие формы». Тогда пользователь запускает её руками, а для расписания добавьте вторую, серверную команду.
Как запустить обработку данных вручную: два пути
Разово через меню Файл
- Нажмите на значок меню (три полоски) в левом верхнем углу окна.
- Выберите
Файл → Открыть. - Укажите файл
.epfи нажмите «Открыть». - Если включена защита от опасных действий, появится предупреждение. Подтвердите запуск, только если доверяете источнику.
Пункта «Открыть» в меню нет или после выбора файла появляется «Нарушение прав доступа» — у пользователя нет права на интерактивное открытие внешних обработок. Выдаёт его администратор через профиль групп доступа.
Постоянно через справочник дополнительных обработок
- Включите функцию:
Администрирование → Печатные формы, отчеты и обработки, флажок «Дополнительные отчеты и обработки». - Перейдите по ссылке «Дополнительные отчеты и обработки» и нажмите «Добавить из файла».
- Выберите файл. Программа прочитает
СведенияОВнешнейОбработкеи заполнит карточку: наименование, вид, версию, список команд. - На вкладке «Размещение» отметьте разделы, где появится команда, например «Склад» или «Продажи».
- На вкладке команд отметьте пользователей в колонке быстрого доступа.
- В поле «Публикация» оставьте «Используется» и нажмите «Записать и закрыть».
После этого в выбранном разделе на панели навигации появляется ссылка «Дополнительные обработки». Пользователь открывает её, выбирает команду и нажимает «Выполнить».
💡 Новую версию файла загружайте в ту же карточку командой обновления из файла. Новая карточка под тот же файл создаст дубль, и пользователи увидят две одинаковые команды.
Параметры запуска и безопасный режим обработок
Безопасный режим отключает в коде обработки опасные возможности: привилегированный режим, работу с файлами и внешними компонентами, запуск программ. Код при этом выполняется с правами текущего пользователя.
| Настройка | Где задаётся | Что даёт |
|---|---|---|
БезопасныйРежим = Истина | Модуль обработки, функция регистрации | Обработка работает в песочнице, даже если её запустил администратор |
| «Публикация: Используется / Режим отладки / Отключена» | Карточка обработки | Отключённая обработка не видна никому, в режиме отладки — только администраторам |
| Защита от опасных действий | Карточка пользователя | Предупреждение перед открытием внешнего файла |
| Профили безопасности | Консоль кластера и настройки программы | Перечень разрешённых обработке ресурсов: каталоги, адреса, компоненты |
Если обработка законно пишет файл на диск или ходит на внешний адрес, отключить безопасный режим недостаточно. В клиент-серверной базе с включёнными профилями безопасности при загрузке появится запрос разрешений, и администратор должен их одобрить.
Флажок «безопасный режим» снимайте только у обработок, код которых вы прочитали. Обработка без безопасного режима, запущенная администратором, может сделать с базой что угодно.
Запуск из командной строки
Параметр /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. Создайте для этого отдельного пользователя с минимальными правами: пароль лежит в задании планировщика открытым текстом.
Регламентное задание для запуска дополнительной обработки по расписанию
Это главный способ автоматизировать процедуру: закрытие заказов, загрузку курсов, проверку данных, рассылку отчёта.
- Откройте карточку обработки в справочнике «Дополнительные отчеты и обработки».
- На вкладке команд найдите строку с вариантом «Вызов серверного метода».
- В колонке расписания нажмите на ячейку и задайте периодичность: например, ежедневно в 02:00 без даты окончания.
- Отметьте флажок использования расписания и запишите карточку.
Программа создаст регламентное задание «Запуск дополнительных обработок», привязанное к этой команде. Его состояние и историю смотрите в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания.
Особенности файлового и клиент-серверного режима
| Режим | Кто выполняет задание | На что смотреть |
|---|---|---|
| Файловый | Один из открытых клиентских сеансов | Если ночью в базе никого нет, задание не выполнится |
| Клиент-серверный | Рабочий процесс кластера | В свойствах информационной базы в консоли кластера не должна стоять блокировка регламентных заданий |
Для файловой базы есть параметр запуска /AllowExecuteScheduledJobs -Force: он разрешает конкретному клиенту выполнять регламентные задания. Его ставят на ярлык служебного рабочего места, которое держат открытым на ночь.
В копии базы для тестов включите блокировку регламентных заданий до первого запуска. Иначе копия начнёт по расписанию отправлять письма контрагентам или выгружать данные в ЕГАИС и ЭДО от имени рабочей организации.
Если процедура долгая, разбейте её на порции по 500–1000 объектов с записью каждой порции в отдельной транзакции. Одна транзакция на 50 000 документов держит блокировки и мешает пользователям, а при сбое откатывается целиком.
Консоль кода для разовых процедур обработки
Когда нужно один раз поправить сотню записей или проверить гипотезу запросом, писать полноценную обработку долго. Для этого есть внешняя обработка «Консоль кода» и её аналоги: окно, куда вставляют текст на встроенном языке и выполняют его кнопкой.
Как работать безопасно:
- 💾 Сделайте копию базы
или хотя бы выгрузку
.dt. - 🧪 Прогоните код сначала на копии.
- 🔍 Начните с выборки: выведите в сообщения, какие объекты будут изменены, и проверьте список глазами.
- ✏️ Только потом добавьте запись объектов.
- 📝 Сохраните текст кода в файл рядом с датой. Через месяц это единственный способ понять, что случилось с данными.
Помните про режим выполнения. Код на сервере работает быстрее и видит серверные методы. Код на клиенте не может напрямую создать Запрос в тонком клиенте. В консолях это обычно переключатель «на сервере / на клиенте».
Запись документа из консоли с режимом проведения перепроводит его и меняет движения. Если документ закрытого периода — проверьте дату запрета изменения данных и последствия для отчётности до запуска.
💡 Для одной проверки выражения есть Конфигуратор: запустите отладку, поставьте точку останова и откройте окно вычисления выражений (Shift+F9). Изменять данные этим путём не стоит, а посмотреть значение — удобно.
Диагностика: почему обработка не запускается и где смотреть логи
Первым делом откройте журнал регистрации: Администрирование → Обслуживание, ссылка «Журнал регистрации». Отфильтруйте по уровню «Ошибка» и по нужному интервалу времени. Обработки на БСП пишут события с именами вида «Дополнительные отчеты и обработки», а свои сообщения ищите по имени события из вызова ЗаписьЖурналаРегистрации.
Для регламентного задания второй источник — список «Регламентные и фоновые задания». Откройте задание и посмотрите последний фоновый запуск: состояние, время начала и окончания, текст ошибки.
Отладка внешней обработки
- В карточке установите публикацию «Режим отладки», чтобы обработку видели только администраторы.
- В Конфигураторе откройте тот же файл
.epfи расставьте точки останова. - Запустите клиент из Конфигуратора в режиме отладки и выполните команду.
Для серверной базы отладка серверного кода требует, чтобы на сервере 1С была включена отладка. Без этого точки останова в процедурах &НаСервере и в ВыполнитьКоманду не сработают. Фоновое задание ловят через автоматическое подключение отладки к фоновым заданиям в настройках Конфигуратора.
Частые вопросы
Можно ли поставить на расписание обработку, которая открывается формой?
Чем дополнительная обработка отличается от расширения конфигурации?
Почему после обновления конфигурации обработка перестала работать?
Где лежит загруженная дополнительная обработка: в базе или на диске?
.epf.