При активной разработке в расширениях «1С:Предприятие 8.3» программисты часто сталкиваются с необъяснимым поведением Конфигуратора: новые объекты (справочники, документы), созданные непосредственно в расширении, отказываются появляться в списке доступных типов. Представим ситуацию: вы добавили справочник НовыйСправочник и хотите назначить его типом реквизита в документе, который также находится в этом расширении. Вы открываете окно выбора типа, пролистываете список справочников, но вашего нового объекта там нет.
Рассмотрим причины этого поведения, которое чаще всего является следствием программной ошибки в определенных релизах платформы (в частности, ветки 8.3.18, 8.3.19 и 8.3.20), и разберем по шагам все доступные способы решения проблемы.
Проанализируем самый простой способ обхода проблемы. Как показывает практика, визуальное дерево объектов в полном диалоговом окне выбора типа и выпадающий список (вызываемый по нажатию на кнопку со стрелкой в поле «Тип») работают на разных механизмах индексации метаданных.
Если объект не виден в общем окне «Редактирование типа данных», выполним следующие действия:
В большинстве случаев этот метод позволяет «увидеть» объект, так как динамический список обращается к метаданным расширения напрямую, минуя некорректно отрисованное дерево категорий.
Разберем еще одну интересную особенность интерфейса Конфигуратора. Даже если в иерархическом списке справочников нужный элемент отсутствует, механизм поиска внутри этого же окна может его обнаружить. Это происходит потому, что поиск инициирует принудительный опрос метаданных, игнорируя кэшированное состояние дерева объектов.
Попробуем найти нужный тип следующим образом:
Выясним более глубокую, системную причину проблемы. Конфигуратор для валидации типов часто обращается к серверной части (службе ragent). Если на сервере установлено несколько версий платформы, может возникнуть ситуация, когда служба запущена из каталога одной версии (например, 8.3.18.1289), а вы работаете в Конфигураторе другой версии (например, 8.3.18.1433). Из-за различий в механизмах кэширования метаданных между минорными сборками возникает рассинхронизация.
Для исправления ситуации выполним следующие действия:
services.msc).regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (название может незначительно отличаться в зависимости от версии).ImagePath и изменим путь так, чтобы он указывал на актуальную версию платформы bin\ragent.exe.После этой манипуляции и перезапуска Конфигуратора новые объекты расширения обычно становятся доступны в общем списке типов.
Проанализируем ситуацию с точки зрения настроек самого расширения. Платформа 1С очень чувствительна к режиму совместимости. Если вы создали расширение в базе, где основная конфигурация работает на режиме 8.3.20, а у самого расширения установлен режим совместимости 8.3.14, некоторые механизмы работы с типами новых объектов могут быть ограничены.
Рекомендуется выполнить проверку:
Иногда Конфигуратору требуется «встряска» для обновления внутреннего кэша типов расширения. Мы можем спровоцировать полную переиндексацию простым приемом:
Этот метод заставляет платформу полностью пересчитать все ссылки и вхождения данного типа в метаданные расширения, что часто исправляет ошибку отображения в интерфейсе.
Рассмотрим еще один нюанс, связанный с ролями. Если вы разрабатываете расширение в базе, где включена строгая проверка прав, и при этом в расширении созданы свои роли, убедитесь, что ваш текущий пользователь имеет права на Чтение и Просмотр нового объекта. В некоторых версиях платформы диалог выбора типа фильтрует объекты метаданных в соответствии с правами текущего сеанса разработчика.
Посмотрим на настройки ролей:
Резюме: Если вы столкнулись с отсутствием объекта расширения в списке типов, первым делом попробуйте использовать поиск или кнопку быстрого выбора (стрелку). Если это не помогает, следует проверить соответствие версий серверного агента в реестре и режим совместимости расширения.