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