В базе введено ограничение доступа по группам доступа физических лиц
Созданы 3 группы доступа
В справочнике физлица заполнен реквизит "группа доступа"
С некоторых пор (два последних обновления конфы)
при заполнении документа "Начисление зарплаты" под правами пользователя с установленной группой доступа заполнение вылетает с ошибкой прав доступа - отладчик показываает на сообщение результата выполнения длительной операции.
В журнале регистрации запись что сработало ограничение доступа на справочник "Сотрудники" и всё - никакой конкретики больше там нет.
(0)+ конфа полностью типовая - на поддержке
у пользователей штатные профили "кадровик, расчетчик, табельщик"
странно - что раньше всё работало - после обновлений перестало.
По коду ясно что логика заполнения построена следующим образом
1. генерируется массив сотрудников
2. генерируются таблицы с начислениями, удержаниями, НДФЛ взносами и т.д по сотрудникам из п.1
Под отладчиком в сеансе под ограниченным пользователем вывел список сотрудников при заполнении - обнаружил что попали несколько сотров с неразрешенной группой доступа
по ним "объект не найден"
- судя по всему косяк в типовом алгоритме получения списка сотрудников для заполнения.
Не стал искать косяк в типовом алгоритме.
Обошел ошибку так:
Общий модуль РасчетЗарплатыРасширенный
Функция СотрудникиДляНачисленияЗарплаты(Организация, Подразделение, МесяцНачисления, ДополнительныеПараметры = Неопределено) Экспорт
там в конце есть такой код
<1C>
ТекстЗапроса =
"ВЫБРАТЬ
| Сотрудники.Сотрудник
|ИЗ
| ВТВсеСотрудникиОрганизации КАК Сотрудники";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
РезультатЗапроса = Запрос.Выполнить();
Сотрудники = Новый Массив;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сотрудники.Добавить(Выборка.Сотрудник);
КонецЦикла;
Возврат Сотрудники;
</1C>
текст запроса немного поменял:
ТекстЗапроса =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Сотрудники.Сотрудник
|ИЗ
| ВТВсеСотрудникиОрганизации КАК Сотрудники
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФЛ
| ПО Сотрудники.ФизическоеЛицо = ФЛ.Ссылка";
чтобы заставить сработать РЛС явно -
вроде как работает теперь заполнение как надо и без ошибки.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс