Удаление модуля в конфигураторе 1С 8.3: что можно, а что нет

· 9 мин

Содержание

В 1С 8.3 целиком удаляется только общий модуль — он лежит в ветке Общие → Общие модули дерева конфигурации и убирается клавишей Del прямо в конфигураторе. Модули объектов, форм, команд и менеджеров удалить нельзя: они не отдельные объекты, а свойство своего объекта. У них очищается только текст.

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

Ещё один фактор — откуда модуль взялся. Если вы его создали сами, удаление сводится к одному нажатию. Если модуль принадлежит поставщику (типовая Бухгалтерия, ЗУП, УТ), конфигуратор не даст его удалить, пока база стоит на поддержке.

Какой модуль можно удалить, а какой — только очистить

Разберём типы модулей по возможности удаления.

  • 📦 Общий модуль — самостоятельный объект метаданных. Удаляется полностью.
  • 📄 Модуль объекта (справочника, документа, регистра) — часть объекта. Удалить нельзя, очищается текст.
  • 🖥 Модуль формы и модуль команды — принадлежат форме/команде. Удаляются только вместе с самой формой или командой.
  • ⚙️ Модуль менеджера объекта — то же самое: есть всегда, очищается только текст.
  • 🌐 Модуль управляемого приложения, модуль сеанса, модуль внешнего соединения — глобальные модули конфигурации. Их нельзя ни удалить, ни «спрятать»: они существуют у любой базы, можно лишь очистить содержимое.

Сведём это в таблицу — она отвечает на главный вопрос сразу.

Тип модуляУдаляется целиком?Как убрать
Общий модульДаВыделить в дереве, нажать Del
Модуль объектаНетОчистить текст
Модуль формы / командыНет (уходит с формой)Очистить текст
Модуль менеджераНетОчистить текст
Модуль приложения / сеансаНетОчистить текст
Модуль в расширенииДа, если добавлен расширениемDel или отмена заимствования

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

Какой модуль вы хотите убрать?

Если задача звучит как «убрать лишний код», а не «убрать объект», вам почти всегда нужна очистка текста модуля, а не удаление. Это безопаснее: структура конфигурации не меняется.

Что сделать до удаления

Удаление модуля — это изменение конфигурации. Откатить его без резервной копии будет нечем.

Перед удалением модуля
Выполнено: 0 / 4

Резервная копия обязательна: после удаления и обновления конфигурации базы данных вернуть модуль «кнопкой отмены» уже не получится. Выгрузку делают через Администрирование → Выгрузить информационную базу (файл .dt) либо просто копируют файл 1Cv8.1CD у файловой базы, когда все вышли.

Найдите ссылки на модуль

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

Но вызовы процедур из модуля так не найдутся: обращения вида ОбщийМодуль.ИмяПроцедуры() — это текст, а не ссылки на объект. Поэтому дополнительно прогоните глобальный поиск (Правка → Глобальный поиск, или Ctrl+Shift+F) по имени модуля и по именам его экспортных процедур. Иначе после удаления получите ошибку при первом же вызове.

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

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

Удаление общего модуля в конфигураторе

Это основной сценарий для фразы «удалить модуль в 1С 8».

  1. Откройте конфигуратор своей базы.
  2. В дереве конфигурации раскройте ветку Общие → Общие модули.
  3. Выделите нужный модуль одним щелчком.
  4. Нажмите Del или в контекстном меню выберите удаление.
  5. Если на модуль есть ссылки (из свойств форм, команд), конфигуратор покажет окно со списком — убрать их придётся вручную до удаления.
  6. Сохраните изменения и обновите конфигурацию базы данных (см. раздел ниже).

Если модуль ваш собственный и на него никто не ссылается, всё закончится на третьем-четвёртом шаге.

Если модуль принадлежит поставщику

В типовых конфигурациях (Бухгалтерия предприятия 3.0, ЗУП 3.1, Управление торговлей 11) общие модули поставлены вендором и защищены поддержкой. Пункт удаления будет недоступен.

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

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

Нельзя просто удалить модуль, из которого что-то вызывается. Сначала уберите или перенаправьте вызовы ВашМодуль.Процедура() в коде, иначе при запуске вылезет «Процедура или функция с указанным именем не определена».

Очистка модулей объектов, форм и менеджеров

Для этих модулей клавиша Del неприменима — удалять нечего, модуль неотделим от объекта. Задача сводится к очистке текста.

  • Модуль объекта: раскройте объект (документ, справочник) в дереве, двойным щелчком откройте строку «Модуль объекта», выделите весь текст (Ctrl+A) и удалите.
  • Модуль формы: откройте форму, перейдите на вкладку «Модуль», очистите код там же.
  • Модуль менеджера: открывается из окна редактирования объекта, очищается так же.
  • Глобальные модули (приложения, сеанса): открываются через контекстное меню корня конфигурации; текст очищается, сам модуль остаётся пустым.

Чтобы убрать модуль объекта по-настоящему, пришлось бы удалить сам объект целиком — а это уже другая, куда более серьёзная операция, затрагивающая данные.

Удаление модуля из расширения конфигурации

Расширения появились в платформе 8.3.6 и дают удалять «лишнее» без правки основной конфигурации. Работают они иначе.

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

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

После правки расширения его нужно обновить в базе: Конфигурация → Обновить конфигурацию базы данных. Загрузка файла расширения (.cfe) и обновление структуры — это два разных шага.

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

Можно ли удалить модуль программно или внешней обработкой

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

Что реально имеют в виду под «программным» или «пакетным» удалением — это выгрузка конфигурации в файлы и обратная загрузка:

  1. В конфигураторе: Конфигурация → Выгрузить конфигурацию в файлы. Конфигурация раскладывается в набор XML-файлов, каждый общий модуль — отдельным файлом .bsl.
  2. Удаляете ненужный модуль из выгрузки (файл модуля и его описание в XML родительского узла).
  3. Загружаете обратно: Конфигурация → Загрузить конфигурацию из файлов.

Это удобно, когда модулей много и чистят их скриптом в системе сборки. Ту же пару операций можно запустить из командной строки в режиме DESIGNER — параметрами выгрузки и загрузки конфигурации в файлы. Точные ключи смотрите в справке по запуску (1cv8 /?), чтобы не ошибиться в написании.

Смысл подхода в том, что XML-выгрузка — это обычный текст под системой контроля версий. Удаление модуля превращается в удаление файла и правку описания объекта, а не в ручные клики по дереву. Для разового удаления одного модуля это избыточно: проще Del в конфигураторе. Пакетный путь оправдан, когда правок много или они повторяются на нескольких базах.

Отдельно стоит возврат модуля к типовому (а не удаление). Если нужно вернуть исходный текст модуля, который вы правили, используйте Конфигурация → Сравнить, объединить с конфигурацией из файла против конфигурации поставщика и примите исходную версию модуля. Удалять объект при этом не требуется.

Применение изменений: обновление конфигурации базы данных

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

Нажмите F7 или выполните Конфигурация → Обновить конфигурацию базы данных. Конфигуратор покажет список изменений; подтвердите принятие.

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

В клиент-серверном варианте монопольный доступ означает, что все сеансы будут завершены менеджером кластера. Предупредите коллег заранее.

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

  • Удалили модуль, но вызовы остались. При запуске — «Процедура или функция с указанным именем не определена». Лечение: глобальным поиском найти и убрать все обращения к процедурам модуля, затем снова обновить базу .
  • Пытаетесь удалить модуль поставщика на поддержке. Пункт удаления недоступен или серый. Нужно снять конфигурацию с поддержки через Конфигурация → Поддержка → Настройка поддержки — но это отключит автоматическое применение обновлений от вендора, делайте осознанно.
  • Очистили текст, но ждёте, что исчезнет сам модуль объекта. Он не исчезнет: модуль объекта неотделим от объекта. Пустой модуль — это нормально.
  • Забыли про резервную копию. После обновления базы отмена уже недоступна. Восстанавливать придётся из .dt или копии файла базы.
  • Правили модуль в основной конфигурации вместо расширения. Следующее обновление типовой может перезаписать правки. Для переопределений используйте расширение.
Можно ли удалить модуль прямо из кода, на лету в режиме 1С:Предприятие?
Нет. Метаданные (в том числе общие модули) изменяются только в конфигураторе. Код в режиме предприятия управляет данными, а не структурой конфигурации.
Я удалил общий модуль, а при запуске ошибка «Процедура не определена». Что делать?
Значит, где-то остался вызов ИмяМодуля.Процедура(). Прогоните глобальный поиск по имени модуля и по именам его экспортных процедур, уберите или перенаправьте эти вызовы, затем снова обновите конфигурацию базы данных.
Вернётся ли удалённый модуль после обновления типовой конфигурации?
Если вы удалили объект поставщика, сняв базу с поддержки, обновление вендора его не вернёт — но и само обновление ставится уже вручную. Если же модуль был ваш собственный, обновление типовой его не затрагивает.
Как удалить из модуля одну процедуру, а не весь модуль?
Откройте модуль и удалите только текст нужной процедуры. Сам модуль при этом трогать не нужно — объекты метаданных и текст кода это разные уровни.
Чем удаление модуля отличается от очистки его текста?
Удаление убирает сам объект (возможно только для общего модуля). Очистка оставляет модуль на месте, но пустым — это единственный вариант для модулей объектов, форм и глобальных модулей.