Ничего сложного, регистрируем обработку в "Дополнительные внешние обработки по заполнению табличных частей", в документе выбираем стандартное начисление "Месячная премия", выбираем период начислений из которых необходимо начислить премию, заполняем сотрудников и нажимаем заполнить, у нас 90% премия, - убрал в модуль так как сами понимаете нужно было сделать быстро... универсальность отсутствует.
Затем построчно заполняется премия обращаясь к функции в виде запроса в котором внесены стандартные типы расчётов:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(Док.ДатаНачалаБП));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(Док.ДатаОкончанияБП));
Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СУММА(Начисления.Результат) КАК Результат
|ИЗ
| РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Начисления
|ГДЕ
| Начисления.ПериодРегистрации МЕЖДУ &ДатаНачала И &ДатаОкончания
| И Начисления.Сотрудник = &Сотрудник
| И (Начисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням)
| ИЛИ Начисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаНочныеЧасы)
| ИЛИ Начисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ДоплатаЗаПраздничныеИВыходные)
| ИЛИ Начисления.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ОплатаПраздничныхИВыходных))" ;
Рез = Запрос.Выполнить();
Если Рез.Пустой() Тогда Возврат Неопределено; КонецЕсли;
РезТЗ = Рез.Выгрузить();
Возврат РезТЗ[0][0];