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

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

Что значит модуль 1С и как с ним работать

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

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

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

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

Что такое модуль в контексте платформы 1С

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

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

Важно понимать разницу между модулем и обработчиком события. Обработчик — это конкретная процедура внутри модуля, привязанная к событию (например, «ПриЗаписи» документа). Модуль — это контейнер, в котором таких обработчиков может быть несколько вместе с обычными процедурами.

Основные виды модулей в конфигурации

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

Вид модуляГде находитсяНазначение
Модуль приложения (управляемого/обычного)Корень конфигурацииОбработчики старта и завершения системы, глобальные переменные
Модуль сеансаКорень конфигурацииИнициализация параметров сеанса при входе пользователя
Общие модулиВетка «Общие» → «Общие модули»Библиотеки процедур и функций, доступных всей конфигурации
Модуль объектаОбъект (документ, справочник)Логика объекта: запись, проведение, заполнение
Модуль формыФорма объектаРеакция на действия пользователя, работа с элементами формы
Модуль менеджераОбъект конфигурацииОперации над коллекцией объектов: создание, поиск, печатные формы
Модуль командыКоманда объекта или глобальная командаДействие при выполнении команды интерфейса

Чаще всего при доработках приходится иметь дело с общими модулями, модулями объектов и модулями форм. Первые содержат «движок» расчётов, вторые — бизнес-логику документов, третьи — поведение интерфейса.

Клиентский и серверный контекст

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

Модуль как готовое решение: второе значение термина

В разговорной практике «модуль 1С» часто означает отдельный программный продукт или подсистему, подключаемую к основной конфигурации: модуль обмена с сайтом, модуль ЕГАИС, модуль интеграции с банком, зарплатный модуль. Это не совсем корректно с точки зрения терминологии платформы, но устоявшееся словоупотребление.

Такие «модули» поставляются в виде файлов конфигурации (.cf), расширений (.cfe) или внешних обработок (.epf). Перед подключением стоит выяснить формат поставки: расширение подключается без снятия конфигурации с поддержки, а внедрение через объединение конфигураций затрудняет последующие обновления.

Способы добавить функциональность

Расширение конфигурации (.cfe)

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

Объединение конфигураций (.cf)

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

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

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

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

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

Как открыть модуль документа
  1. 1
    Запустите конфигуратор и откройте конфигурацию: меню «Конфигурация» → «Открыть конфигурацию».
  2. 2
    В дереве объектов найдите нужный документ: ветка «Документы» → имя документа.
  3. 3
    Щёлкните правой кнопкой и выберите «Открыть модуль объекта» — откроется редактор кода.
  4. 4
    Для просмотра модуля формы откройте форму объекта и перейдите на вкладку «Модуль» внизу окна.
  5. 5
    Общие модули находятся в ветке «Общие» → «Общие модули» — двойной щелчок открывает код.

Найти нужное место в коде помогает глобальный поиск: меню «Правка» → «Глобальный поиск» (или Ctrl+Shift+F). Например, чтобы понять, где рассчитывается скидка, ищите по слову «Скидка» по всем модулям конфигурации.

Для изучения поведения кода без его изменения используйте отладчик: установите точку останова в строке модуля (клик по полю слева от строки), запустите отладку (F5) и выполните в пользовательском режиме действие, которое вызывает этот код. Исполнение остановится на точке, и можно посмотреть значения переменных.

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

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

Предпочтительный порядок доработки выглядит так: сначала попробовать решить задачу расширением конфигурации, затем — подписками на события, и только если этого недостаточно — править типовой модуль с пометками изменений. Подписки на события позволяют добавить свою логику к событию «ПриЗаписи» или «ОбработкаПроведения», не трогая типовой код.

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

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

Нужно добавить проверку или расчёт при записи документаСоздайте подписку на событие или расширение — типовой модуль останется нетронутым.
Нужно изменить алгоритм проведения типового документаДоработайте модуль объекта с комментариями-метками изменений и зафиксируйте правку в документации проекта.
Нужна разовая операция над данными без изменения логикиИспользуйте внешнюю обработку (.epf) — конфигурация не меняется вообще.
Нужна новая печатная форма или отчётДобавьте внешнюю печатную форму или отчёт через механизм дополнительных отчётов и обработок.

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

Большинство проблем с модулями возникает из-за непонимания контекста исполнения и областей видимости. Разберём самые частые ситуации.

Типичные ошибки
01
Вызов серверной процедуры из клиентского модуля без флага «Вызов сервера» — код не компилируется или падает в runtime.
02
Размещение общей логики в модуле формы — такой код нельзя переиспользовать, он дублируется в других формах.
03
Правка типового модуля без комментариев-меток — при обновлении невозможно быстро найти свои изменения.
04
Забытое слово «Экспорт» у процедуры общего модуля — вызов из других модулей завершается ошибкой «не определена».
05
Изменение модуля без обновления конфигурации базы данных (F7) — изменения не применяются, и кажется, что правка «не работает».

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

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

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

Синтаксис модуля
Норма

Проверка (Ctrl+F7 или «Конфигурация» → «Проверка конфигурации») завершается без ошибок

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

Сообщения об ошибках компиляции в окне служебных сообщений

Применение изменений
Норма

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

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

Код в конфигураторе изменён, но поведение системы прежнее

Работа типовых функций
Норма

Проведение документов и отчёты дают ожидаемые результаты на тестовых данных

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

Появились ошибки в операциях, не связанных с доработкой напрямую

Модули и расширения: современный подход к доработкам

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

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

Проверить, какие расширения подключены к базе, можно в пользовательском режиме: «НСИ и администрирование» → «Печатные формы, отчёты и обработки» → «Расширения» (в типовых конфигурациях БСП). Там же расширение можно временно отключить для диагностики — это первое действие, когда после установки расширения что-то перестало работать.

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

FAQ: частые вопросы о модулях 1С

Чем модуль отличается от обработки в 1С?

Модуль — это часть конфигурации, хранящая код внутри структуры метаданных. Обработка — самостоятельный объект с собственной формой и модулем, который может быть как встроенным в конфигурацию, так и внешним (файл .epf), запускаемым без изменения конфигурации.

Можно ли редактировать модуль без прав разработчика?

Нет. Для открытия конфигуратора и изменения модулей пользователю нужны права на администрирование или разработку. В файловой базе достаточно роли с правом «Конфигуратор», в клиент-серверной — соответствующих прав на уровне СУБД и кластера.

Почему после правки модуля ничего не изменилось?

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

Что делать, если ошибка указывает на строку в общем модуле?

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

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

Используйте сравнение конфигураций: «Конфигурация» → «Сравнить и объединить с конфигурацией из файла» и укажите файл поставки типовой версии. Изменённые модули будут отмечены в дереве сравнения, а построчный просмотр покажет конкретные отличия.

Безопасно ли отключать расширение с модулями в рабочей базе?

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

Итог

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

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