Разбиение в сводах по шифрам затрат

1)Зачем необходимо "Разбиение по Шифрам Затрат"

Суммы, попадающие в своды, обладают рядом атрибутов: 

  • вид начисления 
  • код подразделения
  • код профессии
  • шифр затрат 

и другие характеристики, по которым могут формироваться отчеты в различных разрезах. Однако не все суммы обладают нужными для формирования отчета атрибутами. Некоторые нужные атрибуты могут быть вычислены в процессе формирования свода. 

Применяемый для этого механизм в системе называется "Разбиение по шифрам затрат". Пример:

Суммы в своде до разбиения

Вид НУ

Сумма

Шифр затрат

103 Cдельно

1000

20-A

103 Cдельно

2000

20-Б

199 Районный коэффициент

450

не указан

Суммы в своде после разбиения

Вид НУ

Сумма

Шифр затрат

103 Cдельно

1000

20-A

103 Cдельно

2000

20-Б

199 Районный коэффициент

150

20-А

199 Районный коэффициент

300

20-Б

Таким образом, сумма по 199 виду делится на части пропорционально суммам 103 вида и этим частям присваиваются соответствующие шифры затрат.

2)Каков алгоритм разбиения в сводах?

  • "Алгоритм разбиения" состоит из одного или нескольких наборов для разбиения.
  • Набор для разбиения характеризуется тем - что(какой вид/виды) мы хотим в этом наборе разбить (соответственно, алгоритм разбиения это множество разбиваемых при подготовке сводов видов).
  • Каждый набор разбиения содержит настройку из 5 частей:
    1. Условие разбиения суммы - эта часть определяет, какие виды будут разбиваться данным набором. Т.е. если в этом блоке вернуть ненулевое значение - вид будет разбиваться, если вернуть нулевое -  вид  разбит не будет.  Например:

       return (338==S.ExternCod || 508==S.ExternCod);

      В этом примере блок вернет 1, если код рассматриваемого вида будет равен 338 или 508 

      и вернет 0 в противном случае. 

      Это означает, что набор разбиение, где будет прописано такое "условие разбиения", будет разбивать только виды 338 и 508.

    2. Условие расчета таблицы разбиения- задаются правила, по которым заполняется таблица разбиения (таблица, по данным из которой происходит разбиение вида, удовлетворяющего "Условию разбиения суммы"). Например:

      return IncomeCodeForCodNU(238,S.InternCod);

      В этом примере блок вернет 1, если в настройке 238 алгоритма налога стоит ненулевой код дохода и вернет 0 в противном случае. Таким образом, при таком условии расчета таблицы разбиения в таблицу частей разбиения попадет только информация по видам, у которых код дохода отличен от пустого.

    3. Зависимость от других наборов- это значит, что перед тем, как должен отработать данный набор разбиения, необходимо чтобы отработали все наборы разбиения от которых он зависит.

      Например:

      В ЛС есть несколько окладов с разными ШЗ. При этом еще есть премия (начисляется на оклады) и РК (начисляется на оклады + премию). Если мы захотим корректно разбить НДФЛ по ШЗ, то нам надо сначала разбить премию по ШЗ, потом разбить РК, и уже на последнем этапе разбивать НДФЛ.

      Т.е. мы должны будем завести минимум 3 набора разбиения - один для премий, второй для РК  (в нем указать зависимость от набора для премии), и третий набор для НДФЛ ( в нем указать зависимость как от премий так и от РК).

    4. Фильтр для таблицы разбиения- задает дополнительное ограничение на правило разбиения. Чтобы при разбиении из таблицы разбиения выбирались только те строки, у которых значение некоторого реквизита совпадает со значением аналогичного реквизита разбиваемой строки.

      Например:

      В ЛС есть несколько источников финансирования, следовательно возникает желание разбивать НДФЛ по источнику по облагаемым суммам только своего источника. В этом случае в "таблице частей разбиения" у нас должен быть столбец "Источник" и тогда в фильтре для таблицы разбиения мы сможем сюда добавить (по F7) фильтр по источнику. Таким образом, НДФЛ по источнику А будет биться по облагаемым суммам источника А ...

    5. Таблица частей разбиения– таблица, куда на подготовительном этапе собирается информация для последующего разбиения. Таблица представляет собой обычный настраиваемый свод. При разбиении по этой таблице мы получаем вместо одной разбиваемой суммы столько сумм, сколько строчек в этой таблице получилось при ее заполнении.

3)Как происходит разбиение?

Разбиение происходит в два этапа:

  1. На основе информации из ЛС, по правилам, указанным в Условие расчета таблицы разбиениязаполняетсятаблица разбиения. Т.е. сначала мы пробегаемся по всем суммам в ЛС (начисленные в текущем месяце) и вычисляем для них Условие расчета таблицы разбиения. Если условие ненулевое, то информацию по сумме добавляется в таблицу разбиения. Это проделываем для каждой суммы для всех наборов разбиения.

  2. На втором этапе начинается собственно разбиение. Т.е. мы опять же идем по всем суммам, но теперь уже проверяем Условие разбиения суммы. Если для какого-то из наборов разбиения оно ненулевое - сумма разбивается потаблице частей разбиения из этого набора и, разбитые кусочки суммы добавляются в тот свод, который мы готовим. После того как был найден один набор разбиения - остальные наборы уже не рассматриваются (т.е. одна и та же сумма не будет биться несколько раз разными наборами разбиений). Если же подходящего набора разбиения не нашлось, то сумма переносится в готовящийся свод без всяких изменений

Важно!При разбиении суммы, не только вычисляется часть суммы, но у этой части еще подменяются некоторые атрибуты. Например. Если у разбиваемой суммы налога ШАУдебет был 999, а в таблице разбиения есть столбец ШАУдебет и в строке, для которой мы высчитали разбитую часть суммы стоял ШАУдебет 111, то разбитый кусочек пойдет в итоговый свод уже с ШАУдебет 111, а не 999. Если бы этого не происходило, то смысла в разбиении не было бы (т.к. в своде суммы с одинаковыми атрибутами будут склеены).


Пример.

в ЛС есть 4 строки оклада с разными "ШАУ дебет":

ШАУ дебет

Код подразделения

Сумма

111 1 1000
222 1 2000
333 1 4000
111 2 5000

Если таблица частей разбиения будет состоять из столбцов "ШАУ дебет" - "Сумма", то на первом этапе мы получим такую таблицу:

ШАУ дебет

Сумма
111 6000
222 2000
333 4000

Итого: 12000


Пусть мы будем бить НДФЛ. Сумма НДФЛ: 1560р
Т.е. на втором этапе мы будем получать следующие "кусочки" НДФЛ (которые пойдут в свод):

ШАУ дебет

Сумма
111 1560*6000/12000 = 780
222 1560*2000/12000 = 260
333 1560 - 780-260 = 520

Таким образом, в своде мы получили вместо одной строки НДФЛ ( с суммой 1560р) -  три строки НДФЛ (с суммами 780р, 260р, 520р.), разбитые по аналитике "ШАУ дебет".

Эта статья помогла Вам?

Сервис поддержки клиентов работает на платформе UserEcho