Рекомендую все сложные расчеты разбивать на два этапа - подготовка таблиц на основе документа и расчет данных на основе этой таблицы, выполняемый на сервере.
Приведу пример для первого этапа, то есть для формирования предварительных записей.
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ОсновныеНачисления.Записывать = Истина;
Движения.ДополнительныеНачисления.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
".... // запрос к ТЧ основных начислений";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ПериодРегистрации" , ПериодРегистрации);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ОсновныеНачисления.Добавить();
ЗаполнитьЗначенияСвойств(Движение, Выборка);
Движение.ПериодРегистрации = ПериодРегистрации;
Если Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Больничный Тогда
Движение.БазовыйПериодКонец = ПериодРегистрации - 1;
Движение.БазовыйПериодНачало = ДобавитьМесяц(ПериодРегистрации, -1);
ИначеЕсли Выборка.ВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
Движение.Параметр = Выборка.Оклад;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"".... // запрос к ТЧ дополнительных начислений";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ПериодРегистрации" , ПериодРегистрации);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Движение = Движения.ДополнительныеНачисления.Добавить();
ЗаполнитьЗначенияСвойств(Движение, Выборка);
Движение.ПериодРегистрации = ПериодРегистрации;
Если Выборка.ВидРасчета = ПланыВидовРасчета.ДополнительныеНачисления.ПремияПроцентом Тогда
Движение.БазовыйПериодКонец = КонецМесяца(ПериодРегистрации);
Движение.БазовыйПериодНачало = ПериодРегистрации;
ИначеЕсли Выборка.ВидРасчета = ПланыВидовРасчета.ДополнительныеНачисления.Компенсация Тогда
Движение.Параметр = Выборка.Компенсация;
КонецЕсли;
КонецЦикла;
Движения.ОсновныеНачисления.Записать();
Движения.ДополнительныеНачисления.Записать();
РасчетЗП.Расчитать(Ссылка,Движения.ОсновныеНачисления,Движения.ДополнительныеНачисления);
КонецПроцедуры
Вот тут, в этой обработке, я показала, как подготовить предварительные записи для будущей обработки, записал их и передал для расчета в процедуру общего модуля «РасчетЗП» с директивой выполнения на сервере.