mirror of
https://github.com/netology-code/1c-homeworks.git
synced 2024-11-24 08:02:20 +02:00
4.5 KiB
4.5 KiB
Виртуальные таблицы регистра расчета
Задание 1
Описание задачи
Создать документ "Начисление премии процентом", позволяющий ввести начисление премии процентом по базе от оклада.
Требование к результату
Конфигурация из предыдущего задания, содержащая документ НачислениеПремииПроцентом, позволяющий указать таблицу сотрудников и общий процент премии. Документ должен рассчитывать премию, получая базу запросом к виртуальной таблице Зарплата.БазаЗарплата и умножая базу на процент.
Процесс выполнения
Конфигурация из предыдущего задания.
-
Удостоверьтесь, что в плане видов расчета есть предопределенный вид расчета ПремияПроцентом, зависящий от базового ОплатаПоОкладу по периоду действия.
-
Добавьте документ НачислениеПремииПроцентом (можно скопировать другой зарплатный документ).
- Добавьте к нему табличную часть Сотрудники с реквизитом Сотрудник и реквизит шапки ПроцентПремии.
- Сделайте его регистратором регистра расчета Зарплата.
- Включите его в состав функциональной опции ВестиРасчетЗарплаты и подсистемы Зарплата.
- Выведите реквизиты на форму разумным образом.
- В модуле документа создайте обработку проведения документа, в которой:
- Очистите набор записей Движения.Зарплата.
- Для каждой строки табличной части создайте движение, заполнив в нем вид расчета (ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом), сотрудника, период регистрации, период действия и базовый период. Период действия берите как начало и конец месяца даты документа. Сумму на этом этапе не заполняйте.
- Запишите набор записей Движения.Зарплата.
- Запросом получите таблицу базовых начислений:
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗарплатаБазаЗарплата.Сотрудник КАК Сотрудник,
| ЗарплатаБазаЗарплата.СуммаБаза КАК СуммаБаза
|ИЗ
| РегистрРасчета.Зарплата.БазаЗарплата(
| &Измерения,
| &Измерения,
| ,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчета) КАК ЗарплатаБазаЗарплата");
Запрос.УстановитьПараметр("Регистратор", Ссылка);
Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом);
Измерения = Новый Массив;
Измерения.Добавить("Сотрудник");
Запрос.УстановитьПараметр("Измерения", Измерения);
База = Запрос.Выполнить().Выгрузить();
- Обойдя записи повторно, для каждой записи:
- Найдите в таблице строку сотрудника.
- Установите сумму как СуммаБаза * ПроцентПремии / 100.
- Заполните и проведите документ. Удостоверьтесь в том, что движения по регистру формируются как процент от оклада за соответствующий период.