Разработка и Конфигурация · 10 мин
Как выполнить код в 1С: все рабочие способы
Как выполнить код в 1С: консоль кода, оператор Выполнить, внешние обработки, отладчик и фоновые задания. Пошаговые инструкции и типичные ошибки.
Вопрос «как выполнить код в 1С» возникает в нескольких ситуациях: нужно разово запустить фрагмент на встроенном языке без изменения конфигурации, проверить алгоритм перед внедрением, массово обработать данные или отладить готовый механизм. Для каждой из этих задач есть свой инструмент, и выбор неправильного способа — частая причина потери времени и ошибок.
В 1С:Предприятии код можно выполнять в режиме конфигуратора (через отладку и внешние обработки), в режиме предприятия (через консоль кода, внешние обработки, регламентные задания) и динамически — операторами Выполнить() и ОценитьВыражение(). Ниже разобраны все основные способы с условиями применения и ограничениями.
Способы выполнения кода: что выбрать под задачу
Прежде чем писать код, определите контекст: код должен выполниться на клиенте или на сервере, разово или регулярно, в тестовой или рабочей базе. От этого зависит инструмент. Например, массовое изменение данных в большой базе безопаснее делать на сервере через внешнюю обработку, а проверку формулы — в консоли кода.
Основные варианты: консоль кода (внешняя обработка), отладчик конфигуратора, оператор Выполнить(), внешние обработки и отчёты, регламентные и фоновые задания, а также обработчики событий в модулях конфигурации. Каждый из них разобран ниже.
Сравнение способов выполнения кода
Разовые запуски, эксперименты, обработка данных без изменения конфигурации. Требует прав и файла обработки.
Проверка логики существующей конфигурации, пошаговое выполнение, просмотр переменных. Не подходит для разовых произвольных фрагментов.
Динамический запуск кода из строки внутри программы. Ограничения в безопасном режиме и на веб-клиенте.
Повторно используемые операции, которые не должны менять конфигурацию. Нужно подключение через Файл — Открыть или механизм дополнительных обработок.
Длительные операции без блокировки сеанса пользователя. Код должен быть в серверном модуле конфигурации.
Консоль кода: как запустить произвольный фрагмент
Консоль кода — это внешняя обработка, которая открывает поле ввода на встроенном языке и выполняет написанный код в текущей базе. Это самый быстрый способ выполнить разовый код: посчитать данные, исправить реквизит, проверить запрос. Обработку можно взять из стандартных инструментов разработчика (ИР) или написать самостоятельно — она состоит из поля текста и кнопки с вызовом Выполнить(ТекстКода).
Порядок работы: откройте базу в режиме 1С:Предприятие под пользователем с достаточными правами, откройте файл консоли через меню «Файл — Открыть», введите код и нажмите «Выполнить». Результат выводится через Сообщить() или возврат значения, если консоль это поддерживает.
- 1Сделайте резервную копию базы, если код меняет данные
- 2Откройте базу в режиме 1С:Предприятие под пользователем с полными правами
- 3Откройте файл консоли кода через Файл — Открыть
- 4Введите код и сначала выполните его в проверочном варианте (вывод данных без записи)
- 5Выполните рабочий вариант и проверьте результат на контрольном примере
Пример простого кода для консоли — вывод списка контрагентов:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
КонецЦикла;
Оператор Выполнить(): динамический запуск кода из строки
Оператор Выполнить(СтрокаКода) выполняет произвольный текст на встроенном языке, переданный строкой. Это основа всех консолей кода и механизмов пользовательских алгоритмов (например, произвольных обработчиков в настройках обмена). Если нужно получить значение выражения, а не выполнить инструкции, используется функция ОценитьВыражение(Строка).
У способа есть важные ограничения. В безопасном режиме (например, при выполнении кода из дополнительных отчётов и обработок без отключения защиты) Выполнить() может быть запрещён профилем безопасности. На веб-клиенте и в тонком клиенте доступен не весь контекст: серверные вызовы из строки кода требуют, чтобы код выполнялся на сервере. Кроме того, ошибка внутри динамического кода указывает на строку внутри строки, что усложняет диагностику.
Пример безопасного шаблона с обработкой ошибок:
Попытка
Выполнить(ТекстАлгоритма);
Исключение
Сообщить("Ошибка выполнения: " + ОписаниеОшибки());
КонецПопытки;
Отладчик: как выполнить код пошагово и проверить логику
Когда нужно не просто запустить код, а понять, как он работает, используется отладчик конфигуратора. Откройте конфигуратор, установите точку останова в нужной строке модуля (клик по полю слева от строки или F9), затем запустите отладку через «Отладка — Начать отладку» (F5). Выполните в предприятии действие, которое вызывает код, — выполнение остановится на точке.
В остановленном состоянии доступны: пошаговое выполнение (F11 — с заходом в процедуры, F10 — через них), просмотр значений переменных (Shift+F9 — «Вычислить выражение»), табло (окно с отслеживаемыми выражениями) и стек вызовов. Окно «Вычислить выражение» фактически позволяет выполнить произвольный код в текущем контексте — это удобный способ проверить вариант исправления прямо во время остановки.
Внешние обработки и фоновые задания
Внешняя обработка (файл .epf) — способ выполнить код, не меняя конфигурацию и не теряя возможность повторного использования. Обработка создаётся в конфигураторе («Файл — Новый — Внешняя обработка»), код размещается в модуле формы или модулях объекта. В типовых конфигурациях внешние обработки можно подключить через механизм «Дополнительные отчеты и обработки» — тогда они доступны пользователям прямо из интерфейса.
Для длительных операций (пересчёт итогов, массовая загрузка) код запускается в фоновом задании через ФоновыеЗадания.Выполнить("ИмяМетода", Параметры), где метод — экспортная процедура общего серверного модуля. Регламентные задания выполняют код по расписанию без участия пользователя. Оба механизма требуют, чтобы код находился внутри конфигурации, — произвольную строку в фоне так просто не запустить.
Частые ошибки при выполнении кода
Большинство проблем при запуске кода в 1С связаны не с синтаксисом, а с контекстом и правами. Код, отлично работающий в консоли на тестовой базе, может не выполниться в рабочей из-за безопасного режима, недостатка прав у пользователя или попытки вызвать серверный метод с клиента.
Для массовых операций используйте транзакции с обработкой исключений и ограничивайте выборку («ПЕРВЫЕ N» на этапе проверки). Это позволяет откатить изменения при ошибке и не блокировать работу пользователей.
Как проверить результат
Появились ожидаемые сообщения или изменённые данные
Молчание без результата — возможно, код не дошёл до выполнения (права, безопасный режим)
Контрольный объект содержит ожидаемые значения, связанные данные согласованы
Часть объектов изменена, часть нет — признак отсутствия транзакции
Операция завершилась за разумное время, пользователи работают
Длительные блокировки, жалобы пользователей — выборка слишком велика
FAQ
Как выполнить код в 1С без изменения конфигурации?
Используйте консоль кода или внешнюю обработку (.epf), открыв её в режиме предприятия через «Файл — Открыть». Конфигурация при этом не меняется, обновление базы не требуется. Для повторного использования сохраните код в файл обработки.
Почему Выполнить() выдаёт ошибку в дополнительной обработке?
Дополнительные отчёты и обработки по умолчанию работают в безопасном режиме, где динамическое выполнение кода ограничено профилем безопасности. Проверьте настройки безопасного режима и права, либо перенесите логику в статический код модуля.
Как выполнить код на сервере, если я работаю в тонком клиенте?
Код должен находиться в серверном модуле (общем модуле с признаком «Сервер» или серверной части модуля формы) и вызываться через серверный вызов. Консоль кода в тонком клиенте выполняет код в контексте клиента, поэтому серверные операции из неё недоступны напрямую.
Можно ли выполнить код по расписанию?
Да, через регламентные задания: создайте в конфигураторе регламентное задание, укажите метод (экспортную процедуру общего модуля) и расписание. В файловом варианте для исполнения расписания нужен запущенный сеанс с выполнением фоновых заданий, в клиент-серверном задания выполняет сервер.
Что делать, если код в отладке не останавливается на точке останова?
Проверьте три вещи: включена ли отладка на сервере (ключ -debug), подключён ли нужный сеанс в списке предметов отладки («Отладка — Подключение»), и совпадает ли отлаживаемый модуль с текущей версией конфигурации базы — после изменения модуля без обновления конфигурации БД точки могут не срабатывать.
Как безопасно выполнить массовое изменение данных?
Сделайте копию базы, сначала выполните код в режиме «только чтение» (выбор и вывод данных без записи), затем ограничьте выборку и оберните запись в транзакцию с обработкой исключений. После выполнения проверьте несколько контрольных объектов вручную.
Что важно запомнить
Для разового запуска кода используйте консоль кода, для проверки логики — отладчик, для динамических алгоритмов — Выполнить(), для регулярных операций — внешние обработки и регламентные задания. Любой код, меняющий данные, запускайте только после резервной копии и проверки на тестовой базе.