Имя: Пароль:
1C
1С v8
ЗУП 3.0 При заполнении начисления зп под rls выпадает с ошибкой нарушения прав.
0 asady
 
19.01.16
09:42
Столкнулся с проблемой

Конфа ЗУП 3.0.25.56
платформа 8.3.7.1845

В базе введено ограничение доступа по группам доступа физических лиц
Созданы 3 группы доступа
В справочнике физлица заполнен реквизит "группа доступа"
С некоторых пор (два последних обновления конфы)
при заполнении документа "Начисление зарплаты" под правами пользователя с установленной группой доступа заполнение вылетает с ошибкой прав доступа - отладчик показываает на сообщение результата выполнения длительной операции.
В журнале регистрации запись что сработало ограничение доступа на справочник "Сотрудники" и всё - никакой конкретики больше там нет.

Кто сталкивался с этой проблемй как решали?
1 asady
 
19.01.16
09:45
(0)+ пробовал в клиент-серверном варианте и в файловом - результат один - заполнение не происходит - ошибка доступа.
2 asady
 
19.01.16
10:03
(0)+ конфа полностью типовая - на поддержке
у пользователей штатные профили "кадровик, расчетчик, табельщик"

странно - что раньше всё работало - после обновлений перестало.

По коду ясно что логика заполнения построена следующим образом

1. генерируется массив сотрудников
2. генерируются таблицы с начислениями, удержаниями, НДФЛ взносами и т.д по сотрудникам из п.1

Под отладчиком в сеансе под ограниченным пользователем вывел список сотрудников при заполнении - обнаружил что попали несколько сотров с неразрешенной группой доступа
по ним "объект не найден"
- судя по всему косяк в типовом алгоритме получения списка сотрудников для заполнения.
3 asady
 
19.01.16
10:22
Не стал искать косяк в типовом алгоритме.
Обошел ошибку так:

Общий модуль РасчетЗарплатыРасширенный
Функция СотрудникиДляНачисленияЗарплаты(Организация, Подразделение, МесяцНачисления, ДополнительныеПараметры = Неопределено) Экспорт

там в конце есть такой код
<1C>
    ТекстЗапроса =
    "ВЫБРАТЬ
    |    Сотрудники.Сотрудник
    |ИЗ
    |    ВТВсеСотрудникиОрганизации КАК Сотрудники";
    
    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    
    РезультатЗапроса = Запрос.Выполнить();
    Сотрудники = Новый Массив;
    
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
        Сотрудники.Добавить(Выборка.Сотрудник);
    КонецЦикла;
    
    Возврат Сотрудники;
</1C>

текст запроса немного поменял:
    ТекстЗапроса =
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |    Сотрудники.Сотрудник
    |ИЗ
    |    ВТВсеСотрудникиОрганизации КАК Сотрудники
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФЛ
    |        ПО Сотрудники.ФизическоеЛицо = ФЛ.Ссылка";

чтобы заставить сработать РЛС явно -



вроде как работает теперь заполнение как надо и без ошибки.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс