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