Работа с механизмом расширений в 1С — это мощный инструмент, однако на версиях платформы 8.3.11 и конфигурациях с БСП 2.4 (например, ERP 2.4 или КА 2.4) программисты часто сталкиваются с тем, что новые роли ведут себя непредсказуемо. Ошибки типа "Поле объекта недоступно для записи" или полное отсутствие ролей расширения в списке доступных в Конфигураторе могут поставить в тупик. Разберем детально, как устроена эта механика и как правильно настроить права доступа для объектов расширения.
Проанализируем ситуацию, описанную пользователем. Основная проблема заключается в том, что разработчик пытается применить логику работы с обычной конфигурацией к расширению. В версиях платформы 8.3.11 и выше механизм расширений имеет ряд архитектурных особенностей:
ИдентификаторыОбъектовМетаданных. Если новый объект расширения не попал в этот справочник, механизмы БСП (профили групп доступа) не смогут корректно обработать права, даже если роль в расширении настроена идеально.Поле объекта недоступно для записи при открытии формы часто сигнализирует о том, что у роли есть права на сам объект (например, документ), но отсутствуют права на чтение/просмотр стандартных реквизитов (Ссылка, ВерсияДанных, ПометкаУдаления) или на чтение самой конфигурации в целом.Выясним причину, по которой роль может не работать. Рассмотрим стандартную ошибку: программист заимствует роль из основной конфигурации в расширение и пытается ее модифицировать. Вместо этого рекомендуем придерживаться следующего алгоритма:
Создадим роль непосредственно внутри расширения. Не нужно переносить типовые роли "Полные права" или другие в расширение для выдачи прав на новые объекты. Назовем новую роль, например, ДобавлениеИзменениеНовыхДокументов_Расширение. В этой роли необходимо отметить права на ваши новые объекты метаданных.
Важный нюанс: Обязательно проверьте, чтобы в этой роли на уровне всей конфигурации (самый верхний узел в дереве прав роли) стояли галочки Тонкий клиент, Толстый клиент и Просмотр. Без этого сеанс пользователя с ограниченными правами может инициализироваться некорректно.
Если ваша конфигурация построена на БСП (как ERP 2.4), то управление доступом происходит через Профили групп доступа. Чтобы новые объекты из расширения появились в системе, их нужно "зарегистрировать". Посмотрим, как это сделать программно, так как стандартные параметры запуска не всегда помогают.
Разберем пример кода, который необходимо выполнить в режиме "1С:Предприятие" (например, через консоль кода или внешнюю обработку):
// Обновляем данные справочника идентификаторов объектов метаданных
// Параметры: ВыполнятьВФоне = Ложь, УдалятьНеактуальные = Истина
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника(Ложь, Истина);
// Если расширение добавило новые реквизиты к существующим объектам,
// может потребоваться также обновление параметров работы системы
ПараметрыСеанса.УстановленныеРасширения = ""; // Сброс кэша расширений в сеансе
После выполнения этого метода объекты расширения станут доступны для выбора в справочнике Идентификаторы объектов метаданных, и вы сможете увидеть их при редактировании Профиля групп доступа.
Рассмотрим подробнее процесс назначения прав. Как мы уже выяснили, в Конфигураторе роли расширения могут быть недоступны. Поэтому выполним следующие действия в режиме "Предприятие":
Помните: Пользователю в любом случае должна быть назначена хотя бы одна роль из основной конфигурации (например, Запуск тонкого клиента), иначе вход в систему будет невозможен.
Проанализируем ситуацию, когда права вроде бы даны, но ошибка остается. В расширениях на платформе 8.3.11 часто встречается баг "неявных прав". Выясним, как его обойти:
Проверьте права на стандартные реквизиты. Откройте вашу роль в расширении, найдите новый объект (документ или справочник) и убедитесь, что на закладке "Реквизиты" установлены флаги для всех полей, включая системные. Особое внимание уделите реквизиту Проведен (для документов) и ПометкаУдаления.
Также проверьте настройку Безопасный режим у расширения. Перейдем в Администрирование — Печатные формы, отчеты и обработки — Расширения. Если для вашего расширения установлен флаг Безопасный режим, платформа накладывает жесткие ограничения на запись данных и вызов определенных методов. Попробуйте снять этот флаг и флаг Защита от опасных действий, после чего перезапустите сеанс.
Подводя итог, при работе с ролями в расширениях на платформе 8.3.11 следует помнить:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника().srvinfo), так как 1С может "помнить" старую структуру прав расширения.Соблюдение этих шагов позволит вам корректно настроить систему прав даже в условиях ограничений ранних версий механизма расширений.