Где на самом деле исполняется код из Конфигуратора 1С и как его запустить
Содержание
Сам Конфигуратор 1С 8.3 код на встроенном языке не исполняет: он только хранит и редактирует конфигурацию. Чтобы выполнить команду, её запускают в режиме 1С:Предприятие — через внешнюю обработку
, через отладчик (Отладка → Начать отладку, F5) или пакетно из командной строки ключом DESIGNER / ENTERPRISE /Execute. Служебные команды самого Конфигуратора (выгрузка базы, обновление конфигурации
, тестирование) тоже можно выполнить без окна — из bat-файла.
Нужно быстро проверить запрос, поправить реквизит у тысячи документов или ночью выгрузить базу — способ зависит от задачи. Разберём все рабочие варианты для платформы 8.3 с интерфейсом «Такси»: от безопасной консоли до пакетного режима.
Какой способ выполнения команды выбрать
Под «командой» в Конфигураторе обычно понимают одно из трёх: произвольный код на встроенном языке, пункт меню самого Конфигуратора или регламентное действие по расписанию. Для каждого случая — свой инструмент.
| Задача | Инструмент | Нужен монопольный доступ |
|---|---|---|
| Выполнить кусок кода, проверить запрос | Внешняя обработка-консоль | Нет |
| Посмотреть значения переменных в момент работы | Отладчик, Shift+F9 | Нет |
| Запустить обработку при старте базы | 1cv8 ENTERPRISE /Execute | Нет |
| Выгрузить базу в .dt, обновить конфигурацию ночью | 1cv8 DESIGNER с ключами | Да, для загрузки .dt и обновления структуры |
| Выполнять код по расписанию | Регламентное задание | Нет |
Если задачу можно решить штатной обработкой (групповое изменение реквизитов, удаление помеченных), начните с неё. Свой код нужен там, где типовых инструментов не хватает.
1. Консоль кода: выполнение произвольной команды через внешнюю обработку
Самый частый сценарий — «выполнить вот эти три строки». Для этого делают внешнюю обработку с полем для кода или с готовым обработчиком. Вариант с готовым обработчиком надёжнее: код проходит синтаксический контроль ещё в Конфигураторе.
Как создать обработку для запуска кода
- В Конфигураторе откройте
Файл → Новыйи выберите «Внешняя обработка». - Задайте имя, например
ВыполнитьКоманду. - Создайте основную форму обработки: в окне объекта на вкладке «Формы» нажмите кнопку добавления.
- В форме на вкладке «Команды» добавьте команду, перетащите её на форму — получится кнопка.
- Нажмите на значок лупы у свойства «Действие» команды, выберите размещение «На клиенте и процедура на сервере без контекста» или напишите обработчики вручную.
- Сохраните файл с расширением
.epf.
Пример кода формы — запрос к справочнику и вывод результата в окно сообщений:
&НаКлиенте
Процедура ВыполнитьКод(Команда)
ВыполнитьКодНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ВыполнитьКодНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК Количество
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Сообщить("Позиций номенклатуры: " + Формат(Выборка.Количество, "ЧН=0; ЧГ=0"));
КонецЕсли;
КонецПроцедуры
Не называйте процедуру просто Выполнить: это зарезервированный оператор встроенного языка, модуль не пройдёт синтаксический контроль.
Как запустить обработку
- Запустите базу в режиме 1С:Предприятие.
- Откройте
Главное меню → Файл → Открытьи выберите файл.epf. - Нажмите кнопку на форме. Результат появится в окне сообщений внизу.
Если меню «Файл → Открыть» недоступно, у пользователя нет права «Интерактивное открытие внешних обработок». Его выдают в профиле групп доступа или открывают обработку под администратором.
Универсальная консоль с полем для кода
Если код меняется каждый раз, удобнее форма с многострочным полем и вызовом Выполнить(ТекстКода) на сервере. Оператор Выполнить исполняет строку как фрагмент программы.
&НаСервереБезКонтекста
Процедура ВыполнитьТекстНаСервере(ТекстКода)
Выполнить(ТекстКода);
КонецПроцедуры
Такая консоль исполняет всё, что в неё вписали, с правами текущего пользователя. Не оставляйте её в общем доступе и не запускайте в рабочей базе код, который не проверили на копии. В готовых консолях из открытых каталогов встречаются как удобные инструменты, так и сырые поделки: открывайте их в Конфигураторе и читайте код перед запуском.
2. Как выполнить команду в конфигураторе через отладчик
Отладчик — второй путь исполнить код «из Конфигуратора». Вы ставите точку останова, программа замирает, и в этот момент можно вычислить любое выражение в контексте текущей процедуры.
Запуск отладки
- Откройте модуль нужного объекта или внешней обработки.
- Поставьте точку останова на строке:
F9. - Выберите
Отладка → Начать отладку(F5). Запустится 1С:Предприятие, подключённое к отладчику. - Выполните действие, которое доходит до этой строки. Конфигуратор выйдет на передний план, строка подсветится.
Внешнюю обработку тоже можно отлаживать: откройте .epf в Конфигураторе через Файл → Открыть, поставьте точку останова, а затем откройте этот же файл в запущенном 1С:Предприятии.
Пошаговое выполнение
| Клавиша | Что делает |
|---|---|
F10 | Шаг через: выполнить строку, не заходя в вызываемые процедуры |
F11 | Шаг в: зайти внутрь вызываемой процедуры |
Shift+F11 | Шаг из: выполнить процедуру до конца и вернуться выше |
Ctrl+F10 | Идти до курсора |
F5 | Продолжить до следующей точки останова |
«Вычислить выражение» — мини-консоль внутри отладчика
На остановке нажмите Shift+F9. Откроется окно, где можно ввести выражение: значение переменной, ТекущаяДата(), Объект.Товары.Количество() или вызов функции. Результат и его тип покажутся сразу, коллекции раскрываются деревом.
Вычисляемое выражение реально выполняется. Если вы вызовете функцию, которая записывает объект, запись произойдёт в базе. На рабочей базе вычисляйте только чтение.
💡 Полезно включить Отладка → Остановка по ошибке: отладчик остановится там, где возникло исключение, даже внутри Попытка. Это быстрый способ найти строку, которая «тихо» падает.
Отладка на сервере 1С
В файловой базе серверный код отлаживается сразу. В клиент-серверной рабочий процесс должен разрешать отладку: службу агента сервера запускают с ключом -debug. Этот ключ добавляют в строку запуска службы ragent.exe в её свойствах.
Изменение параметров службы требует её перезапуска — все сеансы пользователей на этом сервере оборвутся. Делайте это вне рабочего времени и на тестовом сервере, если он есть.
3. Пакетный запуск: команды Конфигуратора из bat-файла
Многие действия меню Конфигуратора доступны ключами командной строки 1cv8.exe. Это удобно для ночных выгрузок, обновлений по расписанию и обслуживания десятка баз одним скриптом.
Общий вид команды
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "D:\Backup\buh.dt" /Out "D:\Backup\log.txt" /DisableStartupDialogs
Номер версии в пути подставьте свой — посмотрите папку в C:\Program Files\1cv8\. Для серверной базы вместо /F "путь" пишут /S "ИмяСервера\ИмяБазы".
Ключи, которые используют чаще всего
| Ключ | Что делает | Аналог в меню |
|---|---|---|
/DumpIB файл.dt | Выгрузить информационную базу | Администрирование → Выгрузить информационную базу |
/RestoreIB файл.dt | Загрузить базу из .dt | Администрирование → Загрузить информационную базу |
/DumpCfg файл.cf | Сохранить конфигурацию в файл | Конфигурация → Сохранить конфигурацию в файл |
/LoadCfg файл.cf | Загрузить конфигурацию из файла | Конфигурация → Загрузить конфигурацию из файла |
/UpdateDBCfg | Обновить конфигурацию базы данных | Конфигурация → Обновить конфигурацию базы данных (F7) |
/IBCheckAndRepair | Тестирование и исправление | Администрирование → Тестирование и исправление |
/Out файл.txt | Писать сообщения в лог | — |
/DisableStartupDialogs | Не показывать диалоги при старте | — |
/RestoreIB полностью заменяет данные базы содержимым файла. Перед загрузкой .dt сделайте выгрузку текущего состояния.
Как запустить обработку при старте 1С:Предприятия
Режим ENTERPRISE с ключом /Execute открывает указанную внешнюю обработку сразу после входа:
"C:\Program Files\1cv8\8.3.24.1586\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /Execute "D:\Tools\ВыполнитьКоманду.epf"
Ключ /C "строка" передаёт произвольный параметр. В коде его читают через глобальную переменную ПараметрЗапуска. Так одна обработка может выполнять разные действия в зависимости от параметра, а после работы закрывать сеанс методом ЗавершитьРаботуСистемы(Ложь).
Проверка результата
После пакетного запуска откройте лог из /Out. Если файл пуст и база выгружена — команда прошла. Если в логе ошибка авторизации или блокировки, выполнение остановилось на старте. Пароль в bat-файле храните в каталоге с ограниченным доступом: он лежит открытым текстом.
4. Блокировки и монопольный режим перед выполнением команд
Не каждая команда Конфигуратора требует выгнать пользователей. Монопольный доступ нужен для обновления структуры базы данных, загрузки .dt, тестирования и исправления. Выгрузку .dt, сохранение конфигурации в файл и правку модулей можно делать при работающих пользователях.
Как освободить базу
- 🔒 В типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11):
Администрирование → Обслуживание → Блокировка работы пользователей. Задаёте время, текст сообщения и код разрешения. - 🖥 В клиент-серверной базе: консоль администрирования серверов → свойства информационной базы → флажки блокировки начала сеансов и регламентных заданий.
- ⌨ Из командной строки: запуск в режиме
ENTERPRISEс ключом/C "ЗавершитьРаботуПользователей"включает блокировку средствами БСП,/C "РазрешитьРаботуПользователей"снимает её.
Чтобы зайти в заблокированную базу самому, при запуске передают код разрешения ключом /UC КодРазрешения — тот, что вы указали при установке блокировки.
Активные сеансы видно в Конфигураторе: Администрирование → Активные пользователи. Проверьте список перед F7 — так вы сразу поймёте, кто держит базу.
5. Фоновые и регламентные задания: выполнение кода по расписанию
Если команду нужно выполнять регулярно — пересчитывать остатки, загружать курсы, чистить временные данные, — её оформляют регламентным заданием.
Как добавить регламентное задание
- В дереве конфигурации откройте ветку
Общие → Регламентные заданияи добавьте новый объект. - В свойстве «Имя метода» укажите экспортную процедуру общего модуля. Модуль должен быть серверным.
- Задайте расписание и флажок «Использование».
- Обновите конфигурацию базы данных (
F7).
В типовых конфигурациях список заданий и их состояние смотрят в 1С:Предприятии: Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. Там же задание можно запустить вручную, не дожидаясь расписания.
Особенности, о которых забывают
- 📁 В файловой базе регламентные задания выполняются, только пока открыт хотя бы один сеанс клиента. Закрыли все окна на ночь — ночное задание не запустится.
- 🧩 Фоновое задание выполняется на сервере без интерфейса:
Сообщить()и диалоги из него пользователь не увидит. Пишите результат в журнал регистрации черезЗаписьЖурналаРегистрации(). - 🔁 Чтобы запустить код в фоне из своей обработки, используйте
ФоновыеЗадания.Выполнить("ИмяМодуля.ИмяПроцедуры", Параметры). Процедура должна быть экспортной и в серверном общем модуле.
Отладка фонового задания
Точка останова в процедуре фонового задания сама не сработает: отладчик к нему не подключён. В Конфигураторе откройте Отладка → Подключение, включите автоматическое подключение и отметьте фоновые задания среди типов предметов отладки. Для клиент-серверной базы сервер, как и выше, должен быть запущен с разрешённой отладкой.
Более простой путь для первой проверки: вызвать ту же экспортную процедуру из внешней обработки обычным серверным вызовом. Логика та же, а останов срабатывает без настроек.
6. Почему команда не выполняется: частые ошибки
Администрирование → Активные пользователи, установите блокировку работы пользователей и дождитесь завершения сеансов./Out и /DisableStartupDialogs, проверьте лог и путь к 1cv8.exe нужной версии.Конфигурация → Обновить конфигурацию базы данных (F7) или ключ /UpdateDBCfg.Ctrl+F7), затем вставляйте в консоль.Если не помогло
Запустите ту же операцию на копии базы под администратором. Если там всё работает, дело в правах или блокировках рабочей базы. Если падает и на копии — смотрите журнал регистрации (Администрирование → Журнал регистрации в Конфигураторе): там видны текст исключения и модуль, где оно возникло.
7. Частые вопросы
Можно ли выполнить код прямо в Конфигураторе без запуска 1С:Предприятия?
/Execute.Чем `Выполнить()` отличается от `Вычислить()`?
Выполнить исполняет фрагмент кода из нескольких операторов и ничего не возвращает. Вычислить вычисляет одно выражение и возвращает его значение.Работает ли консоль кода в веб-клиенте?
Нужно ли выгонять пользователей, чтобы выполнить обработку?
Как выполнить команду сразу в нескольких базах?
1cv8.exe DESIGNER или ENTERPRISE /Execute для каждой. Каждой базе дайте свой файл лога /Out, иначе записи перезапишут друг друга.