Почему реквизиты расширения не отображаются у пользователей в 1С:КА 2.4 и как это исправить?

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

При разработке расширений для современных конфигураций на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с ситуацией, когда новые реквизиты, добавленные в документы или справочники, ведут себя непредсказуемо. На копии базы у разработчика все работает идеально, но после внедрения на рабочую базу клиента часть пользователей (обычно те, у кого нет полных прав) не видят внесенных изменений. В этой статье мы подробно разберем причины возникновения этой проблемы и пошагово опишем методы её решения, опираясь на специфику работы 1С:Комплексная автоматизация 2.4 и механизмы БСП.

Анализ влияния режима совместимости и прав доступа

Первым делом проанализируем ситуацию с правами. В современных версиях платформы (начиная с 8.3.15) механизмы безопасности были существенно усилены. Если режим совместимости расширения установлен на 8.3.14 или выше, платформа требует явного указания прав доступа для всех новых объектов, добавленных через расширение. Рассмотрим, почему это критично.

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

Алгоритм действий для настройки прав:

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

Обновление идентификаторов объектов метаданных

В конфигурациях, использующих Библиотеку стандартных подсистем (БСП), таких как КА 2.4 или ERP, права доступа строятся на справочнике ИдентификаторыОбъектовМетаданных. Когда мы добавляем новые реквизиты через расширение, система не всегда автоматически регистрирует их в этом справочнике, особенно если загрузка расширения производилась через пользовательский режим, а не через конфигуратор.

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


Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Истина, Ложь, Ложь);
ПараметрыОбновления = Справочники.ИдентификаторыОбъектовМетаданных.ПараметрыОбновления();
Справочники.ИдентификаторыОбъектовМетаданных.ВыполнитьОбновлениеИнформацииОбОбъектахМетаданных(ПараметрыОбновления);

После выполнения этого кода система переиндексирует состав метаданных, включая объекты расширения, что позволит механизмам прав доступа БСП корректно обрабатывать новые поля.

Проблема индивидуальных настроек формы («Кэш формы»)

Рассмотрим ситуацию, описанную в сообщении №7: у старого пользователя реквизиты не видны, а у вновь созданного — всё в порядке. Это классический признак того, что проблема кроется в сохраненных настройках формы. 1С сохраняет состояние элементов интерфейса (видимость, положение, ширина колонок) для каждого пользователя индивидуально в системных таблицах базы данных.

Если пользователь открывал форму ЗаказПокупателя до того, как было установлено расширение, система запомнила «старый» вид формы. При появлении новых реквизитов они могут либо автоматически попасть в список скрытых элементов, либо просто игнорироваться из-за приоритета пользовательской настройки над программной.

Как сбросить настройки формы для пользователя:

  1. Зайдем в документ под пользователем, у которого возникла проблема.
  2. Нажмем кнопку «Ещё» в правой верхней части формы.
  3. Выберем пункт «Изменить форму...».
  4. В открывшемся окне нажмем «Ещё» — «Установить стандартные настройки».

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

Безопасный режим и способ загрузки расширения

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

Попробуем следующий вариант: в списке расширений снимем галочку «Безопасный режим» и перезапустим сеанс. Также, как советует сообщение №15, крайне рекомендуется выполнять обновление расширения через Конфигуратор. Это гарантирует корректную реструктуризацию таблиц базы данных в SQL-версии, особенно если реквизиты расширения должны хранить данные (флаг «Данные» в свойствах расширения).

Проверка функциональных опций и программного управления видимостью

Иногда новые реквизиты могут быть не видны из-за того, что они заимствованы вместе со свойствами родительского объекта, которые включают зависимость от Функциональных опций. Проверим, не привязан ли ваш реквизит в расширении к какой-либо системной опции, которая выключена у клиента.

Также разберем программный код управления видимостью, упомянутый автором (реквизит «Заказ будет готов одной датой»). Если видимость управляется в процедуре ПриЧтенииНаСервере или ПриСозданииНаСервере, убедитесь, что в расширении используется правильный тип вызова (&После или &Вместо) и что код учитывает права текущего пользователя. Для отладки можно временно добавить вывод сообщения:


&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    Сообщить("Текущий пользователь: " + Пользователи.ТекущийПользователь());
    // Проверка доступности реквизита программно
    Элементы.Расш1_НовыйРеквизит.Видимость = Истина;
КонецПроцедуры

Итоги и рекомендации

Подводя итог, можно сказать, что отсутствие видимости реквизитов — это комплексная проблема. Для её успешного решения мы рекомендуем придерживаться следующего чек-листа:

  1. Проверьте роли: создайте роль в расширении и добавьте её пользователям.
  2. Сбросьте настройки формы: используйте «Установить стандартные настройки» у проблемных пользователей.
  3. Обновите идентификаторы: выполните программное обновление справочника идентификаторов метаданных.
  4. Отключите безопасный режим: проверьте работу расширения без этой настройки.
  5. Используйте Конфигуратор: загружайте расширение через конфигуратор для корректного обновления структуры БД.

Соблюдение этих шагов позволит избежать большинства проблем с отображением элементов интерфейса в расширениях для 1С:Комплексная автоматизация 2.4.

← На главную