Почему новый предопределенный элемент справочника «Роли исполнителей» не виден в 1С:ERP 2.4?

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

При разработке в среде 1С:ERP Управление предприятием 2.4 (и других конфигурациях на базе БСП) программисты часто сталкиваются с ситуацией: в конфигураторе создан новый предопределенный элемент справочника РолиИсполнителей, но при попытке выбрать его в режиме «1С:Предприятие» (например, в регистре сведений ИсполнителиЗадач) элемент просто отсутствует в списке. При этом другие, «старые» предопределенные элементы видны и доступны для выбора.

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

Причина 1: Особенности механизма обновления предопределенных данных

В современных версиях платформы 1С:Предприятие 8.3 создание элемента в дереве метаданных конфигуратора не гарантирует его автоматическое и корректное появление в базе данных. Существует свойство «Обновление предопределенных данных», которое может быть установлено в значение «Автоматически», «Не обновлять» или «Программно».

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

/c ЗапуститьОбновлениеИнформационнойБазы

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

Причина 2: Фильтрация в динамическом списке справочника

Самая частая причина «невидимости» роли кроется не в отсутствии записи в базе, а в том, что форма выбора или форма списка накладывает жесткие фильтры. В 1С:ERP справочник РолиИсполнителей работает в связке с подсистемой бизнес-процессов. Проанализируем запрос, который обычно используется в форме списка этого справочника:


ВЫБРАТЬ
    СправочникРолиИсполнителей.Ссылка,
    СправочникРолиИсполнителей.Наименование,
    СправочникРолиИсполнителей.ИспользуетсяБезОбъектовАдресации,
    СправочникРолиИсполнителей.ИспользуетсяСОбъектамиАдресации
ИЗ
    Справочник.РолиИсполнителей.Назначение КАК РолиИсполнителейНазначение
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РолиИсполнителей КАК СправочникРолиИсполнителей
    ПО РолиИсполнителейНазначение.Ссылка = СправочникРолиИсполнителей.Ссылка
ГДЕ
    РолиИсполнителейНазначение.ТипПользователей = Значение(Справочник.Пользователи.ПустаяСсылка)

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

Причина 3: Недостаточное заполнение реквизитов адресации

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

Если эти реквизиты не заполнены, роль может не пройти валидацию в программных модулях БСП при попытке записи в регистр ИсполнителиЗадач.

Как решить проблему: пошаговая инструкция

Чтобы новая роль гарантированно появилась в списке, выполним следующие действия:

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

Резюме

При работе с ERP 2.4 и справочником РолиИсполнителей важно помнить, что предопределенный элемент — это лишь «заготовка». Чтобы система «увидела» его в бизнес-процессах и задачах, необходимо обеспечить наличие записи в табличной части Назначение и правильно выставить флаги использования объектов адресации. Без этих данных типовые запросы в формах выбора будут игнорировать ваш новый элемент.

← На главную