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

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




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

|ИЗ

|   РегистрРасчета. Начисления. БазаНачисления(& ИзмеренияОсновного,

|            & ИзмеренияБазового, , Регистратор =

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

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

|   КАК НачисленияБазаНачисления";

Измер = Новый Массив(1); Измер[0] =" Сотрудник";

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

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

КонецЕсли;

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


В параметрах виртуальной таблицы запроса мы кроме привычных для нас регистратора, вида расчета и списка сотрудников задаем еще измерения основного и базового регистров. В нашем случае это будет один и тот же регистр Начисления, а нужное нам измерение – Сотрудник.

В заключение осталось добавить во второе условие Если… обход набора записей регистра расчета и вычисление результата вторичных записей (листинг 18. 7).

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

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

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

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

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

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

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

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

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

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

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

Если ВыборкаРезультата. НайтиСледующий(СтруктураНомер) Тогда ЗаписьРегистра. Результат = ВыборкаРезультата. База * (10 / 100); Сообщение = Новый СообщениеПользователю;

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

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

КонецЕсли; КонецЦикла;

КонецЕсли;

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

Сумму начисленной премии мы рассчитываем как 10 % от рассчи- танной оплаты по окладу.


В режиме «1С: Предприятие»

Запустим «1С: Предприятие» в режиме отладки и проверим правиль- ность работы процедуры расчета.

Отменим проведение документа Начисления сотрудникам № 3 (Еще } Отмена проведения) и перепроведем документы Начисления сотруд- никам № 1 и № 2. Регистр расчета Начисления должен выглядеть следующим образом (рис. 18. 14, 18. 15).

 

 

 

Мы видим, что всем сотрудникам произведены начисления по окладу (поле Результат) за полный месяц в соответствии с исходными данными (поле Исходные данные).

Сотрудникам Гусакову и Деловому начислена премия в размере 10 % от суммы начисления по окладу.

Проведем документ Начисление сотрудникам № 3, а затем № 1 и № 2. При этом отчет Перерасчет должен быть пуст.


Состояние регистра изменится следующим образом (рис. 18. 16, 18. 17).

 

 

 

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

 

Поделиться:





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



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