Разработка и Конфигурация · 12 мин
Где писать код в 1С:Предприятие: конфигуратор, модули и редактор кода
Разбираем, где писать код в 1С:Предприятие: конфигуратор, виды модулей, редактор кода, отладка и типичные ошибки начинающих разработчиков.
Весь программный код в 1С:Предприятие пишется во встроенном языке программирования внутри специального инструмента — конфигуратора. Отдельных файлов с исходниками, как в классических языках, здесь нет: код хранится внутри конфигурации информационной базы и редактируется через модули объектов. Поэтому первый навык разработчика 1С — понять, где именно физически располагается код и как его открыть для редактирования.
Конфигуратор запускается из того же дистрибутива, что и пользовательский режим 1С:Предприятие. В стартовом окне выбора информационной базы есть кнопки «1С:Предприятие» и «Конфигуратор»: первая открывает рабочее приложение, вторая — среду разработки. Именно в конфигураторе доступны дерево конфигурации, редакторы модулей, конструкторы запросов и механизм отладки.
Код в 1С не пишется «в одном месте» — он распределён по модулям разных типов. Модуль приложения отвечает за события запуска системы, общие модули содержат переиспользуемые процедуры и функции, модули объектов и форм обрабатывают поведение конкретных справочников, документов и отчётов. Выбор правильного модуля — это половина правильного решения задачи.
Конфигуратор — основная среда для написания кода
Конфигуратор — это интегрированная среда разработки 1С, в которой происходит вся работа с конфигурацией: изменение структуры метаданных, написание кода, создание форм и макетов. Чтобы открыть его, запустите ярлык 1С, выберите нужную информационную базу в списке и нажмите кнопку «Конфигуратор». Если база требует аутентификации, понадобится учётная запись с правами на конфигурирование.
После входа откройте дерево конфигурации через меню «Конфигурация» → «Открыть конфигурацию». Дерево показывает все объекты: справочники, документы, отчёты, обработки, регистры, общие модули и так далее. Из этого дерева вы открываете любой модуль двойным щелчком или через контекстное меню объекта.
Учтите, что конфигуратор и режим предприятия могут работать с одной базой одновременно, но изменения конфигурации применяются только после обновления конфигурации базы данных (клавиша F7 или меню «Конфигурация» → «Обновить конфигурацию базы данных»). Пока обновление не выполнено, пользователи работают со старой версией кода.
Виды модулей: где именно размещать код
Главный вопрос «где писать код» в 1С на самом деле означает «в каком модуле писать код». Каждый тип модуля имеет своё назначение, и размещение логики в неподходящем месте приводит к дублированию, ошибкам контекста и проблемам с производительностью.
Модуль приложения (управляемого или обычного) содержит обработчики событий запуска и завершения системы: ПриНачалеРаботыСистемы, ПриЗавершенииРаботыСистемы. Сюда помещают только логику, связанную со стартом сеанса. Общие модули — это библиотеки процедур и функций, доступных из любой точки конфигурации; именно здесь должна жить переиспользуемая бизнес-логика.
Модули объектов (справочников, документов, регистров) содержат обработчики событий самого объекта: ПриЗаписи, ОбработкаПроведения, ПередЗаписью. Модули форм отвечают за поведение интерфейса: обработку нажатий кнопок, изменение реквизитов, открытие и закрытие формы. Модули менеджеров объектов используются для серверной логики, не привязанной к конкретному экземпляру, — например, для получения данных печати.
| Тип модуля | Что в нём размещают | Когда выбрать |
|---|---|---|
| Общий модуль | Переиспользуемые процедуры и функции | Логика нужна в нескольких объектах |
| Модуль объекта | События записи, проведения, заполнения | Поведение конкретного документа или справочника |
| Модуль формы | Обработчики элементов интерфейса | Реакция на действия пользователя в форме |
| Модуль приложения | События запуска и завершения сеанса | Инициализация при старте системы |
| Модуль менеджера | Серверные операции над типом объектов | Печать, создание объектов, обработка данных |
Как открыть модуль и написать первую процедуру
Чтобы открыть модуль объекта, найдите объект в дереве конфигурации, щёлкните по нему правой кнопкой мыши и выберите «Открыть модуль объекта» (для документа или справочника) либо откройте палитру свойств и перейдите по ссылке «Модуль». Для формы сначала откройте саму форму из ветки «Формы» объекта, затем перейдите на вкладку «Модуль» в нижней части редактора формы.
Редактор кода поддерживает подсветку синтаксиса, автоподстановку (Ctrl+Пробел), шаблоны кода (Ctrl+Q) и переход к определению процедур (F12). Код пишется на встроенном языке 1С, который допускает как русские, так и английские идентификаторы для ключевых слов, хотя в большинстве конфигураций используется русский синтаксис.
Простейшая процедура в общем модуле выглядит так: создайте общий модуль через контекстное меню ветки «Общие» → «Общие модули», задайте имя и флажки «Сервер» и «Вызов сервера», затем напишите процедуру с ключевым словом Экспорт, чтобы она была доступна извне.
Процедура ПроверитьЗаполнениеКонтрагента(Контрагент) Экспорт
Если НЕ ЗначениеЗаполнено(Контрагент.ИНН) Тогда
ВызватьИсключение "У контрагента не заполнен ИНН";
КонецЕсли;
КонецПроцедурыКлиентский и серверный контекст: где выполняется код
В клиент-серверной архитектуре 1С один и тот же модуль может выполняться на клиенте или на сервере, и это принципиально влияет на то, какой код допустим. В модулях форм процедуры помечаются директивами компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Клиентские процедуры имеют доступ к интерфейсу, но не могут напрямую выполнять запросы к базе; серверные — работают с данными, но не имеют доступа к элементам формы.
Общие модули настраиваются флажками в палитре свойств: «Клиент (управляемое приложение)», «Сервер», «Вызов сервера». Модуль с флагом «Вызов сервера» можно вызывать из клиентского кода, что является основным способом выполнить серверную логику из формы. Без этого флага обращение из клиентской процедуры к серверному модулю вызовет ошибку компиляции.
Практическое правило: всю работу с данными (запросы, запись объектов, расчёты) размещайте в серверных модулях, а в клиентских оставляйте только обработку действий пользователя и вызовы серверных процедур. Это снижает сетевой трафик и соответствует архитектуре управляемого приложения.
Как выбрать место для кода
Отладка: как проверить написанный код
Конфигуратор включает полноценный отладчик. Чтобы начать отладку, установите точку останова щелчком слева от строки кода или клавишей F9, затем запустите отладку через меню «Отладка» → «Начать отладку» (F5). Откроется режим предприятия, и при достижении отмеченной строки выполнение остановится, а управление вернётся в конфигуратор.
Во время остановки доступны пошаговое выполнение (F10 — шаг через, F11 — шаг внутрь), просмотр значений переменных наведением курсора, табло выражений (Shift+F9) и стек вызовов. Табло особенно полезно для проверки содержимого запросов и структур — вы можете вычислить любое выражение в текущем контексте.
Если код выполняется в фоновом задании или у другого пользователя, включите в настройках отладки автоматическое подключение к нужным типам предметов отладки: «Отладка» → «Подключение» → «Автоматическое подключение». Без этого точки останова в фоновых процедурах просто не сработают.
- 1Сделайте копию рабочей базы или выгрузку конфигурации (Конфигурация → Сохранить конфигурацию в файл)
- 2Откройте конфигуратор и найдите нужный объект в дереве конфигурации
- 3Откройте соответствующий модуль и внесите изменения
- 4Проверьте синтаксис: Конфигурация → Проверка конфигурации
- 5Протестируйте изменения в отладке (F5) на тестовых данных
- 6Обновите конфигурацию базы данных (F7) и проверьте работу в режиме предприятия
Внешние обработки и расширения: код без изменения конфигурации
Не всегда код нужно встраивать в конфигурацию. Внешние обработки и отчёты — это файлы с расширением .epf и .erf, которые создаются в конфигураторе через «Файл» → «Новый» → «Внешняя обработка», но хранятся отдельно и запускаются в режиме предприятия через «Файл» → «Открыть». Это удобно для разовых операций: загрузки данных, групповой обработки, тестирования алгоритмов.
Расширения конфигурации — механизм для доработки типовых конфигураций без снятия их с поддержки. Расширение создаётся через «Конфигурация» → «Расширения конфигурации» и позволяет добавлять собственные модули, процедуры и обработчики поверх типовых. При обновлении типовой конфигурации расширение сохраняется, что резко упрощает сопровождение.
Выбор между доработкой основной конфигурации и расширением определяется просто: если конфигурация типовая и планируется её обновлять, используйте расширение. Прямое изменение типового кода приведёт к тому, что каждое обновление станет ручным и трудоёмким.
Сравнение вариантов размещения кода
Полный доступ ко всем механизмам, но усложняет обновление типовых решений и требует контроля при каждом апгрейде
Подходит для доработки типовых конфигураций без снятия с поддержки; ограничено в изменении некоторых механизмов платформы
Идеальна для разовых задач и сервисных операций; не влияет на конфигурацию, но не может изменять поведение типовых объектов
Типичные ошибки и ограничения при написании кода
Начинающие разработчики часто сталкиваются с ошибкой «Процедура или функция с указанным именем не определена». Причина почти всегда в том, что процедура не экспортная (нет ключевого слова Экспорт), общий модуль не имеет нужных флажков контекста, либо вызов идёт из клиентского кода в серверный модуль без флага «Вызов сервера». Проверяйте свойства модуля до поиска ошибки в тексте.
Вторая группа проблем — работа в рабочей базе без копии. Изменение модуля объекта документа, который в этот момент проводят пользователи, может привести к ошибкам в их сеансах после обновления конфигурации. Правило безопасной работы: разработка и отладка — на копии базы, перенос — через сравнение и объединение конфигураций или через расширение.
Третья типичная ошибка — размещение длительных операций в клиентских обработчиках формы, из-за чего интерфейс «зависает». Длительные операции следует выносить в фоновые задания с отображением индикатора, а не выполнять синхронно в обработчике нажатия кнопки.
FAQ
Можно ли писать код для 1С в сторонней IDE, например в VS Code?
Да, существуют расширения для VS Code с подсветкой синтаксиса встроенного языка 1С, а также инструменты выгрузки конфигурации в файлы (например, через EDT или выгрузку в XML). Однако полноценная компиляция, проверка и отладка возможны только в конфигураторе или в среде 1C:Enterprise Development Tools, поэтому сторонние редакторы используются лишь как вспомогательный инструмент.
Чем 1C:EDT отличается от конфигуратора?
1C:Enterprise Development Tools — это среда разработки на базе Eclipse с поддержкой систем контроля версий, расширенного анализа кода и командной работы. Конфигуратор остаётся стандартным инструментом и проще для начала; EDT целесообразен в проектах с несколькими разработчиками и требованиями к версионированию кода.
Почему моя процедура не видна из другого модуля?
Проверьте три вещи: наличие ключевого слова Экспорт после объявления процедуры, флажки контекста в свойствах общего модуля (Сервер, Клиент, Вызов сервера) и соответствие контекста вызова — клиентский код не может напрямую вызвать серверный модуль без флага «Вызов сервера».
Где писать код, который должен выполняться при записи документа?
Используйте обработчики событий в модуле объекта документа: ПередЗаписью, ПриЗаписи или ОбработкаПроведения — в зависимости от задачи. Если логика должна срабатывать и для других объектов, выносите её в общий серверный модуль и вызывайте из обработчика.
Можно ли изменять код типовой конфигурации напрямую?
Технически можно после включения возможности изменения в настройках поддержки, но это снимает конфигурацию с полной поддержки и усложняет обновления. Рекомендуемый путь — расширение конфигурации: оно позволяет добавлять и переопределять обработчики, сохраняя возможность автоматического обновления типового решения.
Что важно запомнить
Код в 1С пишется в конфигураторе внутри модулей разных типов: общих, объектов, форм и приложения. Выбор модуля определяется задачей и контекстом выполнения — клиентским или серверным. Разрабатывайте на копии базы, проверяйте код отладчиком, а доработки типовых конфигураций выполняйте через расширения.