Функция ДанныеОНачислениях(Сотрудник, НачалоПериода, КонецПериода, ПорядокРасчета, УчетНачисленийВСреднемЗаработкеОбщий = Неопределено) экспорт // для отчета ВводДанныхДляРасчетаСреднего
НаборЗаписей = РегистрыСведений.РНИ_ДляРасчетаСреднего.СоздатьНаборЗаписей();
Сеанс = ПолучитьТекущийСеансИнформационнойБазы();
наборзаписей.отбор.НачалоСеанса.Установить(Сеанс.НачалоСеанса);
наборзаписей.отбор.НомерСеанса.Установить(Сеанс.НомерСеанса);
наборзаписей.отбор.СотрудникУникальныйИдентификатор.Установить(Сотрудник.УникальныйИдентификатор());
наборзаписей.прочитать();
Если наборзаписей.количество() = 0 Тогда
СтруктураДанныеДляРасчета = УчетСреднегоЗаработка.ДанныеДляРасчетаОбщегоСреднегоЗаработкаСотрудника(
Сотрудник, ТекущаяДата(), НачалоПериода, КонецПериода, ПорядокРасчета, Неопределено, неопределено, Истина);
СотрудникУникальныйИдентификатор = Сотрудник.УникальныйИдентификатор();
АдресХЗ = ПоместитьВоВременноеХранилище(СтруктураДанныеДляРасчета,СотрудникУникальныйИдентификатор);
записьнабора = наборзаписей.Добавить();
записьнабора.СотрудникУникальныйИдентификатор = СотрудникУникальныйИдентификатор;
записьнабора.АдресХЗ = АдресХЗ;
записьнабора.период = Сеанс.НачалоСеанса;
записьнабора.НачалоСеанса = Сеанс.НачалоСеанса;
записьнабора.НомерСеанса = Сеанс.НомерСеанса;
наборзаписей.Записать();
иначе
АдресХЗ = наборзаписей[0].АдресХЗ;
СтруктураДанныеДляРасчета = ПолучитьИзВременногоХранилища(АдресХЗ);
КонецЕсли;
сумма = 0;
Если УчетНачисленийВСреднемЗаработкеОбщий = Неопределено Тогда
ДанныеОВремени = СтруктураДанныеДляРасчета.ДанныеОВремени;
Если ТипЗнч(ДанныеОВремени) = Тип("ТаблицаЗначений")Тогда
//ДанныеОВремени.свернуть(, "ОтработаноДней");
Сумма = ДанныеОВремени.Итог("ОтработаноДней");
КонецЕсли;
ИначеЕсли ТипЗнч(УчетНачисленийВСреднемЗаработкеОбщий) = Тип("ПеречислениеСсылка.УчетНачисленийВСреднемЗаработкеОбщий") Тогда
ДанныеОНачислениях = СтруктураДанныеДляРасчета.ДанныеОНачислениях.Скопировать(,"СоставнаяЧасть, Сумма");
Если ТипЗнч(ДанныеОНачислениях) = Тип("ТаблицаЗначений")Тогда
ДанныеОНачислениях.свернуть("СоставнаяЧасть", "Сумма");
Отбор = Новый Структура();
Отбор.Вставить("СоставнаяЧасть",УчетНачисленийВСреднемЗаработкеОбщий);
Строки = ДанныеОНачислениях.НайтиСтроки(Отбор);
Сумма = ?(Строки.Количество() = 0,0,Строки[0].Сумма);
КонецЕсли;
иначеЕсли ТипЗнч(УчетНачисленийВСреднемЗаработкеОбщий) = Тип("ПеречислениеСсылка.СпособыРасчетаНачислений") Тогда
ДанныеНачислений = СтруктураДанныеДляРасчета.ДанныеОНачислениях;
ДанныеВремени = СтруктураДанныеДляРасчета.ДанныеОВремени;
ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
ДополнительныеПараметры.Индексации = СтруктураДанныеДляРасчета.ДанныеОбИндексации;
ДополнительныеПараметры.ДатаНачалаСобытия = ТекущаяДата();
ДополнительныеПараметры.НачалоПериода = НачалоПериода;
ДополнительныеПараметры.ОкончаниеПериода = КонецПериода;
//ДополнительныеПараметры.ПоЧасам = Форма.ЧасовойСреднийЗаработок;
ДополнительныеПараметры.СпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням;
Сумма = УчетСреднегоЗаработкаКлиентСервер.СреднийЗаработокОбщий(ДанныеНачислений, ДанныеВремени, ДополнительныеПараметры);
КонецЕсли;
Возврат Сумма;
КонецФункции // ()