Почему в расширении 1С невозможно выбрать новые объекты в качестве типа данных и как это исправить?

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

При работе с механизмом расширений в системе 1С:Предприятие 8.3 разработчики часто сталкиваются с необходимостью создания новых объектов метаданных (справочников, документов) внутри самого расширения. Одной из критических задач в этом процессе является связывание объектов: например, использование нового справочника из расширения в качестве типа реквизита для нового документа, также созданного в расширении. Однако в определенных версиях платформы, в частности в релизе 8.3.18.1208, пользователи столкнулись с серьезной преградой — дерево объектов расширения просто исчезает из окна выбора типов. Разберем подробно, почему это происходит и как обойти это ограничение.

Анализ технической проблемы в релизе 8.3.18.1208

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

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

Решение 1: Смена версии платформы (Рекомендуемый способ)

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

  1. Откат на стабильную версию: Если ваша конфигурация не требует специфических функций новых релизов, можно вернуться на версию 8.3.18.1128, в которой данная ошибка отсутствует.
  2. Обновление до исправленных сборок: Ошибка была оперативно исправлена в последующих патчах. Рекомендуется использовать релизы 8.3.18.1289 и выше. Идеальным вариантом для ветки 8.3.18 будет переход на финальные сборки, такие как 8.3.18.1741.
  3. Переход на современные ветки: Если есть возможность, стоит рассмотреть переход на ветки 8.3.19 или 8.3.20, где механизмы работы с типами данных в расширениях были значительно оптимизированы и стабилизированы.

Специалисты рекомендуют придерживаться правила «отставания»: не ставить самый свежий релиз сразу после выхода, а подождать появления 2–3 корректирующих сборок. Это позволяет избежать «детских болезней» новых версий.

Решение 2: Обходные пути в текущем релизе (Workarounds)

Если по каким-то причинам оперативно сменить версию платформы невозможно (например, из-за требований серверной инфраструктуры или жестких регламентов), разберем способы, как «обмануть» Конфигуратор и установить нужный тип данных.

Способ А: Ручной ввод типа данных. Вместо того чтобы нажимать на кнопку выбора («...») и открывать модальное окно с деревом объектов, попробуйте начать вводить имя вашего объекта (например, СправочникСсылка.МойНовыйСправочник) прямо в поле ввода свойства Тип. В некоторых случаях механизм автоподбора срабатывает корректно, минуя глючное окно выбора.

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

Способ В: Копирование свойств через буфер обмена. Рассмотрим интересный прием:

  1. Если у вас есть другой реквизит, где этот тип уже установлен (созданный в предыдущем релизе), вы можете просто скопировать этот реквизит целиком.
  2. Затем измените имя скопированного реквизита и его назначение. 1С сохранит связь с типом данных при копировании.

Решение 3: Проверка настроек расширения (Режим совместимости и Назначение)

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

Назначение расширения: Проверьте свойство Назначение. Если оно установлено в значение Исправление (Patch), платформа накладывает ряд ограничений на создание новых структур. Для добавления новых объектов и создания сложных связей между ними настоятельно рекомендуется использовать назначение Дополнение (Add-on). Это дает больше свободы в манипуляции метаданными.

Режим совместимости: Убедитесь, что Режим совместимости расширения совпадает с режимом совместимости основной конфигурации. Расхождение в этих настройках часто приводит к тому, что интерфейс Конфигуратора начинает скрывать объекты, которые, по его мнению, «несовместимы» с текущим контекстом разработки.

Программная проверка типов данных

Для того чтобы убедиться, что проблема носит чисто визуальный характер, мы можем программно проверить наличие типа в расширении. Рассмотрим пример кода, который можно запустить во внешней обработке в режиме 1С:Предприятие, чтобы удостовериться, что система видит новый тип:


// Проверим наличие типа справочника, созданного в расширении
ИмяТипа = "СправочникСсылка.НовыйСправочникИзРасширения";
ТипОбъекта = Тип(ИмяТипа);

Если ТипОбъекта = Неопределено Тогда
    Сообщить("Тип не найден! Проверьте применение расширения.");
Иначе
    Сообщить("Тип успешно определен: " + Строка(ТипОбъекта));
КонецЕсли;

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

Подведем итог: столкнувшись с невозможностью выбора объектов расширения в релизе 8.3.18.1208, первым делом попробуйте ручной ввод имени типа. Если это не помогает, лучшим решением станет обновление платформы до актуального патча ветки 8.3.18, где ошибка 10228494 была устранена.

← На главную