Как назначить тип данных Характеристика для реквизита в расширении конфигурации 1С?

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

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

Понимание природы ограничения

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

Способ 1: Настройка режима совместимости

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

  1. Откройте свойства вашего Расширения конфигурации.
  2. Найдите параметр Режим совместимости.
  3. Если текущее значение позволяет, попробуйте установить его в значение Не использовать.
  4. Важно помнить, что режим совместимости расширения должен быть согласован с режимом основной конфигурации. Если в основной конфигурации используется режим совместимости, а в расширении он отключен, это может привести к ошибкам выполнения.

Способ 2: Обновление платформы 1С:Предприятие

Разработчики фирмы 1С постоянно совершенствуют механизм расширений. Как показывает практика, во многих версиях платформы (начиная с 8.3.16 и выше, а в 8.3.18+ особенно) функционал работы с характеристиками был расширен. Если вы используете устаревшую версию платформы, первым делом рекомендуется обновить её до актуального релиза. Это самый надежный способ получить штатную поддержку типов Характеристика в расширениях.

Способ 3: Обходные пути при «ошибке» конфигуратора

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

В случае потери данных, вам поможет использование инструментов для загрузки данных в формате XML. Рассмотрим пример того, как можно восстановить данные с помощью обработки Выгрузка и загрузка данных XML:


// Пример логики обработки загрузки для корректной записи характеристик
ОбъектыXDTO = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
СписокОбъктовXTDO = Новый СписокЗначений;
Для каждого Свойство Из ОбъектыXDTO.свойства Цикл
    Если Свойство.ВерхняяГраница = 1 Тогда
        СписокОбъктовXTDO.Добавить(ОбъектыXDTO.получить(Свойство), СтрЗаменить(Свойство.имя, "DocumentObject_", ""));
    иначе
        Список = ОбъектыXDTO.ПолучитьСписок(Свойство);
        Для каждого Объект Из Список Цикл
            СписокОбъктовXTDO.Добавить(Объект, СтрЗаменить(Свойство.имя, "DocumentObject_", ""));
        КонецЦикла;
    КонецЕсли;
КонецЦикла;

Этот метод позволяет программно перенести значения в реквизиты, которые стали недоступны после изменения структуры метаданных в расширении.

Альтернативный архитектурный подход

Если правка реквизита в расширении вызывает критические ошибки или проблемы с обновлениями, пересмотрите подход к реализации задачи:

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

← На главную