I НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки

ИЗ

| РегистрРасчета.Начисления.ДанныеГрафика(

| Регистратор = &Регистратор И

| ВидРасчета = &ВидРасчета И

| Сотрудник В (&СписокСотрудников))

| КАКНачисленияДанныеГрафика";

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

НаборЗаписейРегистра.Отбор.Регистратор.Значение);

Запрос.УстановитьПараметр("ВидРасчета",ТребуемыйВидРасчета); ЗапросУстановитьПараметр("СписокСотрудников", СписокСотрудников);


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

Для КаждогоЗаписьРегистра Из НаборЗаписейРегистра Цикл СтруктураНомер = Новый СтруктураС'НомерСтроки"); СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки; ВыборкаРезультата.Сбросить();

Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) тогда Если ВыборкаРезультата.Норма = 0 тогда

Сообщить("Вид расчета: Оклад — Нет рабочих дней в заданном периоде",); ЗаписьРегистра.Результат = 0; Иначе

/Л*ассчитать оклад по фактическому периоду и исходным данным ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные / ВыборкаРезультата.Норма) * ВыборкаРезультата.Факт; Сообщить("Выполнен расчет "+ЗаписьРегистра.Регистратор+" - "+

ЗаписьРегистра.ВидРасчета+" - "+ЗаписьРегнстра.Сотрудник,); КонецЕсли; КонецЕсли; КонецЦикла;

//Рассчитать вторичные записи иначеЕсли ТребуемыйВидРасчета =

ПланыВидовРасчета.ОсновныеНачисления.Премиятогда КонецЕсли; КонецПроцедуры

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

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

«РегистрРасчета.Начисления.БазаНачисления»:

ПроцедураРасчитатьНачисления(НаборЗаписейРегистра^ребуемыйВидРасчета,

СписокСотрудников) Экспорт //Рассчитать первичные записи Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад тогда

// Рассчитать вторичные записи


 


352



Использование основных объектов конфигурации


Использование регистра расчета


 


иначеЕсли ТребуемыйВвдРасчета =

ПланыВидовРасчета.ОсновныеНачисления.Премиятогд

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

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

"ВЫБРАТЬ

I НачиеленияБазаНачислення.РезультатБаза КАК База,