Разработка и Конфигурация · 9 мин
Как сделать скрипт для 1С: от первой обработки до рабочего кода
Как сделать скрипт для 1С: внешние обработки, встроенный язык, примеры кода, отладка и типичные ошибки. Пошаговое руководство для начинающих разработчиков.
Скрипт в контексте 1С — это обычно внешняя обработка (файл с расширением .epf) или фрагмент кода на встроенном языке, который автоматизирует рутинную операцию: массово изменяет реквизиты, формирует отчёт, загружает данные из файла. В отличие от доработки конфигурации, внешняя обработка не требует снятия конфигурации с поддержки и не ломается при обновлении — поэтому именно с неё стоит начинать.
Для работы понадобятся три вещи: установленная платформа 1С:Предприятие, конфигуратор (входит в поставку платформы) и тестовая база, на которой не жалко экспериментировать. Никогда не пишите и не отлаживайте скрипты сразу в рабочей базе: ошибка в цикле записи может испортить тысячи документов за секунды.
Ниже разобран полный цикл: выбор формата скрипта, создание обработки, написание кода, отладка и подключение обработки к базе. Примеры даны на встроенном языке 1С — он одинаков для всех конфигураций, отличаются только имена объектов метаданных.
Выбор формата: обработка, расширение или внешний скрипт
Прежде чем писать код, определите, какой инструмент подходит под задачу. В 1С есть несколько способов выполнить произвольный код, и у каждого свои ограничения.
Внешняя обработка (.epf) — универсальный вариант для разовых и периодических операций: пересчёт итогов, групповое изменение реквизитов, выгрузка данных. Расширение конфигурации (.cfe) нужно, когда требуется изменить поведение типовых форм или добавить свою команду в интерфейс без изменения самой конфигурации. Внешние скрипты на OneScript (открытый интерпретатор языка 1С) подходят для задач администрирования: пакетное обновление баз, выгрузка конфигураций, работа с хранилищем из командной строки.
Сравнение вариантов
Подходит для разовых операций с данными и отчётов. Не требует изменения конфигурации, легко переносится между базами.
Нужно, когда требуется изменить типовые формы, модули или добавить команды в интерфейс. Ограничение: нельзя менять структуру данных произвольно.
Для автоматизации вне 1С: обновление баз, скрипты запуска, CI-задачи. Не имеет доступа к интерфейсу прикладного решения.
Создание внешней обработки в конфигураторе
Откройте конфигуратор и выберите в меню «Файл» → «Новый» → «Внешняя обработка». Задайте имя (оно попадёт в код, поэтому используйте латиницу без пробелов, например ЗагрузкаЦенИзExcel — точнее, ZagruzkaCen) и синоним — понятное название для пользователей.
Если обработка должна иметь интерфейс (кнопки, поля выбора), добавьте форму: в дереве обработки правой кнопкой → «Добавить» → «Форма». На форму перетащите нужные элементы — поле выбора периода, кнопку «Выполнить». Код кнопки пишется в модуле формы, а логику, которая не зависит от интерфейса, лучше размещать в модуле объекта обработки.
- 1Откройте конфигуратор, меню «Файл» → «Новый» → «Внешняя обработка»
- 2Задайте имя обработки латиницей и понятный синоним
- 3Добавьте форму, если нужен интерфейс, и разместите на ней элементы управления
- 4Напишите код в модуле формы или объекта
- 5Сохраните файл .epf и откройте его в режиме Предприятия на тестовой базе
- 6Проверьте результат на копии данных, затем перенесите в рабочую базу
Написание кода на встроенном языке
Встроенный язык 1С похож на упрощённый Basic: операторы можно писать по-русски или по-английски, типизация динамическая. Простейший скрипт — массовое изменение реквизита у справочника — выглядит так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.СтавкаНДС = Перечисления.СтавкиНДС.НДС20;
Объект.Записать();
КонецЦикла;
Ключевые правила: данные читаются через запрос или выборку, а изменяются только через объект — сначала ПолучитьОбъект(), затем изменение реквизитов, затем Записать(). Напрямую изменять ссылку нельзя. При массовых изменениях оборачивайте запись в транзакцию (НачатьТранзакцию() / ЗафиксироватьТранзакцию()), чтобы при ошибке не осталось наполовину обработанных данных.
Работа с файлами: загрузка из Excel и CSV
Частая задача — загрузить данные из внешнего файла. Для CSV используйте объекты ЧтениеТекста и построчный разбор через СтрРазделить(). Для Excel на клиенте доступен COM-объект Excel.Application (работает только там, где установлен Excel), а универсальный вариант — табличный документ: ТабДок.Прочитать(ИмяФайла) читает xlsx без установленного Office.
Отладка и проверка результата
Отладчик встроен в конфигуратор. Откройте внешнюю обработку в конфигураторе, поставьте точку останова (F9) на нужной строке и запустите отладку (F5) — конфигуратор откроет сеанс предприятия, и при выполнении кода выполнение остановится на точке. В табло (Shift+F9) можно смотреть значения переменных, в том числе содержимое запросов и таблиц значений.
Для проверки результата не полагайтесь на отсутствие ошибок: скрипт может отработать «успешно», но записать не то и не туда. Контролируйте количество обработанных объектов (выводите счётчик через Сообщить()) и выборочно открывайте изменённые элементы в базе.
Как проверить результат
Совпадает с количеством строк в выборке запроса
Меньше ожидаемого — часть объектов была заблокирована или не прошла проверку заполнения
Реквизиты заполнены ожидаемыми значениями, даты и ссылки корректны
Пустые значения или значения по умолчанию — ошибка в логике присвоения
Документы проведены, движения по регистрам сформированы
Документ записан, но не проведён — движений нет, отчёты не изменятся
Подключение обработки к базе
Разовый запуск выполняется просто: в режиме Предприятия «Файл» → «Открыть» → выбор файла .epf. Для постоянного использования подключите обработку через «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки». Для этого в модуле обработки нужно реализовать функцию СведенияОВнешнейОбработке() по стандарту БСП — она описывает вид обработки, версию и команды.
Обратите внимание: если в базе включён режим защиты от опасных действий, открытие внешних обработок может блокироваться. Это осознанная защита от вредоносного кода — отключайте её только для проверенных файлов и только на время.
Типичные ошибки начинающих
Отдельная группа ошибок связана с клиент-серверным разделением кода. В управляемых формах код с директивой &НаКлиенте не имеет доступа к запросам и прямой записи данных — эти операции выполняются только в процедурах &НаСервере. Типовой приём: клиентская процедура собирает параметры и вызывает серверную, которая делает всю работу с данными.
Частые вопросы
Можно ли писать скрипты для 1С без конфигуратора?
Для задач внутри базы — практически нет: внешние обработки создаются именно в конфигураторе. Но для административных задач (обновление, выгрузка, пакетный запуск) подходит OneScript — открытый интерпретатор, который работает из командной строки без конфигуратора.
Чем внешняя обработка отличается от отчёта?
Технически почти ничем: оба — внешние файлы с кодом и формами. Отчёт (.erf) ориентирован на вывод данных через СКД и табличный документ, обработка (.epf) — на выполнение действий. Для скриптов, изменяющих данные, всегда выбирайте обработку.
Нужно ли снимать конфигурацию с поддержки для внешних обработок?
Нет. Внешние обработки и расширения не изменяют саму конфигурацию, поэтому поддержка и автоматическое обновление сохраняются. Это главное преимущество такого подхода перед прямой доработкой.
Почему обработка не открывается в базе с ошибкой безопасности?
Скорее всего, включён режим защиты от опасных действий или запрет открытия внешних файлов в настройках пользователя. Проверьте права пользователя и профиль группы доступа, а при необходимости временно откройте файл с отключённой защитой — только если доверяете его источнику.
Как выполнить скрипт по расписанию без участия пользователя?
Используйте регламентное задание: его можно добавить через расширение конфигурации или реализовать в дополнительной обработке с видом, поддерживающим вызов по расписанию. Альтернатива — запуск 1С из планировщика Windows с параметрами командной строки и выполнением внешней обработки.
Что важно запомнить
Скрипт для 1С безопаснее всего делать в виде внешней обработки: она не трогает конфигурацию и переживает обновления. Пишите код через запросы и объекты, оборачивайте массовые изменения в транзакцию, отлаживайтесь на копии базы и делайте резервную копию перед запуском в рабочей среде.