Как учесть совместительство сотрудника при использовании функций R_BZ и poisk_row
Добрый день.
Клиент попросил вот такой отчёт в КЗ:
Расчётчик при формировании выбирает произвольную надбавку, в отчёт выводится её базовое значение и сумма.
Сложность в том, что в ту же самую таблицу необходимо принять оклад сотрудника, умножить его на процент надбавки и вывести её сумму (см. последние 3 столбца на скриншоте).
Таблицу я реализовал, но не могу придумать, как учесть возможность, что у сотрудника 2 оклада по 2 разным должностям.
Вот при такой картине:
В отчёт выводится базовое значение только по одному окладу.
Для приёма пользовался функциями:
R_BZ(0,0,104)
и
poisk_row(4,0,data,0); (она нужна потому, что для каждого оклада ещё необходимо вытаскивать доп.реквизит строки)
Подскажите, пожалуйста, как заставить данные функции "реагировать" на код совместительства сотрудника?
Или, возможно, я не в ту сторону думаю, и такую таблицу проще по-другому реализовать?
Сервис поддержки клиентов работает на платформе UserEcho
Добрый день, Анатолий.
Для ускорения решения проблемы лучше сразу прилагать вашу таблицу.
Доп.реквизиты сейчас из нужной строки вытаскиваются?
Если да, то есть смысл, поставить вытаскивание БЗ после столбца с кодом оклада.
Так как пользователю будет не очень понятно видеть код оклада не 104 (как он привык) а 4, то луче если в столбец будет вытаскиваться внешний код (Intern_To_ExternE(GetCode(inCode)));
Чисто для красоты есть смысл в этом случае имя поля сделать не IntCode а
ExtCode... ну и тогда где обращались к IntCode надо заменить на
Extern_To_InternE(ExtCode)
Тогда вытаскивать БЗ можно будет R_BZ(0,0,ExtCode);
ZPL2907_zplinfo_full(20190813_144422).cab
Tabl6.Sum
На всякий случай приложил парочку сохранённых ЛС, чтоб не передавать отдельно ТВХ, список доп.реквизитов и прочее.
Код оклада клиент видеть не будет, ей только базовое значение нужно.
Доп реквизиты вытаскиваются тоже неправильные - оба по одной и той де строке (в том примере - 4.01.
Сложность ещё и в том, что у клиента существует "повышающий коэффициент для оклада", который передаётся из КП и записывается в доп. реквизит строки. И при приёме в таблицу мы не можем просто воспользоваться функцией R_BZ, необходимо принять также и доп.реквизит.
Поэтому приходится принимать БЗ оклада, принимать повышающий коэф-т из доп.реквизита, а потом перемножать их.
Но это уже усложнение исходной задачи - сейчас даже просто принять БЗ или принять доп.реквизит получается только если у сотрудника одна действующая строка оклада.
В таблицу нужно принять точный код вида, все остальные параметры вычисляются через точный код вида..
Сейчас набросаю пример
2.zip
Проблема как раз в том, что не получается принять в таблицу точный код вида.
Потому что сначала мы туда принимаем точный код надбавки, например, 121, как на скриншоте. А потом - точный код оклада сотрудника по данной должности (опять же см.скриншот).
Приведённая функция работает отлично, но она работает с уже готовым внешним кодом вида. Как его вычислить?
Например:
Совместительство 1 - оклад 104.02 - надбавка - 121.01
Совместительство 2 - оклад 104.04 - надбавка - 121.02
Проблема в том, чтобы именно вот эти данные в таком разрезе получить.
Дальше с помощью приведённой вами функции или через Rkv_from все необходимые данные вытащить будет уже не проблема.