#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"ПрисоединитьДополнительныеТаблицы
|ЭтотСписок КАК Т
|
|ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИндексацияШтатногоРасписания.Позиции КАК Т1
| ПО Т1.Ссылка = Т.Ссылка
|
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПодчиненностьПодразделенийОрганизаций КАК Т2
| ПО Т2.Подразделение = Т1.ПозицияШтатногоРасписания.Подразделение
|;
|РазрешитьЧтениеИзменение
|ГДЕ
| ЗначениеРазрешено(Т.Организация)
| И (Т1.ПозицияШтатногоРасписания.Подразделение ЕСТЬ NULL
| ИЛИ ДляВсехСтрок(
| ЗначениеРазрешено(Т2.Подразделение)
| ИЛИ ДляОднойИзСтрок(ЗначениеРазрешено(Т2.ВышестоящееПодразделение))))";
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ОбработчикиПравилРегистрации
Процедура ПриЗаполненииНастроекОбработчиковПравилРегистрации(Настройки) Экспорт
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОтбораПоОрганизации(Настройки);
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОбъектаСПрисоединеннымиФайлами(Настройки);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область ЗаполнениеДокумента
Процедура ЗаполнитьФОТПозицийНачислений(Объект, МенеджерВременныхТаблиц = Неопределено, СписокПозиций = Неопределено) Экспорт
ФОТПозицийНачислений = ФОТПозицийНачислений(Объект, МенеджерВременныхТаблиц, СписокПозиций);
ОтборПозиции = Новый Структура("ПозицияШтатногоРасписания");
ОтборНачисления = Новый Структура("ИдентификаторСтрокиПозиции,Начисление");
Для каждого СтрокаФОТПозиции Из ФОТПозицийНачислений.ФОТПозиций Цикл
ОтборПозиции.Вставить("ПозицияШтатногоРасписания", СтрокаФОТПозиции.ПозицияШтатногоРасписания);
СтрокиПозиции = Объект.Позиции.НайтиСтроки(ОтборПозиции);
Для каждого СтрокаПозиции Из СтрокиПозиции Цикл
ЗаполнитьЗначенияСвойств(СтрокаПозиции,
СтрокаФОТПозиции,
"ОкладТариф,ОкладТарифМин,ОкладТарифМакс,ФОТ,ФОТМин,ФОТМакс,РайонныйКоэффициентРазмер,РайонныйКоэффициентРазмерМин,РайонныйКоэффициентРазмерМакс,СевернаяНадбавкаРазмер,СевернаяНадбавкаРазмерМин,СевернаяНадбавкаРазмерМакс,НадбавкаЗаВредностьРазмер,НадбавкаЗаВредностьРазмерМин,НадбавкаЗаВредностьРазмерМакс");
КонецЦикла;
КонецЦикла;
Для каждого СтрокаФОТНачисления Из ФОТПозицийНачислений.ФОТНачислений Цикл
ОтборНачисления.Вставить("ИдентификаторСтрокиПозиции", СтрокаФОТНачисления.ИдентификаторСтрокиПозиции);
ОтборНачисления.Вставить("Начисление", СтрокаФОТНачисления.Начисление);
СтрокиНачисления = Объект.Начисления.НайтиСтроки(ОтборНачисления);
Для каждого СтрокаНачисления Из СтрокиНачисления Цикл
ЗаполнитьЗначенияСвойств(СтрокаНачисления,
СтрокаФОТНачисления,
"Размер,РазмерМин,РазмерМакс");
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Функция ДополненныеДанныеДокумента(Объект, МенеджерВременныхТаблиц = Неопределено, СписокПозиций = Неопределено) Экспорт
СтруктураРезультатов = Новый Структура;
Запрос = Новый Запрос;
Если МенеджерВременныхТаблиц = Неопределено Тогда
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
СоздатьВТПозицийШтатногоРасписания(Объект, Запрос.МенеджерВременныхТаблиц, СписокПозиций);
Иначе
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
КонецЕсли;
Запрос.УстановитьПараметр("ИндексируемыеПоказатели", Объект.ИндексируемыеПоказатели.Выгрузить( ,"Показатель").ВыгрузитьКолонку("Показатель"));
Запрос.УстановитьПараметр("Позиции", Объект.Позиции.Выгрузить());
Запрос.УстановитьПараметр("Начисления", Объект.Начисления.Выгрузить());
Запрос.УстановитьПараметр("Показатели", Объект.Показатели.Выгрузить());
Запрос.УстановитьПараметр("ДатаИндексации", Объект.МесяцИндексации);
Запрос.Текст =
"ВЫБРАТЬ
| Позиции.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
| Позиции.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| Позиции.ОкладТариф КАК ОкладТариф,
| Позиции.ОкладТарифМин КАК ОкладТарифМин,
| Позиции.ОкладТарифМакс КАК ОкладТарифМакс,
| Позиции.ФОТ КАК ФОТ,
| Позиции.ФОТМин КАК ФОТМин,
| Позиции.ФОТМакс КАК ФОТМакс,
| Позиции.НадбавкаЗаВредностьРазмер КАК НадбавкаЗаВредностьРазмер,
| Позиции.НадбавкаЗаВредностьРазмерМин КАК НадбавкаЗаВредностьРазмерМин,
| Позиции.НадбавкаЗаВредностьРазмерМакс КАК НадбавкаЗаВредностьРазмерМакс,
| Позиции.РайонныйКоэффициентРазмер КАК РайонныйКоэффициентРазмер,
| Позиции.РайонныйКоэффициентРазмерМин КАК РайонныйКоэффициентРазмерМин,
| Позиции.РайонныйКоэффициентРазмерМакс КАК РайонныйКоэффициентРазмерМакс,
| Позиции.СевернаяНадбавкаРазмер КАК СевернаяНадбавкаРазмер,
| Позиции.СевернаяНадбавкаРазмерМин КАК СевернаяНадбавкаРазмерМин,
| Позиции.СевернаяНадбавкаРазмерМакс КАК СевернаяНадбавкаРазмерМакс
|ПОМЕСТИТЬ ВТПозицииИзДокумента
|ИЗ
| &Позиции КАК Позиции
|;
|
|
|ВЫБРАТЬ
| Начисления.Начисление КАК Начисление,
| Начисления.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| Начисления.ИдентификаторСтрокиВидаРасчета КАК ИдентификаторСтрокиВидаРасчета,
| Начисления.Размер КАК Размер,
| Начисления.РазмерМин КАК РазмерМин,
| Начисления.РазмерМакс КАК РазмерМакс
|ПОМЕСТИТЬ ВТПараметрНачисления
|ИЗ
| &Начисления КАК Начисления
|;
|
|
|ВЫБРАТЬ
| Показатели.Показатель КАК Показатель,
| Показатели.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| Показатели.Значение КАК Значение,
| Показатели.ЗначениеМин КАК ЗначениеМин,
| Показатели.ЗначениеМакс КАК ЗначениеМакс
|ПОМЕСТИТЬ ВТПараметрПоказатели
|ИЗ
| &Показатели КАК Показатели
|;
|
|
|ВЫБРАТЬ
| ПозицииИзДокумента.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
| Начисления.Начисление КАК Начисление,
| Начисления.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| Начисления.ИдентификаторСтрокиВидаРасчета КАК ИдентификаторСтрокиВидаРасчета,
| Начисления.Размер КАК Размер,
| Начисления.РазмерМин КАК РазмерМин,
| Начисления.РазмерМакс КАК РазмерМакс
|ПОМЕСТИТЬ ВТНачисления
|ИЗ
| ВТПозицииИзДокумента КАК ПозицииИзДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПараметрНачисления КАК Начисления
| ПО ПозицииИзДокумента.ИдентификаторСтрокиПозиции = Начисления.ИдентификаторСтрокиПозиции
|;
|
|
|ВЫБРАТЬ
| ПозицииИзДокумента.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
| Показатели.Показатель КАК Показатель,
| Показатели.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| Показатели.Значение КАК Значение,
| Показатели.ЗначениеМин КАК ЗначениеМин,
| Показатели.ЗначениеМакс КАК ЗначениеМакс
|ПОМЕСТИТЬ ВТПоказатели
|ИЗ
| ВТПозицииИзДокумента КАК ПозицииИзДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПараметрПоказатели КАК Показатели
| ПО ПозицииИзДокумента.ИдентификаторСтрокиПозиции = Показатели.ИдентификаторСтрокиПозиции
|;
|
|
|ВЫБРАТЬ
| ПозицииШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
| ПозицииШтатногоРасписания.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| Начисления.ИдентификаторСтрокиВидаРасчета КАК ИдентификаторСтрокиВидаРасчета,
| ЕСТЬNULL(Начисления.Начисление, НачисленияПозицийШтатногоРасписания.Начисление) КАК Начисление,
| ЕСТЬNULL(Начисления.Размер, НачисленияПозицийШтатногоРасписания.Размер) КАК Размер,
| ЕСТЬNULL(Начисления.РазмерМин, НачисленияПозицийШтатногоРасписания.РазмерМин) КАК РазмерМин,
| ЕСТЬNULL(Начисления.РазмерМакс, НачисленияПозицийШтатногоРасписания.РазмерМакс) КАК РазмерМакс,
| НачисленияПозицийШтатногоРасписания.Показатель КАК Показатель,
| НачисленияПозицийШтатногоРасписания.Значение КАК Значение,
| НачисленияПозицийШтатногоРасписания.ЗначениеМин КАК ЗначениеМин,
| НачисленияПозицийШтатногоРасписания.ЗначениеМакс КАК ЗначениеМакс
|ПОМЕСТИТЬ ВТОбновленныеНачисления
|ИЗ
| ВТПозицииИзДокумента КАК ПозицииШтатногоРасписания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПозицииШтатногоРасписания КАК ОтборПозицийШтатногоРасписания
| ПО ПозицииШтатногоРасписания.ПозицияШтатногоРасписания = ОтборПозицийШтатногоРасписания.ПозицияШтатногоРасписания
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисленияПозицийШтатногоРасписания КАК НачисленияПозицийШтатногоРасписания
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисления КАК Начисления
| ПО НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания = Начисления.ПозицияШтатногоРасписания
| И НачисленияПозицийШтатногоРасписания.Начисление = Начисления.Начисление
| ПО ПозицииШтатногоРасписания.ПозицияШтатногоРасписания = НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания
|;
|
|
|ВЫБРАТЬ
| ОбновленныеНачисления.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания,
| ОбновленныеНачисления.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| ОбновленныеНачисления.ИдентификаторСтрокиВидаРасчета КАК ИдентификаторСтрокиВидаРасчета,
| ОбновленныеНачисления.Начисление КАК Начисление,
| ОбновленныеНачисления.Размер КАК Размер,
| ОбновленныеНачисления.РазмерМин КАК РазмерМин,
| ОбновленныеНачисления.РазмерМакс КАК РазмерМакс,
| ОбновленныеНачисления.Показатель КАК Показатель,
| ЕСТЬNULL(Показатели.Значение, ОбновленныеНачисления.Значение) КАК Значение,
| ЕСТЬNULL(Показатели.ЗначениеМин, ОбновленныеНачисления.ЗначениеМин) КАК ЗначениеМин,
| ЕСТЬNULL(Показатели.ЗначениеМакс, ОбновленныеНачисления.ЗначениеМакс) КАК ЗначениеМакс
|ПОМЕСТИТЬ ВТНачисленияПоказателиИзДокумента
|ИЗ
| ВТОбновленныеНачисления КАК ОбновленныеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПоказатели КАК Показатели
| ПО ОбновленныеНачисления.Показатель = Показатели.Показатель
| И ОбновленныеНачисления.ПозицияШтатногоРасписания = Показатели.ПозицияШтатногоРасписания";
Запрос.Выполнить();
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаИндексации КАК Дата,
| ПозицииДокумента.ПозицияШтатногоРасписания,
| ПозицииДокумента.ИдентификаторСтрокиПозиции,
| ПозицииДокумента.ОкладТариф КАК ОкладТариф,
| ПозицииДокумента.ОкладТарифМин КАК ОкладТарифМин,
| ПозицииДокумента.ОкладТарифМакс КАК ОкладТарифМакс,
| ПозицииДокумента.ФОТ КАК ФОТ,
| ПозицииДокумента.ФОТМин КАК ФОТМин,
| ПозицииДокумента.ФОТМакс КАК ФОТМакс,
| ПозицииДокумента.НадбавкаЗаВредностьРазмер КАК НадбавкаЗаВредностьРазмер,
| ПозицииДокумента.НадбавкаЗаВредностьРазмерМин КАК НадбавкаЗаВредностьРазмерМин,
| ПозицииДокумента.НадбавкаЗаВредностьРазмерМакс КАК НадбавкаЗаВредностьРазмерМакс,
| ПозицииДокумента.РайонныйКоэффициентРазмер КАК РайонныйКоэффициентРазмер,
| ПозицииДокумента.РайонныйКоэффициентРазмерМин КАК РайонныйКоэффициентРазмерМин,
| ПозицииДокумента.РайонныйКоэффициентРазмерМакс КАК РайонныйКоэффициентРазмерМакс,
| ПозицииДокумента.СевернаяНадбавкаРазмер КАК СевернаяНадбавкаРазмер,
| ПозицииДокумента.СевернаяНадбавкаРазмерМин КАК СевернаяНадбавкаРазмерМин,
| ПозицииДокумента.СевернаяНадбавкаРазмерМакс КАК СевернаяНадбавкаРазмерМакс,
| ЗНАЧЕНИЕ(Перечисление.ДействияСПозициямиШтатногоРасписания.ПустаяСсылка) КАК Действие,
| ИСТИНА КАК Используется,
| ПозицииШтатногоРасписания.*
|ИЗ
| ВТПозицииИзДокумента КАК ПозицииДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПозицииШтатногоРасписания КАК ПозицииШтатногоРасписания
| ПО (ПозицииШтатногоРасписания.ПозицияШтатногоРасписания = ПозицииДокумента.ПозицияШтатногоРасписания)";
СтруктураРезультатов.Вставить("РезультатЗапросаПозиций", Запрос.Выполнить());
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаИндексации КАК Дата,
| НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания,
| НачисленияПозицийШтатногоРасписания.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| НачисленияПозицийШтатногоРасписания.ИдентификаторСтрокиВидаРасчета КАК ИдентификаторСтрокиВидаРасчета,
| НачисленияПозицийШтатногоРасписания.Начисление КАК Начисление,
| МАКСИМУМ(НачисленияПозицийШтатногоРасписания.Размер) КАК Размер,
| МИНИМУМ(НачисленияПозицийШтатногоРасписания.РазмерМин) КАК РазмерМин,
| МАКСИМУМ(НачисленияПозицийШтатногоРасписания.РазмерМакс) КАК РазмерМакс,
| ЗНАЧЕНИЕ(Перечисление.ДействияСНачислениямиИУдержаниями.ПустаяСсылка) КАК Действие
|ИЗ
| ВТНачисленияПоказателиИзДокумента КАК НачисленияПозицийШтатногоРасписания
|ГДЕ
| НачисленияПозицийШтатногоРасписания.Начисление <> ЗНАЧЕНИЕ(ПланВидовРасчета.Начисления.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| НачисленияПозицийШтатногоРасписания.ИдентификаторСтрокиВидаРасчета,
| НачисленияПозицийШтатногоРасписания.Начисление,
| НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания,
| НачисленияПозицийШтатногоРасписания.ИдентификаторСтрокиПозиции";
СтруктураРезультатов.Вставить("РезультатЗапросаНачислений", Запрос.Выполнить());
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаИндексации КАК Дата,
| НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания,
| НачисленияПозицийШтатногоРасписания.ИдентификаторСтрокиПозиции КАК ИдентификаторСтрокиПозиции,
| НачисленияПозицийШтатногоРасписания.ИдентификаторСтрокиВидаРасчета КАК ИдентификаторСтрокиВидаРасчета,
| НачисленияПозицийШтатногоРасписания.Показатель КАК Показатель,
| НачисленияПозицийШтатногоРасписания.Значение КАК Значение,
| НачисленияПозицийШтатногоРасписания.ЗначениеМин КАК ЗначениеМин,
| НачисленияПозицийШтатногоРасписания.ЗначениеМакс КАК ЗначениеМакс,
| ПоказателиРасчетаЗарплаты.Точность
|ИЗ
| ВТНачисленияПоказателиИзДокумента КАК НачисленияПозицийШтатногоРасписания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПоказателиРасчетаЗарплаты КАК ПоказателиРасчетаЗарплаты
| ПО НачисленияПозицийШтатногоРасписания.Показатель = ПоказателиРасчетаЗарплаты.Ссылка";
СтруктураРезультатов.Вставить("РезультатЗапросаПоказателей", Запрос.Выполнить());
Возврат СтруктураРезультатов;
КонецФункции
Функция ТекущиеДанныеПозиций(Объект, МенеджерВременныхТаблиц = Неопределено, СписокПозиций = Неопределено) Экспорт
Запрос = Новый Запрос;
Если МенеджерВременныхТаблиц = Неопределено Тогда
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Иначе
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
КонецЕсли;
СоздатьВТПозицийШтатногоРасписания(Объект, Запрос.МенеджерВременныхТаблиц, СписокПозиций, Ложь);
ИспользоватьТарифныеСеткиПриРасчетеЗарплаты = ПолучитьФункциональнуюОпцию("ИспользоватьТарифныеСеткиПриРасчетеЗарплаты");
Запрос.УстановитьПараметр("ИспользоватьТарифныеСеткиПриРасчетеЗарплаты", ИспользоватьТарифныеСеткиПриРасчетеЗарплаты);
Запрос.Текст =
"ВЫБРАТЬ
| ПозицииШтатногоРасписания.ПозицияШтатногоРасписания
|ПОМЕСТИТЬ ВТПозицииДокумента
|ИЗ
| ВТПозицииШтатногоРасписания КАК ПозицииШтатногоРасписания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНачисленияПозицийШтатногоРасписания КАК НачисленияПозицийШтатногоРасписания
| ПО ПозицииШтатногоРасписания.ПозицияШтатногоРасписания = НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания
|ГДЕ
| НачисленияПозицийШтатногоРасписания.Показатель В(&Показатели)
| И (НЕ &ИспользоватьТарифныеСеткиПриРасчетеЗарплаты
| ИЛИ ПозицииШтатногоРасписания.ТарифнаяСетка = ЗНАЧЕНИЕ(Справочник.ТарифныеСетки.ПустаяСсылка))
|;
|
|
|ВЫБРАТЬ
| ПозицииШтатногоРасписания.ПозицияШтатногоРасписания,
| ПозицииШтатногоРасписания.ОкладТариф КАК ОкладТариф,
| ПозицииШтатногоРасписания.ОкладТарифМин КАК ОкладТарифМин,
| ПозицииШтатногоРасписания.ОкладТарифМакс КАК ОкладТарифМакс,
| ПозицииШтатногоРасписания.ФОТ КАК ФОТ,
| ПозицииШтатногоРасписания.ФОТМин КАК ФОТМин,
| ПозицииШтатногоРасписания.ФОТМакс КАК ФОТМакс,
| ПозицииШтатногоРасписания.НадбавкаЗаВредностьРазмер КАК НадбавкаЗаВредностьРазмер,
| ПозицииШтатногоРасписания.НадбавкаЗаВредностьРазмерМин КАК НадбавкаЗаВредностьРазмерМин,
| ПозицииШтатногоРасписания.НадбавкаЗаВредностьРазмерМакс КАК НадбавкаЗаВредностьРазмерМакс,
| ПозицииШтатногоРасписания.РайонныйКоэффициентРазмер КАК РайонныйКоэффициентРазмер,
| ПозицииШтатногоРасписания.РайонныйКоэффициентРазмерМин КАК РайонныйКоэффициентРазмерМин,
| ПозицииШтатногоРасписания.РайонныйКоэффициентРазмерМакс КАК РайонныйКоэффициентРазмерМакс,
| ПозицииШтатногоРасписания.СевернаяНадбавкаРазмер КАК СевернаяНадбавкаРазмер,
| ПозицииШтатногоРасписания.СевернаяНадбавкаРазмерМин КАК СевернаяНадбавкаРазмерМин,
| ПозицииШтатногоРасписания.СевернаяНадбавкаРазмерМакс КАК СевернаяНадбавкаРазмерМакс
|ИЗ
| ВТПозицииШтатногоРасписания КАК ПозицииШтатногоРасписания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПозицииДокумента КАК ВТПозицииДокумента
| ПО ПозицииШтатногоРасписания.ПозицияШтатногоРасписания = ВТПозицииДокумента.ПозицияШтатногоРасписания
|;
|
|
|ВЫБРАТЬ
| ПозицииШтатногоРасписания.ПозицияШтатногоРасписания,
| НачисленияПозицийШтатногоРасписания.Начисление КАК Начисление,
| МАКСИМУМ(НачисленияПозицийШтатногоРасписания.Размер) КАК Размер,
| МИНИМУМ(НачисленияПозицийШтатногоРасписания.РазмерМин) КАК РазмерМин,
| МАКСИМУМ(НачисленияПозицийШтатногоРасписания.РазмерМакс) КАК РазмерМакс,
| ВЫРАЗИТЬ(НачисленияПозицийШтатногоРасписания.Начисление КАК ПланВидовРасчета.Начисления).РеквизитДопУпорядочивания КАК Порядок
|ИЗ
| ВТПозицииДокумента КАК ПозицииШтатногоРасписания
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисленияПозицийШтатногоРасписания КАК НачисленияПозицийШтатногоРасписания
| ПО ПозицииШтатногоРасписания.ПозицияШтатногоРасписания = НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания
|ГДЕ
| НачисленияПозицийШтатногоРасписания.Начисление <> ЗНАЧЕНИЕ(ПланВидовРасчета.Начисления.ПустаяСсылка)
|
|СГРУППИРОВАТЬ ПО
| ПозицииШтатногоРасписания.ПозицияШтатногоРасписания,
| НачисленияПозицийШтатногоРасписания.Начисление
|
|УПОРЯДОЧИТЬ ПО
| Порядок
|;
|
|
|ВЫБРАТЬ
| ПозицииШтатногоРасписания.ПозицияШтатногоРасписания,
| НачисленияПозицийШтатногоРасписания.Показатель КАК Показатель,
| МАКСИМУМ(НачисленияПозицийШтатногоРасписания.Значение) КАК Значение,
| МИНИМУМ(НачисленияПозицийШтатногоРасписания.ЗначениеМин) КАК ЗначениеМин,
| МАКСИМУМ(НачисленияПозицийШтатногоРасписания.ЗначениеМакс) КАК ЗначениеМакс,
| ПоказателиРасчетаЗарплаты.Точность
|ИЗ
| ВТПозицииДокумента КАК ПозицииШтатногоРасписания
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисленияПозицийШтатногоРасписания КАК НачисленияПозицийШтатногоРасписания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПоказателиРасчетаЗарплаты КАК ПоказателиРасчетаЗарплаты
| ПО НачисленияПозицийШтатногоРасписания.Показатель = ПоказателиРасчетаЗарплаты.Ссылка
| ПО ПозицииШтатногоРасписания.ПозицияШтатногоРасписания = НачисленияПозицийШтатногоРасписания.ПозицияШтатногоРасписания
|ГДЕ
| НачисленияПозицийШтатногоРасписания.Начисление <> ЗНАЧЕНИЕ(ПланВидовРасчета.Начисления.ПустаяСсылка)
| И НачисленияПозицийШтатногоРасписания.Показатель В(&Показатели)
|
|СГРУППИРОВАТЬ ПО
| ПозицииШтатногоРасписания.ПозицияШтатногоРасписания,
| НачисленияПозицийШтатногоРасписания.Показатель,
| ПоказателиРасчетаЗарплаты.Точность";
Запрос.УстановитьПараметр("Показатели", Объект.ИндексируемыеПоказатели.Выгрузить( ,"Показатель").ВыгрузитьКолонку("Показатель"));
Результат = Запрос.ВыполнитьПакет();
КоличествоРезультатов = Результат.Количество();
СтруктураРезультатов = Новый Структура;
СтруктураРезультатов.Вставить("РезультатЗапросаПозиций", Результат[КоличествоРезультатов - 3]);
СтруктураРезультатов.Вставить("РезультатЗапросаНачислений", Результат[КоличествоРезультатов - 2]);
СтруктураРезультатов.Вставить("РезультатЗапросаПоказателей", Результат[КоличествоРезультатов - 1]);
Возврат СтруктураРезультатов;
КонецФункции
Функция ФОТПозицийНачислений(Объект, МенеджерВременныхТаблиц = Неопределено, СписокПозиций = Неопределено)
ДополненныеДанныеДокумента = ДополненныеДанныеДокумента(Объект, МенеджерВременныхТаблиц, СписокПозиций);
ТЗПозиции = ДополненныеДанныеДокумента["РезультатЗапросаПозиций"].Выгрузить();
ТЗНачисления = ДополненныеДанныеДокумента["РезультатЗапросаНачислений"].Выгрузить();
ТЗПоказатели = ДополненныеДанныеДокумента["РезультатЗапросаПоказателей"].Выгрузить();
ТЗПозиции.Колонки["ПозицияШтатногоРасписания"].Имя = "Позиция";
ТЗНачисления.Колонки["ПозицияШтатногоРасписания"].Имя = "Позиция";
ТЗПоказатели.Колонки["ПозицияШтатногоРасписания"].Имя = "Позиция";
РассчитатьФОТ(Объект, ТЗПозиции, ТЗНачисления, ТЗПоказатели);
ТЗПозиции.Колонки["Позиция"].Имя = "ПозицияШтатногоРасписания";
ТЗНачисления.Колонки["Позиция"].Имя = "ПозицияШтатногоРасписания";
ТЗПоказатели.Колонки["Позиция"].Имя = "ПозицияШтатногоРасписания";
ФОТПозицийНачислений = Новый Структура;
ФОТПозицийНачислений.Вставить("ФОТПозиций", ТЗПозиции);
ФОТПозицийНачислений.Вставить("ФОТНачислений", ТЗНачисления);
Возврат ФОТПозицийНачислений
КонецФункции
Процедура РассчитатьФОТ(Объект, КоллекцияПозиций, КоллекцияНачислений, КоллекцияПоказателей)
ОписаниеПозиций = Новый Структура;
ОписаниеПозиций.Вставить("Организация", Объект.Организация);
ОписаниеПозиций.Вставить("ДатаВступленияВСилу", Объект.МесяцИндексации);
ОписаниеПозиций.Вставить("Позиции", КоллекцияПозиций);
ОписаниеПозиций.Вставить("Начисления", КоллекцияНачислений);
ОписаниеПозиций.Вставить("Показатели", КоллекцияПоказателей);
УправлениеШтатнымРасписанием.РассчитатьФОТНесколькихПозиций(ОписаниеПозиций);
КонецПроцедуры
Процедура СоздатьВТПозицийШтатногоРасписания(Объект, МенеджерВременныхТаблиц, СписокПозиций = Неопределено, ПолноеОписание = Ложь) Экспорт
ПараметрыПостроения = УправлениеШтатнымРасписанием.ПараметрыПостроенияВТШтатноеРасписание(
Объект.МесяцИндексации, Объект.Организация, Объект.Подразделение, СписокПозиций);
ЭтоИндексацияГосслужбы = Ложь;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
МодульГосударственнаяСлужба.УстановитьОтборПоДолжностямГосслужбы(ПараметрыПостроения.Отборы, Объект.ВидИндексацииГосударственныхСлужащих, Объект.ИндексацияВоеннослужащих);
ЭтоИндексацияГосслужбы = МодульГосударственнаяСлужба.ЭтоИндексацияГосслужбы(Объект.ВидИндексацииГосударственныхСлужащих);
КонецЕсли;
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
ПараметрыПостроения.Отборы, "Регистратор", "<>", Объект.Ссылка);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания КАК ПозицияШтатногоРасписания
|ИЗ
| РегистрСведений.ИсторияИспользованияШтатногоРасписания КАК ИсторияИспользованияШтатногоРасписания
|ГДЕ
| ИсторияИспользованияШтатногоРасписания.Регистратор <> &ДокументИндексации
| И ИсторияИспользованияШтатногоРасписания.Дата = &ПериодИндексации
| И ИсторияИспользованияШтатногоРасписания.Регистратор ССЫЛКА Документ.ИндексацияШтатногоРасписания
| И ИсторияИспользованияШтатногоРасписания.ПозицияШтатногоРасписания.Владелец = &Организация";
Запрос.УстановитьПараметр("ДокументИндексации", Объект.Ссылка);
Запрос.УстановитьПараметр("ПериодИндексации", Объект.МесяцИндексации);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
ПроиндексированныеПозиции = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ПозицияШтатногоРасписания");
Если ПроиндексированныеПозиции.Количество()>0 Тогда
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
ПараметрыПостроения.Отборы, "ПозицияШтатногоРасписания", "НЕ В", ПроиндексированныеПозиции);
КонецЕсли;
ИмяКомандыЗаполнения = Объект.ВидДолжностейЗаполненияПозиций;
Если Не ЭтоИндексацияГосслужбы И Не (ИмяКомандыЗаполнения="ЗаполнитьВсеПозиции" Или ИмяКомандыЗаполнения="Заполнить") Тогда
ФильтроватьПоОстальнымДолжностям = ИмяКомандыЗаполнения="ЗаполнитьОстальныеПозиции";
Если ФильтроватьПоОстальнымДолжностям Тогда
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
МодульГосударственнаяСлужба = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужба");
МодульГосударственнаяСлужба.ДополнитьФильтрПоПоОстальнымДолжностямЗаполненияПозиций(ПараметрыПостроения.Отборы);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ОбразовательныеУчреждения") Тогда
МодульОбразовательныеУчреждения = ОбщегоНазначения.ОбщийМодуль("ОбразовательныеУчреждения");
Если ФильтроватьПоОстальнымДолжностям Тогда
МодульОбразовательныеУчреждения.ДополнитьФильтрПоПоОстальнымДолжностямЗаполненияПозиций(ПараметрыПостроения.Отборы);
Иначе
МодульОбразовательныеУчреждения.ДополнитьФильтрПоВидуДолжностейЗаполненияПозиций(ИмяКомандыЗаполнения, ПараметрыПостроения.Отборы);
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.Медицина") Тогда
МодульМедицина = ОбщегоНазначения.ОбщийМодуль("Медицина");
Если ФильтроватьПоОстальнымДолжностям Тогда
МодульМедицина.ДополнитьФильтрПоПоОстальнымДолжностямЗаполненияПозиций(ПараметрыПостроения.Отборы);
Иначе
МодульМедицина.ДополнитьФильтрПоВидуДолжностейЗаполненияПозиций(ИмяКомандыЗаполнения, ПараметрыПостроения.Отборы);
КонецЕсли;
КонецЕсли;
КонецЕсли;
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
ПараметрыПостроения.Отборы, "КоличествоСтавок", "<>", 0);
УправлениеШтатнымРасписанием.СоздатьВТШтатноеРасписание(МенеджерВременныхТаблиц, Истина, ПараметрыПостроения, , "ВТПозицииШтатногоРасписания");
ПараметрыПостроения = УправлениеШтатнымРасписанием.ПараметрыПостроенияВТШтатноеРасписаниеПоТаблицеФильтра("ВТПозицииШтатногоРасписания");
ПараметрыПостроения.ДополнитьОписаниемНачислений = Истина;
ПараметрыПостроения.ПолноеОписаниеНачислений = ПолноеОписание;
УправлениеШтатнымРасписанием.СоздатьВТНачисленияШтатногоРасписания(МенеджерВременныхТаблиц, Истина, ПараметрыПостроения, "ВТНачисленияПозицийШтатногоРасписания");
КонецПроцедуры
#КонецОбласти
#КонецЕсли