Почему возникает ошибка «Не обнаружено свойство Форма.Свойства_ИспользоватьСвойства» при копировании справочника?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке в конфигурациях, использующих Библиотеку стандартных подсистем (БСП), часто возникает необходимость создания нового справочника на основе уже существующего. Однако простого копирования метаданных недостаточно. Если после копирования при открытии формы элемента вы сталкиваетесь с ошибкой Не обнаружено свойство Форма.Свойства_ИспользоватьСвойства, значит, механизм УправлениеСвойствами не смог инициализировать форму корректно.

Давайте разберем, почему это происходит и как устранить данную проблему, обеспечив стабильную работу вашего справочника.

Причина возникновения ошибки

Ошибка возникает из-за того, что подсистема УправлениеСвойствами ожидает, что объект метаданных зарегистрирован в системе как поддерживающий дополнительные реквизиты. При копировании справочника новый объект получает уникальный идентификатор, который не прописан в настройках БСП. Программный код, вызываемый в процедуре ПриСозданииНаСервере, пытается добавить на форму динамические элементы, но так как объект не прошел процедуру регистрации, логика БСП приводит к исключению.

Вариант 1: Правильная регистрация объекта в БСП

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

  1. Регистрация в Плане видов характеристик (ПВХ): Проверьте ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения. Объект должен быть включен в состав характеристик, которые могут использовать этот ПВХ.
  2. Настройка состава: Перейдите в раздел администрирования вашей программы (обычно это подсистема «Администрирование» или «Настройки»). Найдите пункт «Дополнительные реквизиты и сведения». Убедитесь, что ваш новый справочник добавлен в список объектов, для которых разрешено использование дополнительных реквизитов.
  3. Проверка характеристик: В дереве конфигурации для нового справочника откройте вкладку «Характеристики». Убедитесь, что связь с ПВХ настроена корректно и параметры соответствуют исходному справочнику.

Вариант 2: Отключение проверки свойств (если функционал не нужен)

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

Эффективным методом решения является внедрение «защиты от дурака» — программной проверки наличия свойства на форме перед выполнением кода БСП. Рассмотрим, как это можно реализовать в коде:


// В процедуре ОбработкаПроверкиЗаполнения или аналогичных методах БСП
// Добавляем проверку перед обращением к свойству формы
Если Не ттРазработка.ЕстьСвойствоОбъекта(Форма, "Свойства_ИспользоватьСвойства") Тогда
    Возврат;
КонецЕсли;

// Далее идет основной код БСП, который теперь будет пропущен,
// если свойство не было инициализировано.

Для реализации функции ЕстьСвойствоОбъекта, вы можете воспользоваться стандартными возможностями проверки наличия реквизита на форме:


Функция ЕстьСвойствоОбъекта(Форма, ИмяСвойства) Экспорт
    Возврат Форма.Элементы.Найти(ИмяСвойства) <> Неопределено 
           Или Форма.ИспользуемыеРеквизиты.Найти(ИмяСвойства) <> Неопределено;
КонецФункции

Рекомендации по отладке

Если ошибка сохраняется, воспользуйтесь отладчиком 1С. Установите точку останова в общем модуле УправлениеСвойствами в процедуре ПриСозданииНаСервере. Внимательно проанализируйте, на каком этапе происходит попытка обращения к отсутствующему элементу.

Важно: Помните, что копирование типовых объектов — это процесс, требующий внимательности к деталям. Если вы копируете справочник с уже настроенными подписками на события или общими модулями, проверяйте, чтобы в МодулеОбъекта и МодулеФормы не оставалось прямых ссылок на старый объект или неинициализированные параметры, которые могут конфликтовать с текущим состоянием подсистем БСП.

Рекомендуем придерживаться либо полной интеграции нового объекта в подсистему свойств, либо полного удаления зависимостей от БСП, чтобы не оставлять «заглушки», которые могут затруднить поддержку кода в будущем.

← На главную