Имя: Пароль:
1C
1С v8
Функция получения РК для сотрудника в ЗУП 3
0 егаис
 
03.06.20
07:49
Перерыл кажется все БСП ЗУП-ское, не могу найти функцию, которая бы вернула районный коэффициент сотрудника на дату, конечно, с учетом ведения рк по территориям.
1 егаис
 
03.06.20
07:57
пока вижу только запрос к РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних с соединением с регистром Территориии
Но все же думаю, что есть универсальная функция
2 Фрэнки
 
03.06.20
08:03
Не могу сказать, чтоб совсем пристально с этим разобрался, но навскидку впечатление, что РК берут просто как одно из назначенных сотруднику плановых начислений. Т.е. не просто некий показатель, а начисление с показателем. Поэтому универсальной функцией будет запрос по сотрудникам плановых начислений.
3 егаис
 
03.06.20
08:06
(2) в плановых нет показателя, и территория там точно не учитывается
4 егаис
 
03.06.20
08:08
пока думаю так
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Показатель КАК Показатель,
    ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Значение КАК Значение,
    ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.ДействуетДо КАК ДействуетДо,
    ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Организация КАК Организация
ИЗ
    РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(&ТекДата, (Сотрудник = &Сотрудник) и (Показатель = &Показатель) И ((ДействуетДо = ДатаВремя(1,1,1,0,0,0)) ИЛИ (ДействуетДо > &ТекДата))) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних

еще надо с РС территорий соединить и взять оттуда, если есть запись
5 Фрэнки
 
03.06.20
08:10
не хочу ломать голову... надоело.

Но вот так, через запросы с клиентского уровня и сразу на обращения в контексте сервера - это теперь не кошерно
6 егаис
 
03.06.20
08:11
(5) вот и я о том же, задницей чую, должна быть функция
7 Фрэнки
 
03.06.20
08:12
И твой запрос, кстати, тебя же опровергает. При построении таблицы с плановыми начислениями - если до самых потрохов доходить, то регистр там этот же
8 егаис
 
03.06.20
08:43
Колхоз-подход, но работает
        КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудник, "Территория", Дата);
        РК = 0;
        РассчитыватьРКПоПоказателям = Истина;
        Если КадровыеДанныеСотрудников.Количество() > 0 Тогда
            ТерриторияСотрудника = КадровыеДанныеСотрудников[0].Территория;
            Если ТерриторияСотрудника = NULL Тогда
            ИначеЕсли НЕ ТерриторияСотрудника.Пустая() Тогда
                РК = (ТерриторияСотрудника.РайонныйКоэффициент - 1)*100;
                РассчитыватьРКПоПоказателям = Ложь;
            КонецЕсли;    
        КонецЕсли;        
        Если РассчитыватьРКПоПоказателям Тогда
            Запрос = Новый Запрос;
            Запрос.Текст =
                "ВЫБРАТЬ РАЗЛИЧНЫЕ
                |    ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Значение КАК Значение
                    |ИЗ
                |    РегистрСведений.ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.СрезПоследних(
                |            &ТекДата,
                |            Сотрудник = &Сотрудник
                |                И Показатель = &Показатель
                |                И (ДействуетДо = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                |                    ИЛИ ДействуетДо > &ТекДата)) КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних";
            
            Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
            Запрос.УстановитьПараметр("Показатель", Справочники.ПоказателиРасчетаЗарплаты.РайонныйКоэффициент);
            Запрос.УстановитьПараметр("ТекДата", КонецДня(Дата));
            
            РезультатЗапросаВыборка = Запрос.Выполнить().Выбрать();
            Если РезультатЗапросаВыборка.Следующий() Тогда
                РК = (РезультатЗапросаВыборка.Значение - 1)*100;
            КонецЕсли;
        КонецЕсли;
9 Фрэнки
 
03.06.20
08:46
(8) угу. похоже на рабочий код. Но его можно переписать на встроенные процедуры. С тем же результатом.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.