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

Разработка и Конфигурация · 10 мин

Как выполнить код в 1С: все рабочие способы

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

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

В 1С:Предприятии код можно выполнять в режиме конфигуратора (через отладку и внешние обработки), в режиме предприятия (через консоль кода, внешние обработки, регламентные задания) и динамически — операторами Выполнить() и ОценитьВыражение(). Ниже разобраны все основные способы с условиями применения и ограничениями.

Способы выполнения кода: что выбрать под задачу

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

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

Сравнение способов выполнения кода

Консоль кода

Разовые запуски, эксперименты, обработка данных без изменения конфигурации. Требует прав и файла обработки.

Отладчик

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

Выполнить()

Динамический запуск кода из строки внутри программы. Ограничения в безопасном режиме и на веб-клиенте.

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

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

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

Длительные операции без блокировки сеанса пользователя. Код должен быть в серверном модуле конфигурации.

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

Консоль кода — это внешняя обработка, которая открывает поле ввода на встроенном языке и выполняет написанный код в текущей базе. Это самый быстрый способ выполнить разовый код: посчитать данные, исправить реквизит, проверить запрос. Обработку можно взять из стандартных инструментов разработчика (ИР) или написать самостоятельно — она состоит из поля текста и кнопки с вызовом Выполнить(ТекстКода).

Порядок работы: откройте базу в режиме 1С:Предприятие под пользователем с достаточными правами, откройте файл консоли через меню «Файл — Открыть», введите код и нажмите «Выполнить». Результат выводится через Сообщить() или возврат значения, если консоль это поддерживает.

Порядок действий с консолью кода
  1. 1
    Сделайте резервную копию базы, если код меняет данные
  2. 2
    Откройте базу в режиме 1С:Предприятие под пользователем с полными правами
  3. 3
    Откройте файл консоли кода через Файл — Открыть
  4. 4
    Введите код и сначала выполните его в проверочном варианте (вывод данных без записи)
  5. 5
    Выполните рабочий вариант и проверьте результат на контрольном примере

Пример простого кода для консоли — вывод списка контрагентов:

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10

| Контрагенты.Ссылка КАК Ссылка

|ИЗ

| Справочник.Контрагенты КАК Контрагенты";

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

Сообщить(Выборка.Ссылка);

КонецЦикла;

Оператор Выполнить(): динамический запуск кода из строки

Оператор Выполнить(СтрокаКода) выполняет произвольный текст на встроенном языке, переданный строкой. Это основа всех консолей кода и механизмов пользовательских алгоритмов (например, произвольных обработчиков в настройках обмена). Если нужно получить значение выражения, а не выполнить инструкции, используется функция ОценитьВыражение(Строка).

У способа есть важные ограничения. В безопасном режиме (например, при выполнении кода из дополнительных отчётов и обработок без отключения защиты) Выполнить() может быть запрещён профилем безопасности. На веб-клиенте и в тонком клиенте доступен не весь контекст: серверные вызовы из строки кода требуют, чтобы код выполнялся на сервере. Кроме того, ошибка внутри динамического кода указывает на строку внутри строки, что усложняет диагностику.

Пример безопасного шаблона с обработкой ошибок:

Попытка

Выполнить(ТекстАлгоритма);

Исключение

Сообщить("Ошибка выполнения: " + ОписаниеОшибки());

КонецПопытки;

Отладчик: как выполнить код пошагово и проверить логику

Когда нужно не просто запустить код, а понять, как он работает, используется отладчик конфигуратора. Откройте конфигуратор, установите точку останова в нужной строке модуля (клик по полю слева от строки или F9), затем запустите отладку через «Отладка — Начать отладку» (F5). Выполните в предприятии действие, которое вызывает код, — выполнение остановится на точке.

В остановленном состоянии доступны: пошаговое выполнение (F11 — с заходом в процедуры, F10 — через них), просмотр значений переменных (Shift+F9 — «Вычислить выражение»), табло (окно с отслеживаемыми выражениями) и стек вызовов. Окно «Вычислить выражение» фактически позволяет выполнить произвольный код в текущем контексте — это удобный способ проверить вариант исправления прямо во время остановки.

Внешние обработки и фоновые задания

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

Для длительных операций (пересчёт итогов, массовая загрузка) код запускается в фоновом задании через ФоновыеЗадания.Выполнить("ИмяМетода", Параметры), где метод — экспортная процедура общего серверного модуля. Регламентные задания выполняют код по расписанию без участия пользователя. Оба механизма требуют, чтобы код находился внутри конфигурации, — произвольную строку в фоне так просто не запустить.

Частые ошибки при выполнении кода

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

Типичные ошибки
01
Запуск кода изменения данных без транзакции: при ошибке в середине часть данных записана, часть нет — база в несогласованном состоянии.
02
Вызов серверных методов из кода на клиенте: ошибка 'Метод не обнаружен' или недоступность контекста.
03
Игнорирование безопасного режима: Выполнить() в дополнительных обработках блокируется профилем безопасности, код молча не работает или падает.
04
Выполнение массовой обработки без ограничения выборки: запрос по всей таблице блокирует базу надолго.
05
Отладка серверного кода без включённого ключа -debug на сервере: точки останова не срабатывают, и кажется, что код не выполняется.

Для массовых операций используйте транзакции с обработкой исключений и ограничивайте выборку («ПЕРВЫЕ N» на этапе проверки). Это позволяет откатить изменения при ошибке и не блокировать работу пользователей.

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

Как проверить результат

Код выполнился без окна ошибки
Норма

Появились ожидаемые сообщения или изменённые данные

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

Молчание без результата — возможно, код не дошёл до выполнения (права, безопасный режим)

Изменённые данные
Норма

Контрольный объект содержит ожидаемые значения, связанные данные согласованы

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

Часть объектов изменена, часть нет — признак отсутствия транзакции

Производительность базы
Норма

Операция завершилась за разумное время, пользователи работают

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

Длительные блокировки, жалобы пользователей — выборка слишком велика

FAQ

Как выполнить код в 1С без изменения конфигурации?

Используйте консоль кода или внешнюю обработку (.epf), открыв её в режиме предприятия через «Файл — Открыть». Конфигурация при этом не меняется, обновление базы не требуется. Для повторного использования сохраните код в файл обработки.

Почему Выполнить() выдаёт ошибку в дополнительной обработке?

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

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

Код должен находиться в серверном модуле (общем модуле с признаком «Сервер» или серверной части модуля формы) и вызываться через серверный вызов. Консоль кода в тонком клиенте выполняет код в контексте клиента, поэтому серверные операции из неё недоступны напрямую.

Можно ли выполнить код по расписанию?

Да, через регламентные задания: создайте в конфигураторе регламентное задание, укажите метод (экспортную процедуру общего модуля) и расписание. В файловом варианте для исполнения расписания нужен запущенный сеанс с выполнением фоновых заданий, в клиент-серверном задания выполняет сервер.

Что делать, если код в отладке не останавливается на точке останова?

Проверьте три вещи: включена ли отладка на сервере (ключ -debug), подключён ли нужный сеанс в списке предметов отладки («Отладка — Подключение»), и совпадает ли отлаживаемый модуль с текущей версией конфигурации базы — после изменения модуля без обновления конфигурации БД точки могут не срабатывать.

Как безопасно выполнить массовое изменение данных?

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

Итог

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

Для разового запуска кода используйте консоль кода, для проверки логики — отладчик, для динамических алгоритмов — Выполнить(), для регулярных операций — внешние обработки и регламентные задания. Любой код, меняющий данные, запускайте только после резервной копии и проверки на тестовой базе.