К статье
Практический материал

Автоматизация · 12 мин

Как выполнить макрос в 1С: способы запуска кода и обработок

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

Пользователи, переходящие с Excel, часто ищут в 1С кнопку «выполнить макрос» — и не находят её. Причина проста: архитектура 1С устроена иначе. Вместо макросов на VBA здесь применяются внешние обработки и отчёты (файлы с расширением .epf и .erf), встроенный язык 1С, выполняемый через консоль кода, а также регламентные и фоновые задания для автоматического запуска.

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

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

Что в 1С заменяет макросы

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

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

Запуск внешней обработки через меню «Файл»

Самый простой способ выполнить «макрос» в 1С — открыть готовую обработку. Порядок действий одинаков для большинства конфигураций на управляемых формах (Управление торговлей, Бухгалтерия предприятия, ЗУП и другие).

Как запустить внешнюю обработку
  1. 1
    Сделайте резервную копию базы или выгрузку .dt, если обработка меняет данные
  2. 2
    Откройте меню: кнопка с тремя полосками слева вверху → Файл → Открыть
  3. 3
    Укажите файл обработки с расширением .epf
  4. 4
    Подтвердите открытие, если платформа покажет предупреждение безопасности
  5. 5
    Заполните параметры в форме обработки и нажмите её кнопку выполнения
  6. 6
    Проверьте результат на нескольких объектах до массового применения

При открытии файла платформа может показать предупреждение о том, что обработка получена из недоверенного источника. Это стандартная реакция механизма защиты от опасных действий. Если файл получен из надёжного источника и вы понимаете, что он делает, подтвердите открытие. Если происхождение файла неизвестно — сначала откройте его в конфигураторе и просмотрите код.

После выполнения обязательно проверьте результат выборочно: откройте несколько изменённых документов или элементов справочника и убедитесь, что данные корректны. Массовые операции откатить сложно — единственный надёжный «откат» это восстановление из резервной копии.

Подключение обработки через «Дополнительные отчеты и обработки»

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

Для подключения перейдите в раздел «Администрирование» → «Печатные формы, отчёты и обработки» и включите флажок «Дополнительные отчёты и обработки». Затем откройте одноимённый список, создайте новый элемент и укажите файл .epf. После записи обработка появится в разделах, которые вы назначили, — например, в «Закупках» или «Сервисе».

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

Выполнение произвольного кода через консоль

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

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

bsl
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ ПометкаУдаления");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    Сообщить(Выборка.Ссылка);
КонецЦикла;

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

Полезный приём — сначала написать в консоли запрос, который только выводит список объектов для изменения, и сверить его с ожиданиями. Только после этого добавляйте в цикл команды изменения и записи. Это занимает лишнюю минуту, но предотвращает большинство массовых ошибок.
ПЗ
Практическое замечание

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

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

В клиент-серверном режиме задания выполняет сервер 1С, в файловом — фоновый процесс, который запускается при работе пользователей или отдельным сеансом. Посмотреть текущие задания и ошибки их выполнения можно в разделе «Администрирование» → «Обслуживание» → «Регламентные и фоновые задания» (в типовых конфигурациях) или через консоль заданий в конфигураторе.

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

Контрольные точки

Как проверить, что задание работает

Состояние задания в списке регламентных заданий
Норма

Задание активно, указана дата последнего успешного выполнения

Тревожный признак

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

Журнал регистрации по событию задания
Норма

Записи о начале и успешном окончании выполнения

Тревожный признак

Записи с ошибками или аварийным завершением

Практический результат работы задания
Норма

Данные появляются или обновляются в ожидаемом месте

Тревожный признак

Задание выполняется без ошибок, но данных нет — ошибка в логике кода

Типовые инструменты, которые закрывают задачи «макросов»

Прежде чем искать или писать обработку, проверьте штатные возможности конфигурации. Многие задачи, ради которых пользователи ищут макросы, уже решены в типовых поставках: групповое изменение реквизитов, универсальный подбор и обработка объектов, загрузка данных из табличных документов, обмены через правила конвертации.

Чем заменить макрос: выбор инструмента

Групповое изменение реквизитов (штатная обработка)

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

Внешняя обработка .epf

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

Консоль кода

Подходит администраторам и разработчикам для разовых действий и диагностики. Требует знания встроенного языка 1С.

Регламентные задания

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

Расширение конфигурации

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

Обработка «Групповое изменение реквизитов» в типовых конфигурациях находится в разделе «Администрирование» → «Обслуживание» → «Корректировка данных». Она позволяет отобрать объекты по условиям и массово установить значения реквизитов — это закрывает большинство бытовых сценариев, ради которых обычно ищут макрос.

Типичные ошибки при выполнении макросов в 1С
01
Запуск непроверенной обработки сразу в рабочей базе — массовые изменения невозможно отменить без резервной копии
02
Игнорирование предупреждения защиты от опасных действий — файл из неизвестного источника может удалить или исказить данные
03
Выполнение кода без предварительной проверки выборки — изменяются лишние объекты, например все элементы вместо нужной группы
04
Ожидание, что регламентное задание в файловой базе выполнится при закрытой программе — без активного сеанса фоновые задания не работают
05
Запуск обработки под пользователем без нужных прав — операция завершается с ошибкой в середине, данные изменены частично

Безопасность и права доступа

Любой выполняемый код наследует права пользователя, который его запустил. Это значит две вещи. Во-первых, если обработка не срабатывает, первым делом проверяйте права: чтение и изменение нужных объектов, право вывода, доступ к дополнительным обработкам. Во-вторых, не запускайте массовые операции под учётной записью с полными правами без крайней необходимости — цена ошибки в этом случае максимальна.

Механизм защиты от опасных действий в платформе по умолчанию предупреждает при открытии внешних файлов. Не отключайте эту защиту глобально ради удобства. Если предупреждение мешает при регулярной работе с доверенной обработкой, правильное решение — подключить её через «Дополнительные отчёты и обработки», а не снимать защиту на уровне всей базы.

Маршрут решения

Как выбрать способ выполнения

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

Что важно запомнить

Макросов в привычном смысле в 1С нет: их роль выполняют внешние обработки, консоль кода и регламентные задания. Простые массовые правки делайте штатным «Групповым изменением реквизитов», сторонние обработки проверяйте на копии базы, регулярные задачи автоматизируйте через регламентные задания. Резервная копия перед запуском любого кода, меняющего данные, — обязательное условие.

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

Можно ли записать макрос в 1С, как в Excel, просто повторяя действия?

Нет, в платформе 1С нет рекордера действий пользователя. Автоматизация создаётся написанием кода на встроенном языке: вручную в конфигураторе, во внешней обработке или через расширение. Часть сценариев закрывается настройкой без программирования — например, штатным групповым изменением реквизитов.

Почему при открытии обработки появляется предупреждение безопасности?

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

Обработка открылась, но кнопка выполнения не работает. Что проверить?

Чаще всего дело в правах: у пользователя нет доступа к объектам, которые обработка пытается изменить. Также проверьте, не рассчитана ли обработка на другую конфигурацию или версию платформы — тогда в журнале регистрации будут ошибки вызова несуществующих объектов.

Регламентное задание настроено, но не выполняется в файловой базе. В чём причина?

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

Как отменить изменения, которые внесла обработка?

Штатной кнопки «отменить» для массовых операций нет. Варианты: восстановление базы из резервной копии, написание обратной обработки (если исходные значения известны) или ручное исправление. Поэтому перед запуском любого изменяющего кода делайте выгрузку базы .dt или хотя бы выгрузку затрагиваемых данных.

Можно ли запустить обработку из командной строки без открытия интерфейса?

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