Разработка и Конфигурация · 9 мин
Как создать скрипт для 1С: практическое руководство
Как создать скрипт для 1С: выбор инструмента, встроенный язык, внешние обработки, примеры кода, тестирование и типичные ошибки новичков.
Скрипт в 1С — это фрагмент кода на встроенном языке платформы, который автоматизирует рутинные операции: заполняет документы, формирует отчёты, обрабатывает справочники или выгружает данные. Создать его можно двумя путями — через доработку конфигурации в конфигураторе или через внешнюю обработку, которая не меняет структуру базы и не снимает конфигурацию с поддержки.
Для большинства задач прикладного уровня достаточно внешней обработки: она хранится в отдельном файле с расширением .epf, открывается через меню «Файл → Открыть» и подключается к типовой конфигурации без вмешательства программиста. Такой подход безопаснее, потому что обновление типовой конфигурации не затронет ваш код.
Ниже разобран полный цикл: от выбора инструмента до проверки результата на копии базы, с примерами кода и разбором типичных ошибок.
Выбор инструмента: обработка, расширение или доработка конфигурации
Прежде чем писать код, определите, где он будет жить. От этого зависит безопасность, удобство обновлений и трудоёмкость поддержки.
Внешняя обработка (.epf) подходит для разовых операций: пакетного изменения реквизитов, загрузки данных из Excel, формирования нестандартного отчёта. Файл открывается прямо в режиме предприятия и не требует прав на конфигурирование.
Расширение конфигурации — вариант для постоянной логики: новых кнопок в формах, дополнительных проверок при записи документов, своих печатных форм. Расширение не снимает конфигурацию с поддержки, поэтому обновления проходят штатно.
Прямая доработка конфигурации — крайняя мера. Она нужна, когда расширение технически не может решить задачу (например, требуется изменить состав измерений регистра). Такие изменения усложняют обновления и требуют участия опытного специалиста.
Сравнение вариантов
Разовые задачи, обмен данными, пакетные изменения. Не меняет конфигурацию, но не может добавить кнопку в типовую форму.
Постоянные доработки интерфейса и логики. Сохраняет поддержку, но требует проверки совместимости после обновлений.
Глубокие изменения структуры данных. Максимальные возможности, но обновления становятся ручными и рискованными.
Подготовка среды разработки
Для создания скриптов понадобится платформа 1С:Предприятие с конфигуратором. Запустите конфигуратор через ярлык базы, выбрав режим «Конфигуратор» вместо «Предприятие». Для входа потребуется пользователь с правами администратора.
Первое обязательное действие — создать резервную копию базы через меню «Администрирование → Выгрузить информационную базу». Файл выгрузки (.dt) позволит восстановить данные, если скрипт выполнится с ошибкой и испортит записи.
Для тестирования лучше развернуть отдельную копию базы: загрузите .dt в пустую информационную базу и работайте с ней. В файловом варианте это занимает несколько минут, в клиент-серверном копию создаёт администратор СУБД.
Создание внешней обработки: первый скрипт
В конфигураторе откройте «Файл → Новый → Внешняя обработка». Задайте имя (латиницей, без пробелов, например ЗаполнениеЦен) и синоним — понятное название для пользователей. Сохраните файл на диск.
Добавьте форму обработки: в дереве объекта правой кнопкой — «Добавить форму». На форму поместите кнопку «Выполнить» и создайте для неё обработчик команды. Внутри обработчика пишется код на встроенном языке.
Простейший пример — скрипт, который выводит список контрагентов в окно сообщений:
Процедура ВыполнитьНажатие(Команда)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10
| Контрагенты.Ссылка КАК Контрагент
|ИЗ
| Справочник.Контрагенты КАК Контрагенты";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Контрагент);
КонецЦикла;
КонецПроцедурыКод на встроенном языке 1С пишется на русском, ключевые слова можно дублировать английскими аналогами. Точка с запятой обязательна в конце каждого оператора. Запросы к данным выполняются на языке запросов — он похож на SQL, но работает с объектами конфигурации, а не с таблицами СУБД напрямую.
Типовые сценарии скриптов
Массовое изменение реквизитов
Частая задача — заполнить или исправить реквизит у группы объектов. Скрипт выбирает нужные элементы запросом, получает каждый объект методом ПолучитьОбъект(), меняет значение и записывает. Все изменения оборачивайте в транзакцию, чтобы при ошибке не осталось частично обработанных данных.
Загрузка данных из файла
Для загрузки из Excel или CSV скрипт открывает файл, построчно читает значения и создаёт элементы справочников или документы. Перед созданием объекта проверяйте дубли поиском по коду, наименованию или ИНН — иначе каждый запуск будет плодить копии записей.
Формирование произвольного отчёта
Если типовых отчётов не хватает, скрипт строит выборку запросом и выводит результат в табличный документ через объект ТабличныйДокумент с макетом. Для гибких отчётов с настройками отбора используйте систему компоновки данных (СКД) — она позволяет пользователю менять отборы без изменения кода.
Тестирование и проверка результата
Запускайте скрипт сначала на копии базы с небольшой выборкой: ограничьте запрос конструкцией ПЕРВЫЕ 10 и проверьте, что изменилось именно то, что ожидалось. Только после этого снимайте ограничение.
Для отладки используйте точки останова: в конфигураторе кликните на поле слева от строки кода, запустите отладку (F5) и откройте обработку в режиме предприятия. Выполнение остановится на точке, и вы сможете посмотреть значения переменных в табло (Shift+F9).
Проверяйте не только отсутствие ошибок, но и бизнес-результат: откройте изменённые документы глазами, сравните итоговые суммы до и после, убедитесь, что проведение не сломалось.
Как проверить результат
Совпадает с числом записей в контрольном запросе
Обработано меньше или больше, чем отобрано
Соответствуют ожидаемым при ручной проверке выборки
Пустые значения, обрезанные строки, неверный тип данных
Документы проводятся без ошибок после изменения
Ошибки проведения, битые ссылки, незаполненные движения
Типичные ошибки начинающих
Ошибки при создании скриптов для 1С повторяются из проекта в проект. Знание типовых случаев экономит часы отладки и защищает данные.
Отдельно выделим проблему прав доступа. Скрипт, отлаженный под полными правами, у обычного пользователя может выдавать ошибки доступа к объектам. Проверяйте работу под учётной записью с реальным набором ролей или используйте привилегированный режим (УстановитьПривилегированныйРежим(Истина)) там, где это оправдано.
Часто задаваемые вопросы
Нужно ли знать программирование, чтобы создать скрипт для 1С?
Базовые скрипты доступны человеку без опыта разработки: встроенный язык использует русские ключевые слова и понятную структуру. Достаточно понимать логику «выбрать данные → обработать → записать». Сложные задачи — обмены, СКД, оптимизация — потребуют изучения платформы глубже.
Можно ли писать скрипты для 1С на Python или другом языке?
Напрямую — нет, встроенный язык платформы единственный для кода внутри конфигурации. Внешние языки применяются опосредованно: через COM-соединение, HTTP-сервисы, планы обмена или внешние компоненты. Такие интеграции требуют уже серьёзной подготовки.
Чем внешняя обработка отличается от внешнего отчёта?
Технически это похожие объекты, но отчёт (.erf) ориентирован на вывод данных и обычно строится на СКД, а обработка (.epf) — на выполнение действий: изменение данных, загрузку, сервисные операции. В обработке тоже можно вывести табличный документ.
Как запустить скрипт по расписанию автоматически?
В клиент-серверном варианте используйте регламентные задания — они выполняются на сервере по расписанию. Для файловой базы регламентные задания работают только при запущенном сеансе; альтернатива — запуск 1С из планировщика Windows с параметром /Execute, указывающим на обработку.
Безопасно ли скачивать готовые обработки из интернета?
Нет, без проверки это рискованно: в коде могут быть скрытые действия с данными. Перед запуском откройте обработку в конфигураторе и просмотрите код модулей, особенно обращения к внешним ресурсам, файловой системе и методы записи данных. Запускайте впервые только на копии базы.
Что делать, если скрипт завис при выполнении?
Сначала оцените объём: обработка сотен тысяч записей может законно занимать десятки минут. Если прогресс не меняется и сеанс не отвечает, завершите его через консоль кластера (для сервера) или диспетчер задач (для файловой базы), затем проверьте целостность данных и добавьте в код вывод прогресса и порционную обработку.
Что важно запомнить
Скрипт для 1С создаётся в конфигураторе на встроенном языке. Для разовых задач выбирайте внешнюю обработку, для постоянных — расширение. Всегда делайте резервную копию, тестируйте на копии базы с ограниченной выборкой и проверяйте результат под правами реальных пользователей.