1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-16 07:10:14 +02:00
1c-homeworks/homework-9-3.md
2024-10-02 01:18:21 +03:00

4.6 KiB

Виртуальные таблицы регистра расчета

Задание 1

Описание задачи

Создать документ "Начисление премии процентом", позволяющий ввести начисление премии процентом по базе от оклада.

Требование к результату

Выгрузка информационной базы (.dt) с конфигурацией из предыдущего задания, содержащая документ НачислениеПремииПроцентом, позволяющий указать таблицу сотрудников и общий процент премии. Документ должен рассчитывать премию, получая базу запросом к виртуальной таблице Зарплата.БазаЗарплата и умножая базу на процент.

Процесс выполнения

Конфигурация из предыдущего задания.

  1. Удостоверьтесь, что в плане видов расчета есть предопределенный вид расчета ПремияПроцентом, зависящий от базового ОплатаПоОкладу по периоду действия.

  2. Добавьте документ НачислениеПремииПроцентом (можно скопировать другой зарплатный документ).

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