Обновление данных (в БСП): отсутствуют права на отчеты ИР
|
|
Max | Дата: Среда, 08.07.2020, 19:40 | Сообщение # 1 |
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
| Типовое РЗ "Отложенное обновление ИБ" падает с ошибкой на обработчике "ВариантыОтчетов.ОтложенноеОбновлениеОбщихДанныхКонфигурацииИнкрементальное".
Текст ошибки: Процедура "ВариантыОтчетов.ОтложенноеОбновлениеОбщихДанныхКонфигурацииИнкрементальное" обработки данных завершилась с ошибкой:
Нарушение прав доступа! {ОбщийМодуль.ВариантыОтчетов.Модуль(1342)}: Результат.Объект = Отчеты[Результат.Имя].Создать(); {ОбщийМодуль.ВариантыОтчетов.Модуль(4688)}: Подключение = ПодключитьОтчетОбъект(ВариантОбъект.Отчет, Ложь); {ОбщийМодуль.ВариантыОтчетов.Модуль(3509)}: СхемаПроиндексирована = ПроиндексироватьСодержимоеСхемы(ВариантОбъект); {ОбщийМодуль.ВариантыОтчетов.Модуль(3402)}: ОбновитьИндексПоиска(Кэш); {ОбщийМодуль.ВариантыОтчетов.Модуль(2991)}: ОтложенноеОбновлениеДанных("ОбщиеДанныеКонфигурации", Ложь); {(1)}:ВариантыОтчетов.ОтложенноеОбновлениеОбщихДанныхКонфигурацииИнкрементальное(Параметры[0]) {ОбщийМодуль.РаботаВБезопасномРежиме.Модуль(513)}: Выполнить ИмяМетода + "(" + ПараметрыСтрока + ")"; {ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(4125)}: РаботаВБезопасномРежиме.ВыполнитьМетодКонфигурации(ИмяОбработчика, ПараметрыОбработчика); {ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(3877)}: ЗапуститьПроцедуруОбработкиДанных(ОбработчикОбновления, ПараметрыОбновления); {ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(2386)}: ОбработчикиВыполнялись = ВыполнитьОтложенныйОбработчикОбновления(СведенияОбОбновлении);
по причине: Нарушение прав доступа!
Это происходит из-за того, что сеанс ФЗ (порожденный этим РЗ) по умолчанию выполняется под DefUser (т.е. в свойствах РЗ не указан пользователь ИБ), у которого нет прав на объекты расширений (в частности, и на отчеты ИР).
Добавлено (08.07.2020, 19:40) --------------------------------------------- Способ обхода: выбрать пользователя ИБ, под которым будет выполняться это РЗ, и для выбранного пользователя вручную добавить роль, дающую право на отчеты из расширений. В случае с ИР я дал ему право "ирРазработчик" и назначил этого пользователя как пользователя РЗ. После этого РЗ выполнилось успешно.
Но: поскольку любые добавленные пользователю роли сбрасываются при каждом очередном обновлении данных БСП (а также и при перезаписи прикладного пользователя), если этот пользователь входит в типовую (предопределенную) группу доступа "Администраторы", и учитывая, что в качестве пользователя РЗ с крайне высокой вероятностью будет выбран именно такой пользователь (входящий в эту группу доступа), то эту манипуляцию потребуется осуществлять при каждом очередном обновлении данных БСП.
Предлагаю продумать способ обхода (вероятно, через расширение модулей), который: 1. Программа-минимум: участникам типовой группы "Администраторы" помимо "прибитых гвоздями" в коде БСП двух ролей "Администрирование" и "ПолныеПрава" должны назначаться и роли, дающие полные права на объекты ИР. Решение многократно описано на ИС и де-факто является типовой и распространенной доработкой БСП. 2. Программа-максимум: чтобы не требовалось назначать пользователя для того РЗ, т.е. чтобы у DefUser'а основные роли были не только те, что указаны в корне конфигурации, но еще и роли, дающие полные права на объекты расширения ИР. Но тут есть важный нюанс со свойством "Основные роли" у корня расширения: его анализ и поведение поменялось в каком-то релизе БСП на противоположное тому, которое закладывалось разработчиками платформы (БСП перекрывает эту логику, отсюда частично вытекает требование подключать расширения в конфигурациях на БСП только через форму администрирования БСП), поэтому малой кровью этот второй пункт решить вряд ли удастся.
Сообщение отредактировал Max - Среда, 08.07.2020, 19:43 |
|
| |
tormozit | Дата: Четверг, 09.07.2020, 20:23 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| Привязываться к каким то объектам БСП напрямую (через механизм расширений конфигурации) - значит потерять возможность запускать расширение в конфигурациях без БСП. Я конечно не буду так делать ради стремительно сокращающегося множества баз с БСП 2.3. Собственно оно стремительно сокращается как раз из-за рассматриваемой здесь проблемы. Решать эту проблему в ИР скорее всего будет неоправдано.
Предлагаю просто разместить здесь решение с доработкой БСП 2.3 для решения проблемы с ролями расширений в виде закрепленной темы. Приведи ссылки или опиши его в виде отдельного небольшого сообщения.
|
|
| |
Max | Дата: Четверг, 09.07.2020, 20:26 | Сообщение # 3 |
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
| Цитата tormozit ( ) множества баз с БСП 2.3 Так это поведение и в 2.4, и в 3.0, и в 3.1 по идее никак не поменялось - любая дарованная пользователю роль - хоть напрямую, хоть через группу доступа - сбрасывается при очередном обновлении данных в предприятии, если такой пользователь участвует в предопределенной группе "Администраторы".
Сообщение отредактировал Max - Четверг, 09.07.2020, 20:27 |
|
| |
tormozit | Дата: Пятница, 10.07.2020, 00:04 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| Цитата Max ( ) любая дарованная пользователю роль - хоть напрямую, хоть через группу доступа - сбрасывается при очередном обновлении данных в предприятии, если такой пользователь участвует в предопределенной группе "Администраторы" Согласен. Однако по моему опыту это не вызывает ощутимых проблем при эксплуатации варианта Расширение ИР, т.к. при первом входе после удаления роли ирРазработчик эта роль будет автоматически добавлена первому вошедшему администратору. Ну и всегда можно внешней обработкой "Установщик расширения" быстро ее себе добавить.
Цитата Max ( ) DefUser (т.е. в свойствах РЗ не указан пользователь ИБ), у которого нет прав на объекты расширений (в частности, и на отчеты ИР) Насколько я помню, этот пользователь в каждом расширении берет роли из свойства "Основные роли". А если оно не заполнено, то для него ограничения доступа к объектам этого расширения/конфигурации не применяются.
|
|
| |
Max | Дата: Вторник, 04.08.2020, 22:50 | Сообщение # 5 |
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
| Цитата tormozit ( ) Насколько я помню, этот пользователь в каждом расширении берет роли из свойства "Основные роли". А если оно не заполнено, то для него ограничения доступа к объектам этого расширения/конфигурации не применяются Увы, это справедливо только если расширение не содержит собственные роли. В противном случае наделение пользователей правами на объекты расширения возлагается на администратора. Подробнее: открываем документацию для 8.3.15: https://its.1c.ru/db/v8315doc#bookmark:dev:TI000001531 Видим в ней отсылку для режима совместимости расширения 8.3.13- и переходим в нее: https://its.1c.ru/db/v8313doc#bookmark:dev:TI000001531
Цитата При работе с ролями расширения следует иметь ввиду следующее: в том случае, если раширение не содержит собственных ролей, то доступ к объектам расширения предоставляется всем пользователям информационной базы. В тоже время, если в расширении существуют собственные роли, которые регламентируют доступ к объектам расширения, то всем пользователям информационной базы, которые должны иметь к объектам расширения, следует добавить роли из расширения. В противном случае объекты расширения не будут доступны пользователям. Что мы и наблюдаем: отложенное обновление ИБ, а в частности обновление какого-то там индекса поиска отчетов, не может выполниться, т.к. в расширении ИР есть свой отчет, а пользователю этого регл. задания не назначена роль из расширения ИР.
Кажется, что прописывание в свойстве "Основные роли" корня конфигурации расширения ИР любой одной роли, дающей права на отчеты ИР, должно решить проблему. Хотелось бы увидеть это в какой-нибудь из следующих версий расширения ИР.
Сообщение отредактировал Max - Вторник, 04.08.2020, 22:52 |
|
| |
tormozit | Дата: Вторник, 04.08.2020, 23:39 | Сообщение # 6 |
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
| Т.к. проблема с отчетами касается только БСП 2.3, то я предлагаю тебе это самому проверить. Делать доступными объекты подсистемы пусть и не интерактивно всем пользователям я бы не хотел. Для меня важно, чтобы в работе сеансов обычных пользователей расширение ИР оказывало как можно меньше влияния. Кстати свойство ИспользоватьОсновныеРолиДляВсехПользователей доступно только с 8.3.15, а до этого оно считается равным Истина, т.е. там все пользователи сразу получают основные роли всех расширений.
|
|
| |
Max | Дата: Среда, 05.08.2020, 14:46 | Сообщение # 7 |
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
| Цитата tormozit ( ) Т.к. проблема с отчетами касается только БСП 2.3 Я тут выяснил интересные подробности: начал проверять на демо-базах БСП 3.1, 3.0, 2.4 и там не воспроизвелось. Я уже почти подумал, что ты прав, и это какая-то особенность БСП 2.3, но проверил на демо-базе БСП 2.3 и - о чудо! - на ней тоже не воспроизвелось.
Пришлось копать глубже.
Дело в том, что при обновлении этого индекса поиска вариантов отчетов во всех демо-базах БСП все в порядке, поскольку у корня конфигурации не заполнено свойство "ХранилищеВариантовОтчетов", а также в справочнике "ПредопределенныеВариантыОтчетов" отсутствуют отчеты ИР (а в моей базе, где проблема проявляется, в этом справочнике присутствует элемент "Консоль компоновок данных (ИР)"). Заполненность этого свойства корня влияет на то, считается ли отчет по умолчанию подключенным к вариантам отчетов БСП или не считается. Во всех УТ 11 (11.2, 11.3, 11.4) (вообще во всей линейке ЕРП - КА 2) это свойство в корне конфигурации заполнено и поэтому все отчеты, у которых не заполнено свойство "ХранилищеВариантов", считаются все равно подключенными к подсистеме вариантов отчетов БСП.
Чуть позже напишу продолжение, как выясню, как в справочник "ПредопределенныеВариантыОтчетов" в моей базе попал отчет из ИР.
Выяснил на демо-базе БСП 2.3: отчеты ИР попадают в этот справочник в ходе обновления идентификаторов объектов метаданных (либо при "полном" обновлении данных, либо при выборочном через обработку "Обновление вспомогательных данных"). Как итог - удалось воспроизвести ошибку "полного" обновления данных в демо-базе БСП 2.3. Но поскольку на БСП 2.4 и 3.1 ошибку воспроизвести мне уже не удалось, то сходимся во мнении, что это некая "особенность" БСП 2.3. Либо последствия поднятия у нее режима совместимости (с 8.3.6 до 8.3.9), когда сам код БСП на отчеты в расширениях еще не рассчитывает.
Как итог, буду обходить сабжевую проблему доработкой кода БСП.
Сообщение отредактировал Max - Среда, 05.08.2020, 15:42 |
|
| |