Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

| НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки




|   НачисленияДанныеГрафика. НомерСтроки КАК НомерСтроки

|ИЗ

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

|            ВидРасчета = & ВидРасчета И Сотрудник В (& СписокСотрудников))

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

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

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

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

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

КонецЕсли; КонецПроцедуры

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

Теперь добавим обход переданного в процедуру набора записей и расчет записей, для которых получены значения графика (листинг 18. 5).


листинг 18. 5. Добавление обхода набора записей и расчета первичных записей

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

СписокСотрудников) Эспорт

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

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

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

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

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

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

Сообщение = Новый СообщениеПользователю; Сообщение. Текст = " Вид расчета: Оклад –

Нет рабочих дней в заданном периоде";


Иначе


Сообщение. Сообщить(); ЗаписьРегистра. Результат = 0;

// Рассчитать оклад по фактическому периоду и исходным данным ЗаписьРегистра. Результат = (ЗаписьРегистра. ИсходныеДанные

ВыборкаРезультата. Норма) * ВыборкаРезультата. Факт; Сообщение = Новый СообщениеПользователю;

Сообщение. Текст =" Выполнен расчет" + ЗаписьРегистра. Регистратор

+" –" + ЗаписьРегистра. ВидРасчета +" –" + ЗаписьРегистра. Сотрудник;

Сообщение. Сообщить();


КонецЕсли; КонецЕсли;

КонецЦикла;

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

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

КонецЕсли; КонецПроцедуры

Для каждой записи из набора записей регистра расчета мы получаем номер строки, идентифицирующий начисление для конкретного


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

Если в результате запроса есть запись с таким номером строки, мы рассчитываем результат записи регистра расчета. То есть мы получаем начисление по окладу для каждого сотрудника как результат от деления начисленной суммы (поле регистра Исходные- Данные) на количество рабочих дней в месяце (Норма) и умножения на фактически отработанные рабочие дни (Факт).

Добавим текст запроса во вторую ветку условия Если… с той лишь разницей, что теперь мы будем получать значения базы, используя виртуальную таблицу регистра расчета РегистрРасчета. Начис- ления. БазаНачисления (листинг 18. 6).

листинг 18. 6. Добавление текста запроса во вторую ветку условия

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

СписокСотрудников) Экспорт

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

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

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

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

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

Запрос = Новый Запрос; Запрос. Текст =

" ВЫБРАТЬ

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

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...