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