Удаление модуля в конфигураторе 1С 8.3: что можно, а что нет
Содержание
В 1С 8.3 целиком удаляется только общий модуль — он лежит в ветке Общие → Общие модули дерева конфигурации и убирается клавишей Del прямо в конфигураторе. Модули объектов, форм, команд и менеджеров удалить нельзя: они не отдельные объекты, а свойство своего объекта. У них очищается только текст.
Поэтому первый вопрос — какой именно модуль перед вами. От этого зависит весь порядок действий: где-то достаточно выделить объект и нажать Del, где-то придётся снимать конфигурацию с поддержки, а где-то — работать не с конфигурацией базы, а с расширением.
Ещё один фактор — откуда модуль взялся. Если вы его создали сами, удаление сводится к одному нажатию. Если модуль принадлежит поставщику (типовая Бухгалтерия, ЗУП, УТ), конфигуратор не даст его удалить, пока база стоит на поддержке.
Какой модуль можно удалить, а какой — только очистить
Разберём типы модулей по возможности удаления.
- 📦 Общий модуль — самостоятельный объект метаданных. Удаляется полностью.
- 📄 Модуль объекта (справочника, документа, регистра) — часть объекта. Удалить нельзя, очищается текст.
- 🖥 Модуль формы и модуль команды — принадлежат форме/команде. Удаляются только вместе с самой формой или командой.
- ⚙️ Модуль менеджера объекта — то же самое: есть всегда, очищается только текст.
- 🌐 Модуль управляемого приложения, модуль сеанса, модуль внешнего соединения — глобальные модули конфигурации. Их нельзя ни удалить, ни «спрятать»: они существуют у любой базы, можно лишь очистить содержимое.
Сведём это в таблицу — она отвечает на главный вопрос сразу.
| Тип модуля | Удаляется целиком? | Как убрать |
|---|---|---|
| Общий модуль | Да | Выделить в дереве, нажать Del |
| Модуль объекта | Нет | Очистить текст |
| Модуль формы / команды | Нет (уходит с формой) | Очистить текст |
| Модуль менеджера | Нет | Очистить текст |
| Модуль приложения / сеанса | Нет | Очистить текст |
| Модуль в расширении | Да, если добавлен расширением | Del или отмена заимствования |
Как читать таблицу: «удаляется целиком» означает, что из конфигурации пропадает сам объект. «Очистить текст» — объект остаётся, но код в нём пустой; на поведение базы это влияет так же, как если бы кода там и не было.
Del — модуль исчезает целиком. Если модуль от поставщика, сначала снимите базу с поддержки.Ctrl+A) и удалите текст. Модуль останется, но будет пустым.Если задача звучит как «убрать лишний код», а не «убрать объект», вам почти всегда нужна очистка текста модуля, а не удаление. Это безопаснее: структура конфигурации не меняется.
Что сделать до удаления
Удаление модуля — это изменение конфигурации. Откатить его без резервной копии будет нечем.
Резервная копия обязательна: после удаления и обновления конфигурации базы данных вернуть модуль «кнопкой отмены» уже не получится. Выгрузку делают через Администрирование → Выгрузить информационную базу (файл .dt) либо просто копируют файл 1Cv8.1CD у файловой базы, когда все вышли.
Найдите ссылки на модуль
У общего модуля есть удобный инструмент. Щёлкните по нему правой кнопкой и выберите поиск ссылок на объект — конфигуратор покажет, где модуль упоминается в свойствах форм и команд.
Но вызовы процедур из модуля так не найдутся: обращения вида ОбщийМодуль.ИмяПроцедуры() — это текст, а не ссылки на объект. Поэтому дополнительно прогоните глобальный поиск (Правка → Глобальный поиск, или Ctrl+Shift+F) по имени модуля и по именам его экспортных процедур. Иначе после удаления получите ошибку при первом же вызове.
Проверьте и свойства самого модуля — флаги «Клиент», «Сервер», «Вызов сервера», «Повторное использование возвращаемых значений». Если модуль был с повторным использованием или серверным, вызовы из него могли стоять в нетипичных местах — формах, командах, других общих модулях. Поиск по имени процедуры находит их все.
Отдельно пройдитесь по подпискам на события и регламентным заданиям: их обработчики часто ссылаются на процедуры общих модулей, а это не всегда очевидно из дерева конфигурации.
Удаление общего модуля в конфигураторе
Это основной сценарий для фразы «удалить модуль в 1С 8».
- Откройте конфигуратор своей базы.
- В дереве конфигурации раскройте ветку
Общие → Общие модули. - Выделите нужный модуль одним щелчком.
- Нажмите
Delили в контекстном меню выберите удаление. - Если на модуль есть ссылки (из свойств форм, команд), конфигуратор покажет окно со списком — убрать их придётся вручную до удаления.
- Сохраните изменения и обновите конфигурацию базы данных (см. раздел ниже).
Если модуль ваш собственный и на него никто не ссылается, всё закончится на третьем-четвёртом шаге.
Если модуль принадлежит поставщику
В типовых конфигурациях (Бухгалтерия предприятия 3.0, ЗУП 3.1, Управление торговлей 11) общие модули поставлены вендором и защищены поддержкой. Пункт удаления будет недоступен.
Чтобы удалить такой модуль, придётся открыть Конфигурация → Поддержка → Настройка поддержки и снять конфигурацию с поддержки. После снятия с поддержки автоматическое обновление
типовой конфигурации штатным механизмом перестанет работать как раньше — каждое обновление превратится в сравнение-объединение вручную. На типовой, которую вы регулярно обновляете, это почти всегда плохая идея.
Правильная альтернатива — не удалять чужой модуль, а переопределить или отключить его поведение через расширение конфигурации (см. ниже). Поддержка при этом сохраняется.
Нельзя просто удалить модуль, из которого что-то вызывается. Сначала уберите или перенаправьте вызовы ВашМодуль.Процедура() в коде, иначе при запуске вылезет «Процедура или функция с указанным именем не определена».
Очистка модулей объектов, форм и менеджеров
Для этих модулей клавиша Del неприменима — удалять нечего, модуль неотделим от объекта. Задача сводится к очистке текста.
- Модуль объекта: раскройте объект (документ, справочник) в дереве, двойным щелчком откройте строку «Модуль объекта», выделите весь текст (
Ctrl+A) и удалите. - Модуль формы: откройте форму, перейдите на вкладку «Модуль», очистите код там же.
- Модуль менеджера: открывается из окна редактирования объекта, очищается так же.
- Глобальные модули (приложения, сеанса): открываются через контекстное меню корня конфигурации; текст очищается, сам модуль остаётся пустым.
Чтобы убрать модуль объекта по-настоящему, пришлось бы удалить сам объект целиком — а это уже другая, куда более серьёзная операция, затрагивающая данные.
Удаление модуля из расширения конфигурации
Расширения появились в платформе 8.3.6 и дают удалять «лишнее» без правки основной конфигурации. Работают они иначе.
Откройте расширение: Конфигурация → Расширения конфигурации, выберите нужное и нажмите «Открыть конфигурацию расширения». Дальше два случая.
- Объект добавлен самим расширением (собственный общий модуль расширения) — выделяете его в дереве расширения и удаляете
Del, как обычный объект. - Объект заимствован из основной конфигурации (взят «на карандаш», чтобы переопределить его модуль) — удалять его не нужно, достаточно отменить заимствование: в контекстном меню выберите удаление из расширения. Объект вернётся к оригиналу, ваши правки модуля в расширении пропадут.
После правки расширения его нужно обновить в базе: Конфигурация → Обновить конфигурацию базы данных. Загрузка файла расширения (.cfe) и обновление структуры — это два разных шага.
Расширение — безопасный способ «отключить» чужой модуль, не трогая типовую конфигурацию и не снимая её с поддержки.
Можно ли удалить модуль программно или внешней обработкой
Короткого ответа «да» здесь нет. В работающем 1С:Предприятии удалить модуль из кода нельзя — метаданные правятся только в конфигураторе. Внешняя обработка, запущенная в режиме предприятия, тоже не удаляет объекты конфигурации: у неё нет такого API.
Что реально имеют в виду под «программным» или «пакетным» удалением — это выгрузка конфигурации в файлы и обратная загрузка:
- В конфигураторе:
Конфигурация → Выгрузить конфигурацию в файлы. Конфигурация раскладывается в набор XML-файлов, каждый общий модуль — отдельным файлом.bsl. - Удаляете ненужный модуль из выгрузки (файл модуля и его описание в XML родительского узла).
- Загружаете обратно:
Конфигурация → Загрузить конфигурацию из файлов.
Это удобно, когда модулей много и чистят их скриптом в системе сборки. Ту же пару операций можно запустить из командной строки в режиме DESIGNER — параметрами выгрузки и загрузки конфигурации в файлы. Точные ключи смотрите в справке по запуску (1cv8 /?), чтобы не ошибиться в написании.
Смысл подхода в том, что XML-выгрузка — это обычный текст под системой контроля версий. Удаление модуля превращается в удаление файла и правку описания объекта, а не в ручные клики по дереву. Для разового удаления одного модуля это избыточно: проще Del в конфигураторе. Пакетный путь оправдан, когда правок много или они повторяются на нескольких базах.
Отдельно стоит возврат модуля к типовому (а не удаление). Если нужно вернуть исходный текст модуля, который вы правили, используйте Конфигурация → Сравнить, объединить с конфигурацией из файла против конфигурации поставщика и примите исходную версию модуля. Удалять объект при этом не требуется.
Применение изменений: обновление конфигурации базы данных
Пока вы не обновили конфигурацию базы данных, в работающей базе всё по-старому — изменения живут только в редактируемой конфигурации.
Нажмите F7 или выполните Конфигурация → Обновить конфигурацию базы данных. Конфигуратор покажет список изменений; подтвердите принятие.
Удаление общего модуля не меняет структуру таблиц, поэтому часто проходит динамическим обновлением без выгона пользователей. Но если конфигуратор запросит монопольный доступ, значит в этом же сеансе накопились структурные изменения — тогда обновление оборвёт работу всех пользователей. Планируйте его на время, когда в базе никого нет.
В клиент-серверном варианте монопольный доступ означает, что все сеансы будут завершены менеджером кластера. Предупредите коллег заранее.
Типичные ошибки при удалении модуля
- Удалили модуль, но вызовы остались. При запуске — «Процедура или функция с указанным именем не определена». Лечение: глобальным поиском найти и убрать все обращения к процедурам модуля, затем снова обновить базу .
- Пытаетесь удалить модуль поставщика на поддержке. Пункт удаления недоступен или серый. Нужно снять конфигурацию с поддержки через
Конфигурация → Поддержка → Настройка поддержки— но это отключит автоматическое применение обновлений от вендора, делайте осознанно. - Очистили текст, но ждёте, что исчезнет сам модуль объекта. Он не исчезнет: модуль объекта неотделим от объекта. Пустой модуль — это нормально.
- Забыли про резервную копию. После обновления базы отмена уже недоступна. Восстанавливать придётся из
.dtили копии файла базы. - Правили модуль в основной конфигурации вместо расширения. Следующее обновление типовой может перезаписать правки. Для переопределений используйте расширение.
Можно ли удалить модуль прямо из кода, на лету в режиме 1С:Предприятие?
Я удалил общий модуль, а при запуске ошибка «Процедура не определена». Что делать?
ИмяМодуля.Процедура(). Прогоните глобальный поиск по имени модуля и по именам его экспортных процедур, уберите или перенаправьте эти вызовы, затем снова обновите конфигурацию базы данных.