Добавил блок 9
This commit is contained in:
		
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
# Планы видов расчета и регистры расчета
 | 
			
		||||
 | 
			
		||||
## Задание 1
 | 
			
		||||
 | 
			
		||||
### Описание задачи
 | 
			
		||||
 | 
			
		||||
Создать простой план видов расчета и регистр для расчета управленческой зарплаты.
 | 
			
		||||
 | 
			
		||||
### Требование к результату
 | 
			
		||||
 | 
			
		||||
Выгрузка информационной базы (.dt) с конфигурацией из [диплома Б](diploma-b.md), содержащая план видов расчета "НачисленияИУдержания" с предопределенными видами расчета "Оплата по окладу", "Оплата по ставке часа", "Премия", "Отпуск", "Больничный" и регистр расчета "Зарплата" с единственным измерением "Сотрудник" и ресурсом "Сумма".
 | 
			
		||||
 | 
			
		||||
### Процесс выполнения
 | 
			
		||||
 | 
			
		||||
Используйте конфигурацию из предыдущих заданий.
 | 
			
		||||
 | 
			
		||||
1. Добавьте подсистему **Зарплата**.
 | 
			
		||||
 | 
			
		||||
2. Добавьте в нее план видов расчета **НачисленияУдержания**, использующий период действия.
 | 
			
		||||
К нему добавьте предопределенные виды расчетов:
 | 
			
		||||
 | 
			
		||||
* ОплатаПоОкладу ("Оплата по окладу")
 | 
			
		||||
* ОплатаПоСтавкеЧаса ("Оплата по ставке часа")
 | 
			
		||||
* Премия ("Премия")
 | 
			
		||||
* Отпуск ("Отпуск")
 | 
			
		||||
* Больничный ("Больничный")
 | 
			
		||||
 | 
			
		||||
3. Добавьте в нее регистр расчетов **Зарплата** с периодичностью "Месяц", использующий период действия и базовый период.
 | 
			
		||||
К нему добавьте измерение **Сотрудник** (СправочникСсылка.Сотрудники) и ресурс **Сумма** (ОпределяемыйТип.Сумма).
 | 
			
		||||
 | 
			
		||||
4. Включите добавленные объекты в состав функциональной опции **ВестиРасчетЗарплаты**.
 | 
			
		||||
 | 
			
		||||
## Задание 2
 | 
			
		||||
 | 
			
		||||
### Описание задачи
 | 
			
		||||
 | 
			
		||||
Создать документ "Начисление списком", позволяющий ввести начисление фиксированной суммой (например, премию) по списку сотрудников с указанным периодом действия.
 | 
			
		||||
 | 
			
		||||
### Требование к результату
 | 
			
		||||
 | 
			
		||||
Выгрузка информационной базы (.dt) с конфигурацией из предыдущего задания, содержащая документ **НачислениеСписком**, позволяющий указать вид начисления и таблицу сотрудников с суммами.
 | 
			
		||||
Помимо даты документа (периода регистрации) документ должен давать возможность указать период действия, отличающийся от периода регистрации.
 | 
			
		||||
 | 
			
		||||
### Процесс выполнения
 | 
			
		||||
 | 
			
		||||
Конфигурация из предыдущего задания.
 | 
			
		||||
 | 
			
		||||
1. Добавьте документ **НачислениеСписком** с реквизитами шапки **Начисление** (ПланВидовРасчетаСсылка.НачисленияУдержания), **НачалоПериодаДействия**, **КонецПериодаДействия** (Дата и время).
 | 
			
		||||
Добавьте к нему табличную часть **Сотрудники** с реквизитами **Сотрудник** (СправочникСсылка.Сотрудники) и **Сумма** (ОпределяемыйТип.Сумма).
 | 
			
		||||
Сделайте его регистратором регистра расчета **Зарплата**.
 | 
			
		||||
Включите его в состав функциональной опции **ВестиРасчетЗарплаты**.
 | 
			
		||||
 | 
			
		||||
2. Выведите реквизиты на форму разумным образом.
 | 
			
		||||
 | 
			
		||||
3. В модуле документа создайте обработку проведения. В ней:
 | 
			
		||||
 | 
			
		||||
* Очистите набор записей Движения.Зарплата.
 | 
			
		||||
* Для каждой строки табличной части создайте движение, заполнив в нем вид расчета, сотрудника, сумму, период регистрации (по дате документа) и период действия (по значениям реквизитов  **НачалоПериодаДействия** и **КонецПериодаДействия**). Базовый период заполнять не нужно: фиксированное начисление ни от чего не зависит.
 | 
			
		||||
* Запишите набор записей Движения.Зарплата.
 | 
			
		||||
 | 
			
		||||
4. Заполните и проведите документ. Удостоверьтесь в том, что движения по регистру формируются без ошибок.
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								09. Механизмы расчета/02. Вытеснение/homework-9-2.dt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								09. Механизмы расчета/02. Вытеснение/homework-9-2.dt
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										57
									
								
								09. Механизмы расчета/02. Вытеснение/homework-9-2.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								09. Механизмы расчета/02. Вытеснение/homework-9-2.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
# Вытеснение и расчет по базе
 | 
			
		||||
 | 
			
		||||
## Задание 1
 | 
			
		||||
 | 
			
		||||
### Описание задачи
 | 
			
		||||
 | 
			
		||||
Создать документ "Начисление по окладу", позволяющий ввести начисление по окладу по списку сотрудников с учетом графика работы и вытеснения.
 | 
			
		||||
 | 
			
		||||
### Требование к результату
 | 
			
		||||
 | 
			
		||||
Выгрузка информационной базы (.dt) с конфигурацией из предыдущего задания, содержащая документ **НачислениеПоОкладу**, позволяющий указать таблицу сотрудников.
 | 
			
		||||
Документ должен рассчитывать оклад, умножая реквизит **Оклад** справочника  **Сотрудники** на отношение фактически отработанного времени к норме.
 | 
			
		||||
Норма должна рассчитываться согласно графику по периоду действия. Факт - согласно графику по фактическому периоду (т.е. с учетом вытеснения).
 | 
			
		||||
 | 
			
		||||
### Процесс выполнения
 | 
			
		||||
 | 
			
		||||
Конфигурация из предыдущего задания.
 | 
			
		||||
 | 
			
		||||
1. Добавьте непериодический регистр сведений **Календарь**.
 | 
			
		||||
 | 
			
		||||
Добавьте измерение **Дата** (Дата) и ресурс **РабочийДень** (Число). Ресурс будет содержать 1, если день рабочий, и 0 в противном случае.
 | 
			
		||||
Укажите его в качестве графика регистра расчета **Зарплата**.
 | 
			
		||||
Включите его в состав функциональной опции **ВестиРасчетЗарплаты**.
 | 
			
		||||
 | 
			
		||||
2. В плане видов расчета **НачисленияУдержания**:
 | 
			
		||||
 | 
			
		||||
Добавьте предопределенные виды расчетов **Больничный** и **Отпуск** как вытесняющие для вида расчета **ОплатаПоОкладу**.
 | 
			
		||||
 | 
			
		||||
3. Добавьте документ **НачислениеПоОкладу**.
 | 
			
		||||
 | 
			
		||||
Добавьте к нему табличную часть **Сотрудники** с реквизитом **Сотрудник**.
 | 
			
		||||
Сделайте его регистратором регистра расчета **Зарплата**.
 | 
			
		||||
Включите его в состав функциональной опции **ВестиРасчетЗарплаты**.
 | 
			
		||||
Выведите реквизиты на форму разумным образом.
 | 
			
		||||
 | 
			
		||||
4. В модуле документа создайте обработку проведения документа, в которой:
 | 
			
		||||
 | 
			
		||||
* Соберите запросом оклады сотрудников из документа по данным справочника **Сотрудники**.
 | 
			
		||||
* Очистите набор записей Движения.Зарплата.
 | 
			
		||||
* Для каждой строки табличной части создайте движение, заполнив в нем вид расчета (**ПланыВидовРасчета.НачисленияУдержания.ОплатаПоОкладу**), сотрудника, период регистрации и период действия. Период действия берите как начало и конец месяца даты документа. Сумму на этом этапе не заполняйте.
 | 
			
		||||
* Запишите набор записей Движения.Зарплата.
 | 
			
		||||
* Для каждой записи:
 | 
			
		||||
  * Вызовом функции **РегистрыРасчета.Зарплата.ПолучитьДанныеГрафика** получите число рабочих дней в периоде действия (норму) и число рабочих дней в фактическом периоде (факт).
 | 
			
		||||
  * Установите сумму как Оклад * Факт /  Норма:
 | 
			
		||||
 | 
			
		||||
```bsl
 | 
			
		||||
Отбор = Новый Структура("Регистратор, Сотрудник", Ссылка, Движение.Сотрудник);
 | 
			
		||||
Норма = РегистрыРасчета.Зарплата.ПолучитьДанныеГрафика(Отбор, 
 | 
			
		||||
ВидПериодаРегистраРасчета.ПериодДействия)[0].РабочийДень;
 | 
			
		||||
Факт = РегистрыРасчета.Зарплата.ПолучитьДанныеГрафика(Отбор, 
 | 
			
		||||
ВидПериодаРегистраРасчета.ФактическийПериодДействия)[0].РабочийДень;
 | 
			
		||||
вижение.Сумма = ?(Норма = 0, 0, Оклад * Факт / Норма);
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
* Снова запишите набор записей Движения.Зарплата.
 | 
			
		||||
 | 
			
		||||
5. Заполните и проведите документ. Удостоверьтесь в том, что движения по регистру формируются по окладу в отсутствие вытесняющих оклад начислений (больничного, отпуска), и уменьшаются согласно дням неявки.
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
# Виртуальные таблицы регистра расчета
 | 
			
		||||
 | 
			
		||||
## Задание 1
 | 
			
		||||
 | 
			
		||||
### Описание задачи
 | 
			
		||||
 | 
			
		||||
Создать документ "Начисление премии процентом", позволяющий ввести начисление премии процентом по базе от оклада.
 | 
			
		||||
 | 
			
		||||
### Требование к результату
 | 
			
		||||
 | 
			
		||||
Выгрузка информационной базы (.dt) с конфигурацией из предыдущего задания, содержащая документ **НачислениеПремииПроцентом**, позволяющий указать таблицу сотрудников и общий процент премии.
 | 
			
		||||
Документ должен рассчитывать премию, получая базу запросом к виртуальной таблице **Зарплата.БазаЗарплата** и умножая базу на процент.
 | 
			
		||||
 | 
			
		||||
### Процесс выполнения
 | 
			
		||||
 | 
			
		||||
Конфигурация из предыдущего задания.
 | 
			
		||||
 | 
			
		||||
1. Удостоверьтесь, что в плане видов расчета есть предопределенный вид расчета **ПремияПроцентом**, зависящий от базового **ОплатаПоОкладу** по периоду действия.
 | 
			
		||||
 | 
			
		||||
2. Добавьте документ **НачислениеПремииПроцентом** (можно скопировать другой зарплатный документ).
 | 
			
		||||
 | 
			
		||||
* Добавьте к нему табличную часть **Сотрудники** с реквизитом **Сотрудник** и реквизит шапки **ПроцентПремии**.
 | 
			
		||||
* Сделайте его регистратором регистра расчета **Зарплата**.
 | 
			
		||||
* Включите его в состав функциональной опции **ВестиРасчетЗарплаты** и подсистемы **Зарплата**.
 | 
			
		||||
* Выведите реквизиты на форму разумным образом.
 | 
			
		||||
 | 
			
		||||
3. В модуле документа создайте обработку проведения документа, в которой:
 | 
			
		||||
 | 
			
		||||
* Очистите набор записей Движения.Зарплата.
 | 
			
		||||
* Для каждой строки табличной части создайте движение, заполнив в нем вид расчета (**ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом**), сотрудника, период регистрации, период действия и базовый период. Период действия берите как начало и конец месяца даты документа. Сумму на этом этапе не заполняйте.
 | 
			
		||||
* Запишите набор записей Движения.Зарплата.
 | 
			
		||||
* Запросом получите таблицу базовых начислений:
 | 
			
		||||
```bsl
 | 
			
		||||
	Запрос = Новый Запрос(
 | 
			
		||||
		"ВЫБРАТЬ
 | 
			
		||||
		|	ЗарплатаБазаЗарплата.Сотрудник КАК Сотрудник,
 | 
			
		||||
		|	ЗарплатаБазаЗарплата.СуммаБаза КАК СуммаБаза
 | 
			
		||||
		|ИЗ
 | 
			
		||||
		|	РегистрРасчета.Зарплата.БазаЗарплата(
 | 
			
		||||
		|			&Измерения,
 | 
			
		||||
		|			&Измерения,
 | 
			
		||||
		|			,
 | 
			
		||||
		|			Регистратор = &Регистратор
 | 
			
		||||
		|				И ВидРасчета = &ВидРасчета) КАК ЗарплатаБазаЗарплата");
 | 
			
		||||
	Запрос.УстановитьПараметр("Регистратор", Ссылка);
 | 
			
		||||
	Запрос.УстановитьПараметр("ВидРасчета", ПланыВидовРасчета.НачисленияУдержания.ПремияПроцентом);
 | 
			
		||||
	Измерения = Новый Массив;
 | 
			
		||||
	Измерения.Добавить("Сотрудник");
 | 
			
		||||
	Запрос.УстановитьПараметр("Измерения", Измерения);
 | 
			
		||||
	База = Запрос.Выполнить().Выгрузить();
 | 
			
		||||
```
 | 
			
		||||
* Обойдя записи повторно, для каждой записи:
 | 
			
		||||
  * Найдите в таблице строку сотрудника.
 | 
			
		||||
  * Установите сумму как СуммаБаза * ПроцентПремии /  100.
 | 
			
		||||
 | 
			
		||||
4. Заполните и проведите документ. Удостоверьтесь в том, что движения по регистру формируются как процент от оклада за соответствующий период.
 | 
			
		||||
		Reference in New Issue
	
	Block a user