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