Страницы: 1
RSS
Запись в регистр расчета
 

Коллеги, добрый день. Не получается выполнить расчет премии на основе оклада? Нужно ли тут делать запись в регистр расчета или нет?

Заранее спасибо.

 
Цитата
Гость12 написал:
Коллеги, добрый день. Не получается выполнить расчет премии на основе оклада? Нужно ли тут делать запись в регистр расчета или нет?  Заранее спасибо.
Конечно, нужно. Сначала вы должны сделать записи в регистр расчета и только после этого выполнить расчет на основе этих самых данных. Если брать ваш пример, то нельзя рассчитать премию на основе оклада пока этот самый оклад не записан в регистр расчета.
 

Я вас понял. А как проще всего создать записи в регистр расчета?

 

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

Приведу пример для первого этапа, то есть для формирования предварительных записей.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

Движения.ОсновныеНачисления.Записывать = Истина;

Движения.ДополнительныеНачисления.Записывать = Истина;

Запрос = Новый Запрос;

Запрос.Текст =

".... // запрос к ТЧ основных начислений";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Запрос.УстановитьПараметр("ПериодРегистрации" , ПериодРегистрации);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

Движение = Движения.ОсновныеНачисления.Добавить();

ЗаполнитьЗначенияСвойств(Движение, Выборка);

Движение.ПериодРегистрации = ПериодРегистрации;

Если Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Больничный Тогда

Движение.БазовыйПериодКонец = ПериодРегистрации - 1;

Движение.БазовыйПериодНачало = ДобавитьМесяц(ПериодРегистрации, -1);

ИначеЕсли Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда

Движение.Параметр = Выборка.Оклад;

КонецЕсли;

КонецЦикла;

Запрос = Новый Запрос;

Запрос.Текст =

"".... // запрос к ТЧ дополнительных начислений";

Запрос.УстановитьПараметр("Ссылка", Ссылка);

Запрос.УстановитьПараметр("ПериодРегистрации" , ПериодРегистрации);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

Пока Выборка.Следующий() Цикл

Движение = Движения.ДополнительныеНачисления.Добавить();

ЗаполнитьЗначенияСвойств(Движение, Выборка);

Движение.ПериодРегистрации = ПериодРегистрации;

Если Выборка.ВидРасчета = ПланыВидовРасчета.ДополнительныеНачисления.ПремияПроцентом Тогда

Движение.БазовыйПериодКонец = КонецМесяца(ПериодРегистрации);

Движение.БазовыйПериодНачало = ПериодРегистрации;

ИначеЕсли Выборка.ВидРасчета = ПланыВидовРасчета.ДополнительныеНачисления.Компенсация Тогда

Движение.Параметр = Выборка.Компенсация;

КонецЕсли;

КонецЦикла;

Движения.ОсновныеНачисления.Записать();

Движения.ДополнительныеНачисления.Записать();

РасчетЗП.Расчитать(Ссылка,Движения.ОсновныеНачисления,Движения.ДополнительныеНачисления);

КонецПроцедуры

Вот тут, в этой обработке, я показала, как подготовить предварительные записи для будущей обработки, записал их и передал для расчета в процедуру общего модуля «РасчетЗП» с директивой выполнения на сервере.

 

Спасибо огромное!

 
Цитата
Гость12 написал:
Спасибо огромное!
Добавлю, что информация в регистре расчета хранится в виде записей, каждая из которых содержит значения измерений и соответствующие им значения ресурсов.

Измерения регистра описывают разрезы, в которых хранится информация, а ресурсы регистра непосредственно содержат хранимую информацию.

Регистр расчета связан с одним из планов видов расчета, существующих в прикладном решении. Эта связь обуславливает наличие у каждой записи регистра поля Вид расчета, благодаря которому механизмы регистра могут отслеживать взаимное влияние записей расчета друг на друга.

 

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

Запись регистра расчета имеет ряд свойств, «привязывающих» ее к оси времени, например, свойства:

ПериодДействияНачало, ПериодДействияКонец – даты, которые ограничивают «обслуживаемый» данной записью промежуток времени;

ПериодРегистрации – дата, с которой запись влияет на учет.

 

Кстати, механизм по формировке записей для перерасчета производит анализ, на основании которого можно отследить влияние новых записей на старые. Вероятность влияния новых записей на старые определяется анализом взаимовлияний по видам расчета, а также на основании системы вытеснения согласно периоду действия и базовому периоду.

Страницы: 1