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