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

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

Как вводить код в 1С: практическое руководство

Как правильно вводить и редактировать код в 1С: конфигуратор, модули объектов, внешние обработки, отладка и типичные ошибки начинающих разработчиков.

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

Начинающие часто путают два сценария: «ввести код» как пользователь (например, код активации, код товара в поле документа) и «ввести код» как разработчик (написать алгоритм на встроенном языке). Эта статья посвящена второму сценарию — написанию и редактированию программного кода, поскольку именно он вызывает больше всего вопросов и несёт риски для данных.

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

Где именно в 1С вводится программный код

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

Выбор модуля определяет, когда и где код сработает. Код в модуле объекта документа выполнится при записи или проведении этого документа. Код в общем модуле с флагом «Сервер» будет доступен только на сервере. Код в модуле формы сработает при открытии формы или действиях пользователя с элементами интерфейса.

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

Как открыть конфигуратор и найти нужный модуль

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

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

Чтобы открыть модуль объекта, найдите объект в дереве (например, «Документы → РеализацияТоваровУслуг»), щёлкните правой кнопкой и выберите «Открыть модуль объекта». Модуль формы открывается через свойства конкретной формы. Общие модули находятся в ветке «Общие → Общие модули».

Порядок открытия модуля для ввода кода
  1. 1
    Сделайте резервную копию базы (выгрузку в .dt или копию на уровне СУБД)
  2. 2
    Откройте базу в конфигураторе под пользователем с правами разработчика
  3. 3
    Откройте дерево конфигурации: Конфигурация → Открыть конфигурацию
  4. 4
    Найдите нужный объект и откройте его модуль через контекстное меню
  5. 5
    Введите код, выполните проверку синтаксиса (F7 или кнопка на панели)
  6. 6
    Сохраните и обновите конфигурацию базы данных (F7 в главном окне или Конфигурация → Обновить конфигурацию базы данных)
  7. 7
    Проверьте работу в пользовательском режиме на тестовых данных

Как ввести и проверить код в модуле

Редактор модулей в 1С поддерживает подсветку синтаксиса, автоподстановку (Ctrl+Пробел) и контекстную подсказку по процедурам платформы. Код пишется на встроенном языке, который допускает как русские, так и английские ключевые слова — но смешивать их в одном проекте не принято.

Типичная структура кода в модуле — процедуры и функции. Процедура-обработчик события имеет строго определённое имя и набор параметров: например, «ПриЗаписи» в модуле объекта или «ПриОткрытии» в модуле формы. Если назвать обработчик иначе, платформа его просто не вызовет.

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

// Пример: обработчик события в модуле объекта документа

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Если СуммаДокумента < 0 Тогда

Отказ = Истина;

Сообщить("Сумма документа не может быть отрицательной");

КонецЕсли;

КонецПроцедуры

После сохранения модуля изменения ещё не действуют в рабочей базе. Чтобы код заработал, обновите конфигурацию базы данных: клавиша F7 в главном окне конфигуратора или команда «Конфигурация → Обновить конфигурацию базы данных». Если структура данных не менялась (только код), обновление пройдёт быстро и без реструктуризации.

Ввод кода через внешние обработки

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

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

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

Способы ввода кода

Модуль объекта в конфигураторе

Подходит для постоянной логики (проверки при записи, автозаполнение). Минус: доработка типовой конфигурации усложняет обновления.

Внешняя обработка (.epf)

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

Консоль кода в пользовательском режиме

Подходит для быстрой проверки алгоритма и разового исправления данных. Требует наличия соответствующей подсистемы в конфигурации.

Расширение конфигурации

Подходит для доработок без снятия с поддержки. Ограничение: не все объекты и механизмы доступны для изменения через расширения.

Отладка: как проверить, что код работает правильно

Отладчик встроен в конфигуратор: включите его командой «Отладка → Начать отладку» (F5) — запустится сеанс 1С:Предприятия, подключённый к отладчику. Точки останова ставятся кликом по левому полю редактора модуля или клавишей F9 на нужной строке.

Когда выполнение дойдёт до точки останова, вы сможете просматривать значения переменных (Shift+F9 — вычислить выражение), пошагово проходить код (F10 — шаг через, F11 — шаг внутрь процедуры) и отслеживать стек вызовов. Это основной способ понять, почему алгоритм ведёт себя не так, как ожидалось.

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

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

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

Синтаксическая проверка модуля
Норма

Нет сообщений об ошибках в окне служебных сообщений

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

Ошибки компиляции — код не будет выполняться

Обновление конфигурации базы данных
Норма

Обновление завершилось без ошибок и предупреждений о реструктуризации

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

Конфигуратор требует завершить сеансы пользователей или сообщает о конфликтах

Работа обработчика события
Норма

Точка останова в обработчике срабатывает при нужном действии пользователя

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

Отладчик не останавливается — обработчик назван неправильно или не привязан к событию

Данные после выполнения кода
Норма

Значения реквизитов и записи в регистрах соответствуют ожиданиям на тестовом примере

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

Данные искажены — откатите изменения из резервной копии и пересмотрите алгоритм

Типичные ошибки при вводе кода и их последствия

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

Вторая распространённая проблема — код, обращающийся к базе данных в клиентском контексте. В управляемых формах прямой запрос к данным из процедуры &НаКлиенте вызовет ошибку. Решение — вызов серверной процедуры, которая вернёт готовые данные.

Третья группа ошибок — работа с данными без транзакций и проверок. Код, который массово изменяет объекты, должен предусматривать отказ при ошибке и возможность отката. Всегда тестируйте такие алгоритмы на копии базы, а не на рабочих данных.

Типичные ошибки
01
Правка типовой конфигурации вместо расширения — затрудняет или блокирует штатные обновления
02
Имя обработчика события написано с ошибкой — код просто не вызывается, и это трудно заметить без отладки
03
Забыто обновление конфигурации базы данных — код сохранён, но в пользовательском режиме работает старая версия
04
Обращение к данным из клиентской процедуры — ошибка выполнения в управляемом приложении
05
Массовое изменение данных без резервной копии — при ошибке в алгоритме данные теряются безвозвратно
06
Код введён в модуль формы вместо модуля объекта — логика срабатывает только при открытой форме, а не при фоновой записи

Безопасность: что нельзя делать без подготовки

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

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

Ограничьте круг лиц с правами на конфигуратор. Права «Администрирование» и возможность изменения конфигурации должны быть только у тех, кто понимает последствия. В типовых конфигурациях для запуска внешних обработок пользователями есть отдельный механизм дополнительных отчётов и обработок с контролем безопасности — используйте его вместо свободного открытия файлов.

Как выбрать подход под конкретную задачу

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

Маршрут решения

Как выбрать способ ввода кода

Нужно один раз изменить данные или проверить алгоритмСоздайте внешнюю обработку или используйте консоль кода
Нужна постоянная проверка при записи документов в типовой конфигурацииСоздайте расширение конфигурации с подпиской на событие
Конфигурация собственная или снята с поддержкиВводите код непосредственно в модули объектов через конфигуратор
Код пришёл из внешнего источникаСначала изучите текст модуля и протестируйте на пустой копии базы
Меняется структура данных (новые реквизиты, объекты)Планируйте обновление в нерабочее время с завершением сеансов пользователей

Часто задаваемые вопросы

Можно ли вводить код в 1С без конфигуратора?

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

Почему введённый код не выполняется, хотя ошибок нет?

Чаще всего причины три: не обновлена конфигурация базы данных после сохранения модуля, обработчик события назван неправильно и платформа его не вызывает, либо код находится в клиентской процедуре, а выполняться должен на сервере. Проверьте срабатывание точкой останова в отладчике.

Чем расширение конфигурации лучше прямой доработки?

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

Безопасно ли открывать внешние обработки, скачанные из интернета?

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

Что делать, если после обновления конфигурации базы данных программа перестала запускаться?

Не предпринимайте повторных изменений. Восстановите базу из резервной копии, сделанной перед обновлением, и разбирайте причину на копии. Если копии нет — потребуется тестирование и исправление базы через утилиту chdbfl для файлового варианта или средствами СУБД, что лучше доверить специалисту.

Нужно ли знать программирование, чтобы вводить код в 1С?

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

Итог

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

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