Приоритеты видов расчета в 1С 8.3

Курс

Данная статья является логическим продолжением предыдущей статьи.

Если сейчас в одном документе начисления зарплаты указать и оклад и премию, то премия не будет рассчитана:

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

Чтобы исправить это нужно указать приоритеты для видов расчета. Это может быть реквизит типа число или перечисление или еще какой-нибудь тип. Главное чтобы можно было упорядочить по нему все виды расчета. При расчете начислений все виды расчетов будут разбиты по приоритетам на независимые поднаборы регистра расчета. После расчета каждого поднабора он будет записан в базу.

Добавим реквизит в план видов расчета и заполним его для оклада и премии:

У оклада приоритет равен 1, у премии 2. Сначала будут рассчитаны и записаны все виды расчетов с приоритетом 1, потом с приоритетом 2 и т.д. Соответственно при расчете премии сумма оклада уже будет записана в регистр расчета и для премии база будет не нулевой.

Изменим алгоритм расчета:

  1. Формируем набор записей регистра расчета.
  2. Записываем набор с расчетом фактического периода действия.
  3. Сортируем виды расчетов документа по приоритету, тем самым разбив набор записей на несколько поднаборов.
  4. Последовательно рассчитываем виды расчета и после расчета каждого поднабора записываем его в базу.

Теперь в одном документе можно рассчитать и оклад и премию.


Подписывайтесь на группу ВКонтакте , где я публикую ссылки на новые статьи с данного сайта, а также интересные материалы с других ресурсов по программированию в 1С
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Используя этот сайт, Вы даете согласие на использование cookies. На данном этапе Вы можете отказаться от использования cookies, настроив необходимые параметры в своем браузере.
ok