Имя: Пароль:
1C
1С v8
Рассчитать начисление имея значения показателей
,
0 gul_Sayan
 
30.06.22
14:26
Требуется рассчитать начисление не записывая его в регистр расчета, требуется для планирования подставляя среднее время, а не фактически отработанное. Как это можно сделать имея формулу вида расчета и значения показателей. Все начисления первичные и от базы не зависят.
1 СвинТуз
 
30.06.22
14:30
Иногда проще отменить тразакцию
2 СвинТуз
 
30.06.22
14:32
В запросе.
Только отлавливать надо товарищей которые замещают и работают не полный месяц.
Запросом делается. От оклада.
3 СвинТуз
 
30.06.22
14:32
Получаешь фактический период действия. Базу в днях ли часах и умножаешь.
4 СвинТуз
 
30.06.22
14:34
Кстати при попытке расчета в регистре должен быть период действия в какой то момент.
Но можно и посчитать так по графикам и рабочим календарям - невыходы.
5 gul_Sayan
 
30.06.22
15:22
В том то и дело что нужно посчитать будто сотрудники отработали целый месяц причем не по часам месяца а средне годовой норме.
6 gul_Sayan
 
30.06.22
15:23
Но начислений куча и показателей тоже.
7 ГдеСобака Зарыта
 
30.06.22
15:59
Введенные документы отклонений (БЛ, отпуска и пр.) при расчете учитывать?
8 Said_We
 
30.06.22
16:15
(5) Не отработанное время, а среднегодовое - это уже другая формула для начисления.
Поэтому это не от показателей и не по формуле. Это другая формула. Да, немного похожая, но не более того.
9 gul_Sayan
 
30.06.22
16:33
(8) вот об чем и речь. Дублировать все нужные начисления не хочется, хочется вместо отработанного времени подставить фиксированную сумму и рассчитать, а так как это надо только для отчета то и писать в регистр расчета не хочется.
10 Said_We
 
30.06.22
16:54
(9) В ЗиУП не получится как ЗиК 77 взять в ТЗ всё запихать и запустить функцию расчета.
Все алгоритмы заточены на регистр расчета и наличие там записей, которые рассчитываешь.
Поэтому выход один - брать фиксированный список видов расчетов и для каждого, кокой-то алгоритм прописывать.

Если брать и временно записывать в РР, то будут вытеснения и другое количество времени, чего не нужно по условию задачи.
11 СвинТуз
 
30.06.22
16:58
Да ладно. Я что то похожее запросом считал.
12 СвинТуз
 
30.06.22
16:58
Как раз отчет плановая зарплата.
13 СвинТуз
 
30.06.22
17:00
Рассчитать зарплату перед формирование отчета = долго.
Вот пришлось.

Самое гадкое отлавливать совместителей, работающих не в своем подразделении.
Да еще если он болел.
14 СвинТуз
 
30.06.22
17:01
Реально в запросе пришлось период действия вычислять и вытеснение делать.
15 СвинТуз
 
30.06.22
17:01
Но даже 1000 - 10 000 это не объем.
Считает быстро.
16 Said_We
 
30.06.22
17:06
Вопрос не в объеме, а в использовании стандартной функции расчета.
Или можно её использовать или частично можно или нельзя совсем.
17 gul_Sayan
 
01.07.22
07:26
(12) Вопрос в основном как задействовать формулу для расчета а не подставлять в каждый вид расчета что-то вручную.
18 SleepyHead
 
гуру
01.07.22
08:51
Посмотри, как это сделано в модуле обработки "МенеджерРасчетаЗарплаты" в ЗУП

У тебя есть формула начисления, ее можно вытащить из начисления. И есть уже готовые значения показателей, они в структуре ИсходныеДанные, в ней ключ - идентификатор показателя.

Формула = СтрЗаменить(Формула, "ИсходныеДанные.", "Параметры.");
Попытка
   Сумма = ОбщегоНазначения.ВычислитьВБезопасномРежиме(Формула, ИсходныеДанные);
Исключение
  Сумма = 0;
  ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
    НСтр("ru = 'При расчете начисления «%1» за %5 для сотрудника %2 возникла ошибка: %4
     |Формула, используемая при расчете: %3'"),
    Начисление,
    Сотрудник,
    Формула,
    ИнформацияОбОшибке().Описание,
    Формат(ДатаНачала, "ДФ='ММММ гггг'"));
    Сообщить(ТекстСообщения);
КонецПопытки;
19 gul_Sayan
 
01.07.22
13:38
(18) Спасибо!