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

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

Как удалить модуль в 1С 8

Как удалить общий модуль, модуль объекта, формы или команды в 1С 8 через конфигуратор. Проверка ссылок, обновление конфигурации базы данных и типичные ошибки.

Модуль в 1С 8 — это контейнер с программным кодом на встроенном языке. Удаление может означать две разные задачи: убрать сам объект конфигурации (например, общий модуль) или просто очистить текст модуля, оставив объект на месте. Подход различается: в первом случае удаляется элемент дерева конфигурации, во втором — только содержимое, открытое через команду «Открыть модуль».

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

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

Подготовка: резервная копия и режим поддержки

Перед любыми изменениями структуры конфигурации сделайте выгрузку информационной базы в файл dt: меню «Администрирование» → «Выгрузить информационную базу». Это единственный способ гарантированно откатиться, если после удаления модуля выяснится, что он использовался в рабочих процессах.

Дополнительно сохраните сам текст модуля в отдельный файл. Откройте модуль, выделите весь текст (Ctrl+A), скопируйте и сохраните в обычный текстовый файл с пометкой, откуда он взят. Если модуль понадобится восстановить частично, не придётся разворачивать всю копию базы.

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

Как найти модуль в дереве конфигурации

Откройте конфигуратор и дерево конфигурации: «Конфигурация» → «Открыть конфигурацию». Модули бывают нескольких видов, и место удаления зависит от типа:

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

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

Проверка ссылок перед удалением

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

Проверяйте не только прямые вызовы вида ИмяМодуля.ИмяПроцедуры(), но и косвенные обращения: подписки на события, где обработчиком назначена процедура модуля; регламентные задания, у которых метод указан как «ИмяМодуля.ИмяПроцедуры»; функциональные опции и подсистемы, включающие модуль.

Ссылки найденыМодуль используется

Сначала перенесите или удалите обращения, иначе база выдаст ошибки

Ссылок нетМодуль изолирован

Можно удалять, но проверьте регламентные задания и подписки

Объект на поддержкеРедактирование заблокировано

Потребуется изменить правило поддержки или снять объект с поддержки

Удаление общего модуля: пошаговый порядок

Когда ссылки устранены или их отсутствие подтверждено, удаление занимает меньше минуты. Выделите общий модуль в дереве конфигурации и нажмите Delete или выберите «Удалить» в контекстном меню. Подтвердите удаление в диалоге.

Порядок действий
  1. 1
    Сделайте выгрузку информационной базы в файл dt
  2. 2
    Найдите ссылки на модуль через «Поиск ссылок в объектах» и устраните обращения
  3. 3
    Удалите общий модуль в дереве конфигурации (Delete)
  4. 4
    Выполните «Конфигурация» → «Проверка конфигурации» и исправьте оставшиеся ошибки
  5. 5
    Обновите конфигурацию базы данных (F7) с монопольным доступом
  6. 6
    Проверьте работу ключевых операций в пользовательском режиме

После удаления объекта изменения существуют только в конфигураторе. Чтобы они вступили в силу, выполните «Конфигурация» → «Обновить конфигурацию базы данных» (F7). Для этого нужен монопольный режим: все пользователи и фоновые сеансы должны быть завершены. В клиент-серверном варианте завершите сеансы через консоль кластера, в файловом — попросите пользователей выйти и закройте фоновые задания.

Очистка текста модуля без удаления объекта

Если нужно убрать код, но сохранить объект — например, модуль документа или формы — удалять объект не требуется. Откройте модуль двойным щелчком или через контекстное меню «Открыть модуль», выделите весь текст (Ctrl+A) и удалите его. Сохраните конфигурацию и обновите конфигурацию базы данных.

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

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

Проверка результата после удаления

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

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

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

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

Проверка конфигурации
Норма

Ошибок нет или только не связанные с удалённым модулем

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

Ошибки «переменная не определена», «процедура не обнаружена»

Запуск предприятия
Норма

База открывается, формы работают

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

Ошибка при инициализации приложения

Регламентные задания
Норма

Все задания выполняются без ошибок

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

Задание завершается с ошибкой вызова метода удалённого модуля

Типичные ошибки и ограничения

Типичные ошибки
01
Удаление модуля без поиска ссылок — база перестаёт работать, приходится восстанавливать из копии
02
Забытое регламентное задание, вызывающее метод модуля — ошибка проявляется ночью, а не сразу
03
Очистка модуля формы без снятия обработчиков с событий — конфигурация не проходит проверку
04
Удаление объекта на поддержке без изменения правил — при следующем типовом обновлении модуль вернётся или обновление встанет с конфликтом
05
Обновление конфигурации базы данных при активных пользователях — обновление прерывается, сеансы зависают

Отдельное ограничение касается расширений конфигурации. Если модуль добавлен расширением, в основной конфигурации вы его не увидите: откройте «Конфигурация» → «Расширения конфигурации», найдите нужное расширение и удаляйте или изменяйте модуль там. Удаление расширения целиком также требует обновления конфигурации базы данных.

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

Сравнение вариантов

Удалить общий модуль

Подходит для самописных объектов без ссылок; требует полной проверки обращений

Очистить текст модуля

Подходит, когда объект удалить нельзя (модуль объекта, приложения); объект остаётся, код исчезает

Заглушки вместо процедур

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

Итог

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

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

Частые вопросы

Можно ли удалить модуль объекта, например модуль документа?

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

Что делать, если после удаления модуля база выдаёт ошибку «Процедура не обнаружена»?

Найдите по тексту ошибки место обращения и исправьте вызывающий код: удалите вызов или замените его другой реализацией. Если мест найти не удаётся, восстановите базу из выгрузки dt и повторите удаление с полным поиском ссылок.

Почему конфигуратор не даёт удалить общий модуль?

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

Нужен ли монопольный доступ для удаления модуля?

Для удаления объекта в дереве конфигурации — нет. Монопольный доступ требуется на этапе обновления конфигурации базы данных (F7), без него изменения не вступят в силу.

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

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