1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2025-02-10 18:10:35 +02:00

Create homework-9-3.md

This commit is contained in:
Stanislav Wilf 2020-09-06 22:48:58 +03:00 committed by GitHub
parent cdc03c7298
commit 18a2e38030
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

56
homework-9-3.md Normal file
View File

@ -0,0 +1,56 @@
# Виртуальные таблицы регистра расчета
## Задание 1
### Описание задачи
Создать документ "Начисление премии процентом", позволяющий ввести начисление премии процентом по базе от оклада.
### Требование к результату
Конфигурация из предыдущего задания, содержащая документ **НачислениеПремииПроцентом**, позволяющий указать таблицу сотрудников и общий процент премии.
Документ должен рассчитывать премию, получая базу запросом к виртуальной таблице **Зарплата.БазаЗарплата** и умножая базу на процент.
### Процесс выполнения
Конфигурация из предыдущего задания.
1. Удостоверьтесь, что в плане видов расчета есть предопределенный вид расчета **ПремияПроцентом**, зависящий от базового **ОплатаПоОкладу** по периоду действия.
2. Добавьте документ **НачислениеПремииПроцентом** (можно скопировать другой зарплатный документ).
* Добавьте к нему табличную часть **Сотрудники** с реквизитом **Сотрудник** и реквизит шапки **ПроцентПремии**.
* Сделайте его регистратором регистра расчета **Зарплата**.
* Включите его в состав функциональной опции **ВестиРасчетЗарплаты** и подсистемы **Зарплата**.
* Выведите реквизиты на форму разумным образом.
3. В модуле документа создайте обработку проведения документа, в которой:
* Очистите набор записей Движения.Зарплата.
* Для каждой строки табличной части создайте движение, заполнив в нем вид расчета (**ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом**), сотрудника, период регистрации, период действия и базовый период. Период действия берите как начало и конец месяца даты документа. Сумму на этом этапе не заполняйте.
* Запишите набор записей Движения.Зарплата.
* Запросом получите таблицу базовых начислений:
```bsl
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗарплатаБазаЗарплата.Сотрудник КАК Сотрудник,
| ЗарплатаБазаЗарплата.СуммаБаза КАК СуммаБаза
|ИЗ
| РегистрРасчета.Зарплата.БазаЗарплата(
| &Измерения,
| &Измерения,
| ,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчета) КАК ЗарплатаБазаЗарплата");
Запрос.УстановитьПараметр("Регистратор", Ссылка);
Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом);
Измерения = Новый Массив;
Измерения.Добавить("Сотрудник");
Запрос.УстановитьПараметр("Измерения", Измерения);
База = Запрос.Выполнить().Выгрузить();
```
* Обойдя записи повторно, для каждой записи:
* Найдите в таблице строку сотрудника.
* Установите сумму как СуммаБаза * ПроцентПремии / 100.
4. Заполните и проведите документ. Удостоверьтесь в том, что движения по регистру формируются как процент от оклада за соответствующий период.