Помогите вывести начисление ПроцентНадбавкиЗаВредность.
Оклад получается отдельно, но он есть в общем модуле
И вот в общем модуле
Простите если что-то не так или не то. Не ругайтесь только тк новичок.
Оклад получается отдельно, но он есть в общем модуле
Функция ПечатнаяФормаТ5(Макет, МассивОбъектов, ОбъектыПечати)
ДокументРезультат = Новый ТабличныйДокумент;
НомерСтрокиНачало = ДокументРезультат.ВысотаТаблицы + 1;
ДокументРезультат.КлючПараметровПечати = "ПараметрыПечати_ПриказОПереводе";
//
// тАЬЛИЦА НАЧИСЛЕНИЙ - ИНИЦИАЛИЗАЦИЯ
ТаблицаНачислений = Новый ТаблицаЗначений;
ТаблицаНачислений.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ТаблицаНачислений.Колонки.Добавить("Начисление", Новый ОписаниеТипов("Строка"));
ТаблицаНачислений.Колонки.Добавить("Размер", , Новый ОписаниеТипов("Строка"));
// Ура ! получилось вывести в ТЗ плановые начислений в нормальном виде!!! начисления в но
МассивДанныхЗаполнения = ПолучитьДанныеДляПечатиКадровогоПриказаТ5(МассивОбъектов);
ВывестиДанныеКадровогоПриказаВТабличныйДокумент(Макет, ДокументРезультат, МассивДанныхЗаполнения, ОбъектыПечати);
Возврат ДокументРезультат;
КонецФункции
ПоказатьФункция ПолучитьДанныеДляПечатиКадровогоПриказаТ5(МассивОбъектов)
НастройкиПечатныхФорм = ЗарплатаКадрыПовтИсп.НастройкиПечатныхФорм();
Выборка = СформироватьЗапросДляТ5(МассивОбъектов).Выбрать();
МассивПараметров = Новый Массив;
Пока Выборка.Следующий() Цикл
Параметры = ПараметрыПриказаТ5();
КадровыйУчет.ЗаполнитьПараметрыКадровогоПриказа(Параметры, Выборка);
РезультатСклонения = "";
Если ФизическиеЛицаЗарплатаКадры.Просклонять(Параметры.Работник, 4, РезультатСклонения, Параметры.Пол) Тогда
Параметры.Работник = РезультатСклонения
КонецЕсли;
Если НастройкиПечатныхФорм.ВыводитьПолнуюИерархиюПодразделений
И ЗначениеЗаполнено(Параметры.НовоеПодразделение) Тогда
Параметры.НовоеПодразделение = Параметры.НовоеПодразделение.ПолноеНаименование();
КонецЕсли;
ЦелаяЧасть = Цел(Выборка.ТарифнаяСтавка);
Параметры.ОкладТарифнаяСтавкаЦелаяЧасть = ЦелаяЧасть;
ДробнаяЧасть = Выборка.ТарифнаяСтавка - ЦелаяЧасть;
Параметры.ОкладТарифнаяСтавкаДробнаяЧасть = ?(ДробнаяЧасть = 0, "00", ДробнаяЧасть*100);
Если ЗначениеЗаполнено(Параметры.НовыйРазрядКатегория) Тогда
Параметры.НовыйРазрядКатегория = ", " + Параметры.НовыйРазрядКатегория;
КонецЕсли;
МассивПараметров.Добавить(Параметры);
КонецЦикла;
Возврат МассивПараметров;
КонецФункции
ПоказатьФункция ПараметрыПриказаТ5()
Параметры = КадровыйУчет.ПараметрыКадровогоПриказа();
Параметры.Вставить("ДатаНачала");
Параметры.Вставить("ДатаОкончания");
Параметры.Вставить("ВидПеревода");
Параметры.Вставить("Подразделение");
Параметры.Вставить("Должность");
Параметры.Вставить("НовоеПодразделение");
Параметры.Вставить("НоваяДолжность");
Параметры.Вставить("НовыйРазрядКатегория");
Параметры.Вставить("ОкладТарифнаяСтавкаЦелаяЧасть");
Параметры.Вставить("ОкладТарифнаяСтавкаДробнаяЧасть");
Параметры.Вставить("ВалютаТарифнойСтавки", "руб.");
Параметры.Вставить("КопейкиТарифнойСтавки", "коп.");
Параметры.Вставить("Надбавка", 0);
Параметры.Вставить("ОснованиеПеревода");
Параметры.Вставить("ПричинаПеревода");
//
Параметры.Вставить("ИсточникФинансирования");
Параметры.Вставить("НовыйИсточникФинансирования");
Параметры.Вставить("КоличествоСтавок");
Параметры.Вставить("НовоеКоличествоСтавок");
//
Возврат Параметры;
КонецФункции
ПоказатьПроцедура ВывестиДанныеКадровогоПриказаВТабличныйДокумент(Макет, ТабличныйДокумент, МассивДанныхЗаполнения, ОбъектыПечати)
Если Макет <> Неопределено Тогда
ПервыйПриказ = Истина;
Для каждого ПараметрыМакета Из МассивДанныхЗаполнения Цикл
Если Не ПервыйПриказ Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПервыйПриказ = Ложь;
КонецЕсли;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
//Макет.Параметры.Заполнить(ПараметрыМакета);
// Тут надо вывести построчно начисления...
Обл = Макет.ПолучитьОбласть("Шапка");
Обл.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(Обл);
Обл = Макет.ПолучитьОбласть("Тело1");
Обл.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(Обл);
// Начисления
Обл = Макет.ПолучитьОбласть("Надбавки");
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
//Если СтрокаТаб.Сотрудник = ПараметрыМакета.Сотрудник Тогда
Обл.Параметры.Начисление = СтрокаТаб.Начисление;
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
//КонецЕсли;
КонецЦикла;
Обл = Макет.ПолучитьОбласть("Тело2");
Обл.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(Обл);
Обл = Макет.ПолучитьОбласть("Подвал");
Обл.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(Обл);
// ....
//ТабличныйДокумент.Вывести(Макет);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ПараметрыМакета.Ссылка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
ПоказатьФункция ОписанияСоставаНачисленийПоВременнойТаблице(МенеджерВременныхТаблиц, ИмяВТСотрудникиПериоды, ИмяПоляПериод, ИмяПоляСотрудник, ИмяПоляДатаОкончания, ИспользоватьКраткиеПредставления, ВыводитьДенежныеПоказателиСВалютой) Экспорт
ОписанияНачисленийПоПериодам = Новый Соответствие;
Если Не Пользователи.РолиДоступны("ДобавлениеИзменениеДанныхДляНачисленияЗарплатыРасширенная,ЧтениеДанныхДляНачисленияЗарплатыРасширенная") Тогда
Возврат ОписанияНачисленийПоПериодам;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ОписаниеФильтра = ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(ИмяВТСотрудникиПериоды, "Сотрудник");
ОписаниеФильтра.СоответствиеИзмеренийРегистраИзмерениямФильтра.Вставить("Период", ИмяПоляПериод);
ОписаниеФильтра.СоответствиеИзмеренийРегистраИзмерениямФильтра.Вставить("Сотрудник", ИмяПоляСотрудник);
ПараметрыПостроения = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез();
ПараметрыПостроенияПоказателей = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез();
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.УправленческаяЗарплата") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("УправленческаяЗарплата");
Модуль.УточнитьПараметрыПостроенияСрезаНачислений(ПараметрыПостроения);
Модуль.УточнитьПараметрыПостроенияСрезаЗначенийПоказателей(ПараметрыПостроенияПоказателей);
КонецЕсли;
ВременныеТаблицыКУничтожению = Новый Массив;
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ПлановыеНачисления",
Запрос.МенеджерВременныхТаблиц,
Истина,
ОписаниеФильтра,
ПараметрыПостроения);
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ПлановыйФОТ",
Запрос.МенеджерВременныхТаблиц,
Истина,
ОписаниеФильтра,
ПараметрыПостроения);
ВременныеТаблицыКУничтожению.Добавить("ВТПлановыеНачисленияСрезПоследних");
ВременныеТаблицыКУничтожению.Добавить("ВТПлановыйФОТСрезПоследних");
Запрос.Текст =
"ВЫБРАТЬ
| ПлановыеНачисления.Период,
| ПлановыеНачисления.Сотрудник,
| ВЫРАЗИТЬ(ПлановыеНачисления.Начисление КАК ПланВидовРасчета.Начисления) КАК Начисление,
| ВЫБОР
| КОГДА ПлановыйФОТ.ВкладВФОТ ЕСТЬ NULL
| ТОГДА ПлановыеНачисления.Размер
| ИНАЧЕ ПлановыйФОТ.ВкладВФОТ
| КОНЕЦ КАК Размер,
| ПлановыеНачисления.Используется,
| ПлановыеНачисления.ПериодВозвратногоСобытия,
| ПлановыеНачисления.ДокументОснование
|ПОМЕСТИТЬ ВТПлановыеНачисления
|ИЗ
| ВТПлановыеНачисленияСрезПоследних КАК ПлановыеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПлановыйФОТСрезПоследних КАК ПлановыйФОТ
| ПО ПлановыеНачисления.Сотрудник = ПлановыйФОТ.Сотрудник
| И ПлановыеНачисления.Начисление = ПлановыйФОТ.Начисление
| И ПлановыеНачисления.ДокументОснование = ПлановыйФОТ.ДокументОснование
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПлановыеНачисления.Период,
| ПлановыеНачисления.Сотрудник,
| ПлановыеНачисления.Начисление,
| ПлановыеНачисления.ДокументОснование,
| МИНИМУМ(ПлановыеНачисления.Начисление.РеквизитДопУпорядочивания) КАК РеквизитДопУпорядочивания
|ПОМЕСТИТЬ ВТОсновныеНачисленияСотрудников
|ИЗ
| ВТПлановыеНачисления КАК ПлановыеНачисления
|ГДЕ
| ПлановыеНачисления.Начисление.ВидВремени В (ЗНАЧЕНИЕ(Перечисление.ВидыРабочегоВремениСотрудников.ОтработанноеВПределахНормы), ЗНАЧЕНИЕ(Перечисление.ВидыРабочегоВремениСотрудников.ЧасовоеОтработанноеВПределахНормы))
|
|СГРУППИРОВАТЬ ПО
| ПлановыеНачисления.Период,
| ПлановыеНачисления.Сотрудник,
| ПлановыеНачисления.Начисление,
| ПлановыеНачисления.ДокументОснование
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Начисления.Начисление,
| МИНИМУМ(НачисленияПоказатели.НомерСтроки) КАК НомерСтроки
|ПОМЕСТИТЬ ВТНачислениеСПоказателемТарифнойСтавки
|ИЗ
| ВТПлановыеНачисления КАК Начисления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
| ПО Начисления.Начисление = НачисленияПоказатели.Ссылка
| И (НачисленияПоказатели.Показатель.ВидТарифнойСтавки В (ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.МесячнаяТарифнаяСтавка), ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ЧасоваяТарифнаяСтавка), ЗНАЧЕНИЕ(Перечисление.ВидыТарифныхСтавок.ДневнаяТарифнаяСтавка)))
|
|СГРУППИРОВАТЬ ПО
| Начисления.Начисление
|
|ИМЕЮЩИЕ
| НЕ МИНИМУМ(НачисленияПоказатели.НомерСтроки) ЕСТЬ NULL
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Начисления.Начисление,
| НачисленияПоказатели.Показатель
|ПОМЕСТИТЬ ВТНачислениеСПоказателем
|ИЗ
| ВТНачислениеСПоказателемТарифнойСтавки КАК Начисления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
| ПО Начисления.Начисление = НачисленияПоказатели.Ссылка
| И Начисления.НомерСтроки = НачисленияПоказатели.НомерСтроки
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Начисления.Начисление,
| НачисленияПоказатели.Показатель
|ИЗ
| ВТПлановыеНачисления КАК Начисления
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
| ПО Начисления.Начисление = НачисленияПоказатели.Ссылка
| И (НачисленияПоказатели.ОсновнойПоказатель)";
Запрос.Выполнить();
ВременныеТаблицыКУничтожению.Добавить("ВТПлановыеНачисления");
ВременныеТаблицыКУничтожению.Добавить("ВТОсновныеНачисленияСотрудников");
ВременныеТаблицыКУничтожению.Добавить("ВТНачислениеСПоказателемТарифнойСтавки");
ВременныеТаблицыКУничтожению.Добавить("ВТНачислениеСПоказателем");
Запрос.Текст =
"ВЫБРАТЬ
| ПлановыеНачисления.Период,
| ДАТАВРЕМЯ(1, 1, 1) КАК ДатаОкончания,
| ПлановыеНачисления.Сотрудник,
| ПлановыеНачисления.Начисление,
| ПлановыеНачисления.Размер,
| ПлановыеНачисления.Начисление.РеквизитДопУпорядочивания КАК РеквизитДопУпорядочивания,
| НачислениеСПоказателем.Показатель,
| ПлановыеНачисления.Используется,
| ПлановыеНачисления.ПериодВозвратногоСобытия,
| ПлановыеНачисления.ДокументОснование
|ПОМЕСТИТЬ ВТПлановыеНачисленияСПоказателем
|ИЗ
| ВТПлановыеНачисления КАК ПлановыеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНачислениеСПоказателем КАК НачислениеСПоказателем
| ПО ПлановыеНачисления.Начисление = НачислениеСПоказателем.Начисление";
Если Не ПустаяСтрока(ИмяПоляДатаОкончания) Тогда
Запрос.Текст = Запрос.Текст + "
| ЛЕВОЕ СОЕДИНЕНИЕ " + ИмяВТСотрудникиПериоды + " КАК СотрудникиПериоды
| ПО ПлановыеНачисления.Период = СотрудникиПериоды." + ИмяПоляПериод + "
| И ПлановыеНачисления.Сотрудник = СотрудникиПериоды." + ИмяПоляСотрудник;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ДАТАВРЕМЯ(1, 1, 1) КАК ДатаОкончания,",
"СотрудникиПериоды." + ИмяПоляДатаОкончания + " КАК ДатаОкончания,");
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
|ГДЕ
| ПлановыеНачисления.Используется
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| НачисленияСПоказателем.Период,
| НачисленияСПоказателем.Показатель,
| НачисленияСПоказателем.Сотрудник,
| НачисленияСПоказателем.ДокументОснование
|ПОМЕСТИТЬ ВТОтборПоказателей
|ИЗ
| ВТПлановыеНачисленияСПоказателем КАК НачисленияСПоказателем";
Запрос.Выполнить();
ВременныеТаблицыКУничтожению.Добавить("ВТПлановыеНачисленияСПоказателем");
ВременныеТаблицыКУничтожению.Добавить("ВТОтборПоказателей");
ОписаниеФильтра = ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТОтборПоказателей", "Сотрудник,Показатель,ДокументОснование");
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников",
Запрос.МенеджерВременныхТаблиц,
Истина,
ОписаниеФильтра,
ПараметрыПостроенияПоказателей);
ВременныеТаблицыКУничтожению.Добавить("ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних");
Запрос.Текст =
"ВЫБРАТЬ
| ПлановыеНачисления.ПериодВозвратногоСобытия КАК Период,
| ПлановыеНачисления.Сотрудник,
| ПлановыеНачисления.Начисление
|ПОМЕСТИТЬ ВТОтборВозвратныхСобытийПлановыеНачисления
|ИЗ
| ВТПлановыеНачисленияСрезПоследних КАК ПлановыеНачисления
|ГДЕ
| ПлановыеНачисления.ПериодВозвратногоСобытия <> ДАТАВРЕМЯ(1, 1, 1)";
Запрос.Выполнить();
ВременныеТаблицыКУничтожению.Добавить("ВТОтборВозвратныхСобытийПлановыеНачисления");
ВременныеТаблицыКУничтожению.Добавить("ВТОтборВозвратныхСобытийЗначенияПоказателей");
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ПлановыеНачисления",
Запрос.МенеджерВременныхТаблиц,
Истина,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(
"ВТОтборВозвратныхСобытийПлановыеНачисления", "Сотрудник,Начисление"),
ПараметрыПостроения,
"ВТПлановыеНачисленияВозвратные");
ВременныеТаблицыКУничтожению.Добавить("ВТПлановыеНачисленияВозвратные");
Запрос.Текст =
"ВЫБРАТЬ
| ПлановыеНачисленияСПоказателем.Период КАК Период,
| ПлановыеНачисленияСПоказателем.Сотрудник КАК Сотрудник,
| ПлановыеНачисленияСПоказателем.Начисление,
| ПлановыеНачисленияСПоказателем.Начисление.Наименование КАК НачислениеПредст,
| ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Начисление КАК ПланВидовРасчета.Начисления).Наименование КАК НачислениеНаименование,
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Начисление КАК ПланВидовРасчета.Начисления).КраткоеНаименование = """"
| ТОГДА ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Начисление КАК ПланВидовРасчета.Начисления).Наименование
| ИНАЧЕ ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Начисление КАК ПланВидовРасчета.Начисления).КраткоеНаименование
| КОНЕЦ КАК НачислениеКраткоеНаименование,
| ПлановыеНачисленияСПоказателем.РеквизитДопУпорядочивания * ВЫБОР
| КОГДА ОсновныеНачисленияСотрудников.РеквизитДопУпорядочивания ЕСТЬ NULL
| ТОГДА 1
| ИНАЧЕ -1
| КОНЕЦ КАК РеквизитДопУпорядочивания,
| ПлановыеНачисленияСПоказателем.Размер,
| ПлановыеНачисленияСПоказателем.Используется КАК Используется,
| ПлановыеНачисленияСПоказателем.Показатель КАК Показатель,
| ПлановыеНачисленияСПоказателем.Показатель.ВидТарифнойСтавки КАК ВидТарифнойСтавки,
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Показатель КАК Справочник.ПоказателиРасчетаЗарплаты).ТипПоказателя = ЗНАЧЕНИЕ(Перечисление.ТипыПоказателейРасчетаЗарплаты.Денежный)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ДенежныйПоказатель,
| ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Показатель КАК Справочник.ПоказателиРасчетаЗарплаты).Наименование КАК ПоказательНаименование,
| ВЫБОР
| КОГДА ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Показатель КАК Справочник.ПоказателиРасчетаЗарплаты).КраткоеНаименование <> """"
| ТОГДА ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Показатель КАК Справочник.ПоказателиРасчетаЗарплаты).КраткоеНаименование
| КОГДА ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Начисление КАК ПланВидовРасчета.Начисления).КраткоеНаименование <> """"
| ТОГДА ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Начисление КАК ПланВидовРасчета.Начисления).КраткоеНаименование
| ИНАЧЕ ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Показатель КАК Справочник.ПоказателиРасчетаЗарплаты).Наименование
| КОНЕЦ КАК ПоказательКраткоеНаименование,
| ВЫРАЗИТЬ(ПлановыеНачисленияСПоказателем.Показатель КАК Справочник.ПоказателиРасчетаЗарплаты).Точность КАК Точность,
| ЕСТЬNULL(ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Значение, 0) КАК Значение,
| ВЫБОР
| КОГДА ОсновныеНачисленияСотрудников.РеквизитДопУпорядочивания ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК ОкладТариф,
| ЕСТЬNULL(ДОБАВИТЬКДАТЕ(ПлановыеНачисленияВозвратные.Период, ДЕНЬ, -1), ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаОкончанияНачисления,
| ПлановыеНачисленияВозвратные.Используется КАК ИспользуетсяПоОкончании
|ИЗ
| ВТПлановыеНачисленияСПоказателем КАК ПлановыеНачисленияСПоказателем
| ЛЕВОЕ СОЕДИНЕНИЕ ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних
| ПО ПлановыеНачисленияСПоказателем.Период = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Период
| И ПлановыеНачисленияСПоказателем.Сотрудник = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Сотрудник
| И ПлановыеНачисленияСПоказателем.Показатель = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.Показатель
| И ПлановыеНачисленияСПоказателем.ДокументОснование = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних.ДокументОснование
| ЛЕВОЕ СОЕДИНЕНИЕ ВТОсновныеНачисленияСотрудников КАК ОсновныеНачисленияСотрудников
| ПО ПлановыеНачисленияСПоказателем.Период = ОсновныеНачисленияСотрудников.Период
| И ПлановыеНачисленияСПоказателем.Сотрудник = ОсновныеНачисленияСотрудников.Сотрудник
| И ПлановыеНачисленияСПоказателем.ДокументОснование = ОсновныеНачисленияСотрудников.ДокументОснование
| И ПлановыеНачисленияСПоказателем.РеквизитДопУпорядочивания = ОсновныеНачисленияСотрудников.РеквизитДопУпорядочивания
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПлановыеНачисленияВозвратные КАК ПлановыеНачисленияВозвратные
| ПО ПлановыеНачисленияСПоказателем.ПериодВозвратногоСобытия = ПлановыеНачисленияВозвратные.Период
| И ПлановыеНачисленияСПоказателем.Сотрудник = ПлановыеНачисленияВозвратные.Сотрудник
| И ПлановыеНачисленияСПоказателем.Начисление = ПлановыеНачисленияВозвратные.Начисление
| И ПлановыеНачисленияСПоказателем.ДокументОснование = ПлановыеНачисленияВозвратные.ДокументОснование
| И (ПлановыеНачисленияВозвратные.ЭтоВозвратноеСобытие)
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПлановыйФОТСрезПоследних КАК ПлановыйФОТВозвратный
| ПО (ПлановыеНачисленияВозвратные.Сотрудник = ПлановыйФОТВозвратный.Сотрудник)
| И (ПлановыеНачисленияВозвратные.Начисление = ПлановыйФОТВозвратный.Начисление)
| И (ПлановыеНачисленияВозвратные.ДокументОснование = ПлановыйФОТВозвратный.ДокументОснование)
|ГДЕ
| (ПлановыеНачисленияСПоказателем.Используется
| ИЛИ ПлановыеНачисленияВозвратные.Используется)
|
|УПОРЯДОЧИТЬ ПО
| Период,
| Сотрудник,
| РеквизитДопУпорядочивания,
| Показатель
|ИТОГИ ПО
| Сотрудник,
| Период";
Если Не ПустаяСтрока(ИмяПоляДатаОкончания) Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПлановыеНачисленияСПоказателем.Период КАК Период,",
"ПлановыеНачисленияСПоказателем.Период КАК Период,
| ПлановыеНачисленияСПоказателем.ДатаОкончания,");
КонецЕсли;
ВыборкаПоСотрудникам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСотрудникам.Следующий() Цикл
ОписанияНачислений = Новый Соответствие;
ВыборкаПоПериодам = ВыборкаПоСотрудникам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоПериодам.Следующий() Цикл
ВыведенныеПоказатели = Новый Соответствие;
ОписаниеОкладаЗаполнялось = Ложь;
ОписаниеСоставаНачислений = КадровыйУчетБазовый.ОписаниеСоставаНачислений();
Выборка = ВыборкаПоПериодам.Выбрать();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.Значение) И ВыведенныеПоказатели.Получить(Выборка.Показатель) = Истина Тогда
Продолжить;
КонецЕсли;
Если Не ОписаниеОкладаЗаполнялось И Выборка.ОкладТариф И Выборка.Используется Тогда
ОписаниеСоставаНачислений.Вставить("ПоказательОкладТариф", Выборка.Показатель);
ОписаниеСоставаНачислений.Вставить("ОкладТариф", Выборка.Значение);
Если ЗначениеЗаполнено(Выборка.Значение) Тогда
ВыведенныеПоказатели.Вставить(Выборка.Показатель, Истина);
КонецЕсли;
Если ИспользоватьКраткиеПредставления Тогда
ПредставлениеТарифнойСтавки = ?(ПустаяСтрока(Выборка.ПоказательКраткоеНаименование), Строка(Выборка.НачислениеКраткоеНаименование), Строка(Выборка.ПоказательКраткоеНаименование))
Иначе
Если Выборка.Значение = 0 Тогда
ПредставлениеТарифнойСтавки = Выборка.НачислениеНаименование;
Иначе
ПредставлениеТарифнойСтавки = ?(ПустаяСтрока(Выборка.ПоказательНаименование), Выборка.НачислениеНаименование, Выборка.ПоказательНаименование)
КонецЕсли;
КонецЕсли;
Если Выборка.Значение > 0 Тогда
ПредставлениеТарифнойСтавки =
ПредставлениеТарифнойСтавки + ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='руб.'");
Если Выборка.ВидТарифнойСтавки = Перечисления.ВидыТарифныхСтавок.ЧасоваяТарифнаяСтавка Тогда
ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='за час'");
ИначеЕсли Выборка.ВидТарифнойСтавки = Перечисления.ВидыТарифныхСтавок.ДневнаяТарифнаяСтавка Тогда
ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='за день'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
ОписаниеСоставаНачислений.Вставить("ОписаниеОклада", ПредставлениеТарифнойСтавки);
ОписаниеОкладаЗаполнялось = Истина;
Иначе
Если Выборка.ОкладТариф
И Не Выборка.Используется Тогда
Продолжить;
КонецЕсли;
Если Выборка.Используется Тогда
ОписаниеНадбавок = ОписаниеСоставаНачислений.ОписаниеНадбавок;
//..
СтрокаТаб = ТаблицаНачислений.Добавить();
СтрокаТаб.Сотрудник = Выборка.Сотрудник;
//..
Если ИспользоватьКраткиеПредставления Тогда
ПредставлениеПоказателя = ?(ПустаяСтрока(Выборка.ПоказательКраткоеНаименование), Выборка.НачислениеКраткоеНаименование, Выборка.ПоказательКраткоеНаименование);
Иначе
Если Выборка.Значение = 0 Тогда
ПредставлениеПоказателя = Выборка.НачислениеНаименование;
Иначе
ПредставлениеПоказателя = ?(ПустаяСтрока(Выборка.ПоказательНаименование), Выборка.НачислениеНаименование, Выборка.ПоказательНаименование);
КонецЕсли;
КонецЕсли;
//..
СтрокаТаб.Начисление = Выборка.НачислениеПредст;
//..
ОписаниеНадбавок = ?(ПустаяСтрока(ОписаниеНадбавок), "", ОписаниеНадбавок + "; ") + ПредставлениеПоказателя;
Если Выборка.Значение > 0 Тогда
ОписаниеНадбавок = ОписаниеНадбавок + ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='руб.'");
КонецЕсли;
//..
СтрокаТаб.Размер = Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
СтрокаТаб.Размер = СтрокаТаб.Размер + " " + НСтр("ru='руб.'");
ИначеЕсли СтрНайти(Выборка.ПоказательНаименование, "роцент")+СтрНайти(Выборка.ПоказательНаименование, "%")>0 Тогда
СтрокаТаб.Размер = СтрокаТаб.Размер + " (%)";
КонецЕсли;
//..
КонецЕсли;
Если Не ПустаяСтрока(ИмяПоляДатаОкончания) Тогда
Если ЗначениеЗаполнено(Выборка.ДатаОкончанияНачисления)
И Выборка.ДатаОкончанияНачисления < Выборка.ДатаОкончания
И Не Выборка.ИспользуетсяПоОкончании Тогда
ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='по'") + " " + Формат(Выборка.ДатаОкончанияНачисления, "ДЛФ=D");
ИначеЕсли ЗначениеЗаполнено(Выборка.ДатаОкончания)
И ЗначениеЗаполнено(Выборка.Значение) Тогда
ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='по'") + " " + Формат(Выборка.ДатаОкончания, "ДЛФ=D");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Значение) Тогда
ВыведенныеПоказатели.Вставить(Выборка.Показатель, Истина);
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Выборка.ДатаОкончанияНачисления) Тогда
ОписаниеНадбавок = ОписаниеСоставаНачислений.ОписаниеНадбавок;
ОписаниеНадбавок =
?(ПустаяСтрока(ОписаниеНадбавок), "", ОписаниеНадбавок + "; ")
+ ?(ПустаяСтрока(Выборка.Показатель), Выборка.Начисление, Выборка.Показатель)
+ ?(Выборка.Значение = 0, "", ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ="))
+ " " + НСтр("ru='с'") + " " + Формат(КонецДня(Выборка.ДатаОкончанияНачисления) + 1, "ДЛФ=D");
КонецЕсли;
ОписаниеСоставаНачислений.Вставить("ОписаниеНадбавок", ОписаниеНадбавок);
КонецЕсли;
КонецЦикла;
ОписанияНачислений.Вставить(ВыборкаПоПериодам.Период, ОписаниеСоставаНачислений);
КонецЦикла;
ОписанияНачисленийПоПериодам.Вставить(ВыборкаПоСотрудникам.Сотрудник, ОписанияНачислений);
КонецЦикла;
ЗарплатаКадры.УничтожитьВТ(Запрос.МенеджерВременныхТаблиц, ВременныеТаблицыКУничтожению, Истина);
Возврат ОписанияНачисленийПоПериодам;
КонецФункции
ПоказатьПроцедура СоздатьВТДанныеДокументовКадровыхПеремещений(МенеджерВременныхТаблиц, МассивОбъектов) Экспорт
ПечатьПоЭлементуСправочника = Ложь;
Если МассивОбъектов.Количество() > 0 Тогда
ПечатьПоЭлементуСправочника = ТипЗнч(МассивОбъектов[0]) = Тип("СправочникСсылка.Сотрудники");
КонецЕсли;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Если ПечатьПоЭлементуСправочника Тогда
Запрос.УстановитьПараметр("МассивСотрудников", МассивОбъектов);
ИзмеренияДаты = Новый ТаблицаЗначений;
ИзмеренияДаты.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата"));
ИзмеренияДаты.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
Для каждого Сотрудник Из МассивОбъектов Цикл
ИзмеренияДаты.Добавить().Сотрудник = Сотрудник;
КонецЦикла;
ПараметрыПостроения = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез();
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(ПараметрыПостроения.Отборы, "ВидСобытия", "=", Перечисления.ВидыКадровыхСобытий.Перемещение);
ЗапросКадровыхПереводов = ЗарплатаКадрыОбщиеНаборыДанных.ЗапросВТИмяРегистраСрез(
"КадроваяИсторияСотрудников",
Истина,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(ИзмеренияДаты),
ПараметрыПостроения,
Истина,
"");
Запрос.Параметры.Вставить("МассивОбъектов", ЗапросКадровыхПереводов.Выполнить().Выгрузить().ВыгрузитьКолонку("Регистратор"));
Иначе
Запрос.Параметры.Вставить("МассивОбъектов", МассивОбъектов);
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КадровыйПеревод.Ссылка,
| КадровыйПеревод.ДатаНачала КАК Дата,
| КадровыйПеревод.Сотрудник КАК Сотрудник,
| КадровыйПеревод.ДатаНачала КАК ДатаНачала,
| КадровыйПеревод.ДатаОкончания КАК ДатаОкончания,
| КадровыйПеревод.Номер КАК НомерДок,
| КадровыйПеревод.Дата КАК ДатаДок,
| КадровыйПеревод.Руководитель,
| КадровыйПеревод.ДолжностьРуководителя,
| КадровыйПеревод.ФизическоеЛицо,
| КадровыйПеревод.ОснованиеПеревода,
| КадровыйПеревод.ПричинаПеревода,
//
| КадровыйПеревод.КоличествоСтавок КАК НовоеКоличествоСтавок,
//
| 0 КАК Надбавка
|ПОМЕСТИТЬ ВТДанныеДокументовКадровыхПеремещений
|ИЗ
| Документ.КадровыйПеревод КАК КадровыйПеревод
|ГДЕ
| КадровыйПеревод.Проведен
| И КадровыйПеревод.Ссылка В(&МассивОбъектов)
|";
Если ПечатьПоЭлементуСправочника Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Документ.ПеремещениеВДругоеПодразделение.Сотрудники КАК ПеремещениеВДругоеПодразделениеСотрудники",
"Документ.ПеремещениеВДругоеПодразделение.Сотрудники КАК ПеремещениеВДругоеПодразделениеСотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Сотрудники КАК Сотрудники
| ПО ПеремещениеВДругоеПодразделениеСотрудники.Сотрудник = Сотрудники.Ссылка
| И Сотрудники.Ссылка В (&МассивСотрудников)");
Запрос.Текст = СтрЗаменить(Запрос.Текст, "И ПеремещениеВДругоеПодразделениеСотрудники.Ссылка В(&МассивОбъектов)",
"И ПеремещениеВДругоеПодразделениеСотрудники.Ссылка В(&МассивОбъектов)
| И НЕ Сотрудники.Ссылка ЕСТЬ NULL");
КонецЕсли;
Запрос.Выполнить();
КонецПроцедуры
ПоказатьФункция СформироватьПоДокументамЗапросДляТ5(МенеджерВременныхТаблиц, МассивОбъектов)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ПечатьПоЭлементуСправочника = Ложь;
Если МассивОбъектов.Количество() > 0 Тогда
ПечатьПоЭлементуСправочника = ТипЗнч(МассивОбъектов[0]) = Тип("СправочникСсылка.Сотрудники");
КонецЕсли;
Если ПечатьПоЭлементуСправочника Тогда
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Сотрудник
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеДокументовКадровыхПеремещений КАК ВТДанныеДокументов
| ПО Сотрудники.Ссылка = ВТДанныеДокументов.Сотрудник
|ГДЕ
| Сотрудники.Ссылка В(&МассивОбъектов)
| И ВТДанныеДокументов.Сотрудник ЕСТЬ NULL ";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='По сотруднику %1 нет оформленных приказов о кадровом переводе'"),
Выборка.Сотрудник);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
Запрос.УстановитьПараметр("НачисленияСотрудников",
КадровыйУчет.ТаблицаНачисленийСотрудниковПоВременнойТаблице(Запрос.МенеджерВременныхТаблиц, "ВТДанныеДокументовКадровыхПеремещений", "ДатаНачала", , "ДатаОкончания"));
// Тут надо получить все начисления по отдельности
// и сохранить в какой-то хэш
// Поля:
// - сотрудник, наим. начисления, размер, тип показателя(деньгами / % / как-то еще.. (стаж))
ОписанияСоставаНачисленийПоВременнойТаблице(Запрос.МенеджерВременныхТаблиц, "ВТДанныеДокументовКадровыхПеремещений", "ДатаНачала", "Сотрудник", "", Истина, Истина);
// Теперь заполнена ТаблицаНачислений
// ----
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Сотрудник,
| ДОБАВИТЬКДАТЕ(ДанныеДокументов.ДатаНачала, ДЕНЬ, -1) КАК Период
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| ВТДанныеДокументовКадровыхПеремещений КАК ДанныеДокументов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВТДанныеДокументов.Сотрудник,
| ВТДанныеДокументов.ДатаНачала
|ИЗ
| ВТДанныеДокументовКадровыхПеремещений КАК ВТДанныеДокументов";
Запрос.Выполнить();
ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц,
"ВТСотрудникиПериоды");
ОписательВременныхТаблиц.ИмяВТКадровыеДанныеСотрудников = "ВТКадровыеДанныеСотрудниковДляТ5";
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(
ОписательВременныхТаблиц,
Истина,
КадровыйУчет.КадровыеДанныеДляПечатиКадровыхПриказов()+",ДолжностьПоШтатномуРасписанию,КоличествоСтавок");
ИменаПолейОтветственныхЛиц = Новый Массив;
ИменаПолейОтветственныхЛиц.Добавить("Руководитель");
ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Ложь, ИменаПолейОтветственныхЛиц, "ВТДанныеДокументовКадровыхПеремещений");
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияСотрудников.Период,
| НачисленияСотрудников.Сотрудник,
| НачисленияСотрудников.ТарифнаяСтавка,
| НачисленияСотрудников.Надбавка
|ПОМЕСТИТЬ ВТНачисления
|ИЗ
| &НачисленияСотрудников КАК НачисленияСотрудников
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДанныеДокументов.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ""постоянно""
| ИНАЧЕ ""временно""
| КОНЕЦ КАК ВидПеревода,
| КадровыеДанныеСотрудниковПредыдущие.Организация.КодПоОКПО КАК КодПоОКПО,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеПолное КАК СТРОКА(1))) = """"
| ТОГДА ВЫБОР
| КОГДА (ВЫРАЗИТЬ(КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеСокращенное КАК СТРОКА(1))) = """"
| ТОГДА КадровыеДанныеСотрудниковПредыдущие.Организация.Наименование
| ИНАЧЕ КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеСокращенное
| КОНЕЦ
| ИНАЧЕ КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеПолное
| КОНЕЦ КАК НазваниеОрганизации,
| ФИООтветственныхЛиц.РасшифровкаПодписи КАК РуководительРасшифровкаПодписи,
| КадровыеДанныеСотрудниковПредыдущие.Подразделение КАК Подразделение,
| КадровыеДанныеСотрудниковПредыдущие.Должность КАК Должность,
| КадровыеДанныеСотрудниковПредыдущие.ТабельныйНомер КАК ТабельныйНомер,
| КадровыеДанныеСотрудниковПредыдущие.ДолжностьПоШтатномуРасписанию.СтатьяФинансирования.Наименование КАК ИсточникФинансирования,
| КадровыеДанныеСотрудниковПредыдущие.КоличествоСтавок КАК КоличествоСтавок,
| ЕСТЬNULL(КадровыеДанныеСотрудниковНовые.ФИОПолные, """") КАК Работник,
| КадровыеДанныеСотрудниковНовые.Подразделение КАК НовоеПодразделение,
| КадровыеДанныеСотрудниковНовые.Должность КАК НоваяДолжность,
| КадровыеДанныеСотрудниковНовые.ДолжностьПоШтатномуРасписанию.СтатьяФинансирования.Наименование КАК НовыйИсточникФинансирования,
| ЕСТЬNULL(Начисления.ТарифнаяСтавка, 0) КАК ТарифнаяСтавка,
| ЕСТЬNULL(Начисления.Надбавка, """") КАК Надбавка,
| &ТекстКадровыеДанныеСотрудников,
| &ДанныеДокументов
|ИЗ
| ВТДанныеДокументовКадровыхПеремещений КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДляТ5 КАК КадровыеДанныеСотрудниковПредыдущие
| ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудниковПредыдущие.Сотрудник
| И ДанныеДокументов.ДатаНачала > КадровыеДанныеСотрудниковПредыдущие.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДляТ5 КАК КадровыеДанныеСотрудниковНовые
| ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудниковНовые.Сотрудник
| И ДанныеДокументов.ДатаНачала = КадровыеДанныеСотрудниковНовые.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственныхЛиц
| ПО ДанныеДокументов.Руководитель = ФИООтветственныхЛиц.ФизическоеЛицо
| И ДанныеДокументов.Ссылка = ФИООтветственныхЛиц.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисления КАК Начисления
| ПО ДанныеДокументов.ДатаНачала = Начисления.Период
| И ДанныеДокументов.Сотрудник = Начисления.Сотрудник";
ТекстКадровыеДанныеСотрудников = "";
Для каждого ИмяКадровыхДанных Из СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КадровыйУчет.КадровыеДанныеДляПечатиКадровыхПриказов(), ",", , Истина) Цикл
Если ВРег(ИмяКадровыхДанных) = ВРег("Организация")
Или ВРег(ИмяКадровыхДанных) = ВРег("Подразделение")
Или ВРег(ИмяКадровыхДанных) = ВРег("Должность")
Или ВРег(ИмяКадровыхДанных) = ВРег("ФИОПолные") Тогда
Продолжить;
ИначеЕсли ВРег(ИмяКадровыхДанных) = ВРег("ТрудовойДоговорНомер")
Или ВРег(ИмяКадровыхДанных) = ВРег("ТрудовойДоговорДата") Тогда
ТекстКадровыеДанныеСотрудников =
?(ПустаяСтрока(ТекстКадровыеДанныеСотрудников), "", ТекстКадровыеДанныеСотрудников + Символы.ПС)
+ "КадровыеДанныеСотрудниковПредыдущие." + ИмяКадровыхДанных + " КАК " + ИмяКадровыхДанных + ",";
Иначе
Если ВРег(ИмяКадровыхДанных) = ВРег("РазрядКатегория") Тогда
ТекстКадровыеДанныеСотрудников =
?(ПустаяСтрока(ТекстКадровыеДанныеСотрудников), "", ТекстКадровыеДанныеСотрудников + Символы.ПС)
+ "КадровыеДанныеСотрудниковПредыдущие." + ИмяКадровыхДанных + " КАК " + ИмяКадровыхДанных + ",";
КонецЕсли;
ТекстКадровыеДанныеСотрудников =
?(ПустаяСтрока(ТекстКадровыеДанныеСотрудников), "", ТекстКадровыеДанныеСотрудников + Символы.ПС)
+ "КадровыеДанныеСотрудниковНовые." + ИмяКадровыхДанных + " КАК Новый" + ИмяКадровыхДанных + ",";
КонецЕсли;
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстКадровыеДанныеСотрудников,", ТекстКадровыеДанныеСотрудников);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДанныеДокументов", "ДанныеДокументов.*");
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса;
КонецФункции
ПоказатьИ вот в общем модуле
Функция СформироватьПоДокументамЗапросДляТ5(МенеджерВременныхТаблиц, МассивОбъектов)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
ПечатьПоЭлементуСправочника = Ложь;
Если МассивОбъектов.Количество() > 0 Тогда
ПечатьПоЭлементуСправочника = ТипЗнч(МассивОбъектов[0]) = Тип("СправочникСсылка.Сотрудники");
КонецЕсли;
Если ПечатьПоЭлементуСправочника Тогда
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Сотрудник
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеДокументовКадровыхПеремещений КАК ВТДанныеДокументов
| ПО Сотрудники.Ссылка = ВТДанныеДокументов.Сотрудник
|ГДЕ
| Сотрудники.Ссылка В(&МассивОбъектов)
| И ВТДанныеДокументов.Сотрудник ЕСТЬ NULL ";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
ТекстИсключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='По сотруднику %1 нет оформленных приказов о кадровом переводе'"),
Выборка.Сотрудник);
ВызватьИсключение ТекстИсключения;
КонецЕсли;
КонецЕсли;
Запрос.УстановитьПараметр("НачисленияСотрудников",
КадровыйУчет.ТаблицаНачисленийСотрудниковПоВременнойТаблице(Запрос.МенеджерВременныхТаблиц, "ВТДанныеДокументовКадровыхПеремещений", "ДатаНачала", , "ДатаОкончания"));
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокументов.Сотрудник,
| ДОБАВИТЬКДАТЕ(ДанныеДокументов.ДатаНачала, ДЕНЬ, -1) КАК Период
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| ВТДанныеДокументовКадровыхПеремещений КАК ДанныеДокументов
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ВТДанныеДокументов.Сотрудник,
| ВТДанныеДокументов.ДатаНачала
|ИЗ
| ВТДанныеДокументовКадровыхПеремещений КАК ВТДанныеДокументов";
Запрос.Выполнить();
ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц,
"ВТСотрудникиПериоды");
ОписательВременныхТаблиц.ИмяВТКадровыеДанныеСотрудников = "ВТКадровыеДанныеСотрудниковДляТ5";
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(
ОписательВременныхТаблиц,
Истина,
КадровыйУчет.КадровыеДанныеДляПечатиКадровыхПриказов());
ИменаПолейОтветственныхЛиц = Новый Массив;
ИменаПолейОтветственныхЛиц.Добавить("Руководитель");
ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Ложь, ИменаПолейОтветственныхЛиц, "ВТДанныеДокументовКадровыхПеремещений");
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияСотрудников.Период,
| НачисленияСотрудников.Сотрудник,
| НачисленияСотрудников.ТарифнаяСтавка,
| НачисленияСотрудников.Надбавка
|ПОМЕСТИТЬ ВТНачисления
|ИЗ
| &НачисленияСотрудников КАК НачисленияСотрудников
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДанныеДокументов.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
| ТОГДА ""постоянно""
| ИНАЧЕ ""временно""
| КОНЕЦ КАК ВидПеревода,
| КадровыеДанныеСотрудниковПредыдущие.Организация.КодПоОКПО КАК КодПоОКПО,
| ВЫБОР
| КОГДА (ВЫРАЗИТЬ(КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеПолное КАК СТРОКА(1))) = """"
| ТОГДА ВЫБОР
| КОГДА (ВЫРАЗИТЬ(КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеСокращенное КАК СТРОКА(1))) = """"
| ТОГДА КадровыеДанныеСотрудниковПредыдущие.Организация.Наименование
| ИНАЧЕ КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеСокращенное
| КОНЕЦ
| ИНАЧЕ КадровыеДанныеСотрудниковПредыдущие.Организация.НаименованиеПолное
| КОНЕЦ КАК НазваниеОрганизации,
| ФИООтветственныхЛиц.РасшифровкаПодписи КАК РуководительРасшифровкаПодписи,
| КадровыеДанныеСотрудниковПредыдущие.Подразделение КАК Подразделение,
| КадровыеДанныеСотрудниковПредыдущие.Должность КАК Должность,
| КадровыеДанныеСотрудниковПредыдущие.ТабельныйНомер КАК ТабельныйНомер,
| ЕСТЬNULL(КадровыеДанныеСотрудниковНовые.ФИОПолные, """") КАК Работник,
| КадровыеДанныеСотрудниковНовые.Подразделение КАК НовоеПодразделение,
| КадровыеДанныеСотрудниковНовые.Должность КАК НоваяДолжность,
| ЕСТЬNULL(Начисления.ТарифнаяСтавка, 0) КАК ТарифнаяСтавка,
| ЕСТЬNULL(Начисления.Надбавка, """") КАК Надбавка,
| &ТекстКадровыеДанныеСотрудников,
| &ДанныеДокументов
|ИЗ
| ВТДанныеДокументовКадровыхПеремещений КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДляТ5 КАК КадровыеДанныеСотрудниковПредыдущие
| ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудниковПредыдущие.Сотрудник
| И ДанныеДокументов.ДатаНачала > КадровыеДанныеСотрудниковПредыдущие.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудниковДляТ5 КАК КадровыеДанныеСотрудниковНовые
| ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудниковНовые.Сотрудник
| И ДанныеДокументов.ДатаНачала = КадровыеДанныеСотрудниковНовые.Период
| ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственныхЛиц
| ПО ДанныеДокументов.Руководитель = ФИООтветственныхЛиц.ФизическоеЛицо
| И ДанныеДокументов.Ссылка = ФИООтветственныхЛиц.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ ВТНачисления КАК Начисления
| ПО ДанныеДокументов.ДатаНачала = Начисления.Период
| И ДанныеДокументов.Сотрудник = Начисления.Сотрудник";
ТекстКадровыеДанныеСотрудников = "";
Для каждого ИмяКадровыхДанных Из СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(КадровыйУчет.КадровыеДанныеДляПечатиКадровыхПриказов(), ",", , Истина) Цикл
Если ВРег(ИмяКадровыхДанных) = ВРег("Организация")
Или ВРег(ИмяКадровыхДанных) = ВРег("Подразделение")
Или ВРег(ИмяКадровыхДанных) = ВРег("Должность")
Или ВРег(ИмяКадровыхДанных) = ВРег("ФИОПолные") Тогда
Продолжить;
ИначеЕсли ВРег(ИмяКадровыхДанных) = ВРег("ТрудовойДоговорНомер")
Или ВРег(ИмяКадровыхДанных) = ВРег("ТрудовойДоговорДата") Тогда
ТекстКадровыеДанныеСотрудников =
?(ПустаяСтрока(ТекстКадровыеДанныеСотрудников), "", ТекстКадровыеДанныеСотрудников + Символы.ПС)
+ "КадровыеДанныеСотрудниковПредыдущие." + ИмяКадровыхДанных + " КАК " + ИмяКадровыхДанных + ",";
Иначе
Если ВРег(ИмяКадровыхДанных) = ВРег("РазрядКатегория") Тогда
ТекстКадровыеДанныеСотрудников =
?(ПустаяСтрока(ТекстКадровыеДанныеСотрудников), "", ТекстКадровыеДанныеСотрудников + Символы.ПС)
+ "КадровыеДанныеСотрудниковПредыдущие." + ИмяКадровыхДанных + " КАК " + ИмяКадровыхДанных + ",";
КонецЕсли;
ТекстКадровыеДанныеСотрудников =
?(ПустаяСтрока(ТекстКадровыеДанныеСотрудников), "", ТекстКадровыеДанныеСотрудников + Символы.ПС)
+ "КадровыеДанныеСотрудниковНовые." + ИмяКадровыхДанных + " КАК Новый" + ИмяКадровыхДанных + ",";
КонецЕсли;
КонецЦикла;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТекстКадровыеДанныеСотрудников,", ТекстКадровыеДанныеСотрудников);
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ДанныеДокументов", "ДанныеДокументов.*");
РезультатЗапроса = Запрос.Выполнить();
Возврат РезультатЗапроса;
КонецФункции
Функция КадровыеДанныеДляПечатиКадровыхПриказов() Экспорт
Возврат "ФИОПолные,Пол,ТабельныйНомер,Организация,Подразделение,Должность,ДатаПриема,ДатаУвольнения";
КонецФункции
Функция ТаблицаНачисленийСотрудниковПоВременнойТаблице(МенеджерВременныхТаблиц, ИмяВТСотрудникиПериоды, ИмяПоляПериод, ИмяПоляСотрудник, ИмяПоляДатаОкончания, ИспользоватьКраткиеПредставления, ВыводитьДенежныеПоказателиСВалютой) Экспорт
НачисленияСотрудников = Новый ТаблицаЗначений;
НачисленияСотрудников.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
НачисленияСотрудников.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата"));
НачисленияСотрудников.Колонки.Добавить("ТарифнаяСтавка", Новый ОписаниеТипов("Число"));
НачисленияСотрудников.Колонки.Добавить("ОписаниеОклада", Новый ОписаниеТипов("Строка"));
НачисленияСотрудников.Колонки.Добавить("Надбавка", Новый ОписаниеТипов("Строка"));
Если ПолучитьФункциональнуюОпцию("ИспользоватьНачислениеЗарплаты") Тогда
ОписанияНачислений = КадровыйУчет.ОписанияСоставаНачисленийПоВременнойТаблице(МенеджерВременныхТаблиц, ИмяВТСотрудникиПериоды, ИмяПоляПериод, ИмяПоляСотрудник, ИмяПоляДатаОкончания, ИспользоватьКраткиеПредставления, ВыводитьДенежныеПоказателиСВалютой);
Для каждого ОписаниеСотрудника Из ОписанияНачислений Цикл
Для каждого ОписаниеПериода Из ОписаниеСотрудника.Значение Цикл
НоваяСтрока = НачисленияСотрудников.Добавить();
НоваяСтрока.Сотрудник = ОписаниеСотрудника.Ключ;
НоваяСтрока.Период = ОписаниеПериода.Ключ;
НоваяСтрока.ТарифнаяСтавка = ОписаниеПериода.Значение.ОкладТариф;
НоваяСтрока.ОписаниеОклада = ОписаниеПериода.Значение.ОписаниеОклада;
НоваяСтрока.Надбавка = ОписаниеПериода.Значение.ОписаниеНадбавок;
КонецЦикла;
КонецЦикла;
КонецЕсли;
Возврат НачисленияСотрудников;
КонецФункции
Функция ЗапросВТПлановыеНачисленияСотрудников(ТолькоРазрешенные, ИмяВТПлановыеНачисленияСотрудников, ИмяВременнойТаблицыОтборовСотрудников, ПоляОтбораСотрудников, ПоляОтбораПериодическихДанных, ФормироватьСПериодичностьДень) Экспорт
Если ТипЗнч(ПоляОтбораСотрудников) = Тип("Строка") Тогда
ПоляОтбораСотрудников = КадровыйУчет.ПоляОтбораСотрудников(ПоляОтбораСотрудников);
КонецЕсли;
Если Не ПравоДоступа("Чтение", Метаданные.РегистрыСведений.ПлановыеНачисления) Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| NULL КАК Период,
| NULL КАК ПериодЗаписи,
| NULL КАК Регистратор,
| NULL КАК Сотрудник,
| NULL КАК Начисление,
| NULL КАК Размер,
| NULL КАК ОсновнойПоказатель,
| NULL КАК ЗначениеОсновногоПоказателя,
| NULL КАК НачислениеТарифнойСтавки
|ПОМЕСТИТЬ ВТПлановыеНачисленияСотрудников
|ГДЕ
| ЛОЖЬ";
Иначе
МассивТекстов = Новый Массив;
Если ПолучитьФункциональнуюОпцию("ИспользоватьКадровыйУчет") Тогда
Запрос = ЗарплатаКадрыОбщиеНаборыДанных.ЗапросВТИмяРегистраСрез(
"ПлановыеНачисления",
Истина,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(
ИмяВременнойТаблицыОтборовСотрудников,
ПоляОтбораСотрудников.Сотрудник),
,
Истина);
МассивТекстов.Добавить(Запрос.Текст);
НачисленияТарифнойСтавки = РасчетЗарплаты.НачисленияТарифнойСтавки();
Запрос.УстановитьПараметр("НачисленияТарифнойСтавки", НачисленияТарифнойСтавки);
ТекстЗапроса =
"ВЫБРАТЬ
| КадровыеДанныеСотрудников.Период КАК Период,
| ПлановыеНачисления.Сотрудник КАК Сотрудник,
| КадровыеДанныеСотрудников.Подразделение КАК Подразделение,
| ПлановыеНачисления.Начисление КАК Начисление,
| ПлановыеНачисления.Размер КАК Результат,
| ВЫБОР
| КОГДА ПлановыеНачисления.Начисление.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда)
| ТОГДА ИСТИНА
| КОГДА ПлановыеНачисления.Начисление.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.Прочее)
| И ПлановыеНачисления.Начисление.ВходитВБазуРКИСН
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ВходитВБазуРКиСН,
| ПлановыеНачисления.Регистратор КАК Регистратор,
| ВЫБОР
| КОГДА ПлановыеНачисления.Начисление В (&НачисленияТарифнойСтавки)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НачислениеТарифнойСтавки
|ПОМЕСТИТЬ ВТДанныеНачисленийПоСотрудникам
|ИЗ
| ВТПлановыеНачисленияСрезПоследних КАК ПлановыеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСотрудникиОрганизации КАК КадровыеДанныеСотрудников
| ПО ПлановыеНачисления.Период = КадровыеДанныеСотрудников.Период
| И ПлановыеНачисления.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
|ГДЕ
| ПлановыеНачисления.Размер <> 0";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВТСотрудникиОрганизации", ИмяВременнойТаблицыОтборовСотрудников);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Сотрудник", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Сотрудник);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Период", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Период);
МассивТекстов.Добавить(ТекстЗапроса);
Иначе
Запрос = Новый Запрос;
ТекстЗапроса =
"ВЫБРАТЬ
| КадровыеДанныеСотрудников.Период КАК Период,
| КадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
| КадровыеДанныеСотрудников.Подразделение КАК Подразделение,
| Начисления.Ссылка КАК Начисление,
| КадровыеДанныеСотрудников.ТарифнаяСтавка КАК Результат,
| ИСТИНА КАК ВходитВБазуРКиСН,
| NULL КАК Регистратор,
| ИСТИНА КАК НачислениеТарифнойСтавки
|ПОМЕСТИТЬ ВТДанныеНачисленийПоСотрудникам
|ИЗ
| ВТСотрудникиОрганизации КАК КадровыеДанныеСотрудников
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК Начисления
| ПО (Начисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.ПовременнаяОплатаТруда))";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВТСотрудникиОрганизации", ИмяВременнойТаблицыОтборовСотрудников);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Сотрудник", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Сотрудник);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Период", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Период);
МассивТекстов.Добавить(ТекстЗапроса);
КонецЕсли;
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеНачисленийПоСотрудникам.Сотрудник,
| ДанныеНачисленийПоСотрудникам.Подразделение,
| СУММА(ДанныеНачисленийПоСотрудникам.Результат) КАК Результат
|ПОМЕСТИТЬ ВТСводныеДанныеНачисленийПоСотрудникам
|ИЗ
| ВТДанныеНачисленийПоСотрудникам КАК ДанныеНачисленийПоСотрудникам
|ГДЕ
| ДанныеНачисленийПоСотрудникам.ВходитВБазуРКиСН
|
|СГРУППИРОВАТЬ ПО
| ДанныеНачисленийПоСотрудникам.Сотрудник,
| ДанныеНачисленийПоСотрудникам.Подразделение
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КадровыеДанныеСотрудников.Период,
| ВЫРАЗИТЬ(КадровыеДанныеСотрудников.Сотрудник КАК Справочник.Сотрудники) КАК Сотрудник,
| ВЫРАЗИТЬ(КадровыеДанныеСотрудников.Подразделение КАК Справочник.ПодразделенияОрганизаций) КАК Подразделение,
| СводныеДанныеНачисленийПоСотрудникам.Результат КАК Результат,
| КадровыеДанныеСотрудников.ПроцентСевернойНадбавки КАК ПроцентСевернойНадбавки,
| ВЫБОР
| КОГДА КадровыеДанныеСотрудников.Подразделение.РайонныйКоэффициент > 1
| ТОГДА КадровыеДанныеСотрудников.Подразделение.РайонныйКоэффициент
| КОГДА КадровыеДанныеСотрудников.Организация.РайонныйКоэффициент > 1
| ТОГДА КадровыеДанныеСотрудников.Организация.РайонныйКоэффициент
| КОГДА КадровыеДанныеСотрудников.ГоловнаяОрганизация.РайонныйКоэффициент > 1
| ТОГДА КадровыеДанныеСотрудников.ГоловнаяОрганизация.РайонныйКоэффициент
| ИНАЧЕ 1
| КОНЕЦ КАК РайонныйКоэффициент
|ПОМЕСТИТЬ ВТДанныеПоКоэффициентамСотрудников
|ИЗ
| ВТСотрудникиОрганизации КАК КадровыеДанныеСотрудников
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСводныеДанныеНачисленийПоСотрудникам КАК СводныеДанныеНачисленийПоСотрудникам
| ПО КадровыеДанныеСотрудников.Сотрудник = СводныеДанныеНачисленийПоСотрудникам.Сотрудник
| И КадровыеДанныеСотрудников.Подразделение = СводныеДанныеНачисленийПоСотрудникам.Подразделение
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеПоКоэффициентамСотрудников.Период,
| ДанныеПоКоэффициентамСотрудников.Подразделение КАК СтруктурнаяЕдиница
|ПОМЕСТИТЬ ВТПодразделенияПериоды
|ИЗ
| ВТДанныеПоКоэффициентамСотрудников КАК ДанныеПоКоэффициентамСотрудников";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВТСотрудникиОрганизации", ИмяВременнойТаблицыОтборовСотрудников);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Сотрудник", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Сотрудник);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Период", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Период);
МассивТекстов.Добавить(ТекстЗапроса);
ЗапросТерриториальныеУсловияПФР = ЗарплатаКадрыОбщиеНаборыДанных.ЗапросВТИмяРегистраСрез(
"ТерриториальныеУсловияПФР",
Истина,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТПодразделенияПериоды", "СтруктурнаяЕдиница"),
,
Истина);
ЗарплатаКадрыОбщиеНаборыДанных.СкопироватьПараметрыЗапроса(Запрос, ЗапросТерриториальныеУсловияПФР);
МассивТекстов.Добавить(ЗапросТерриториальныеУсловияПФР.Текст);
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеПоСотрудникам.Период,
| ДанныеПоСотрудникам.Период КАК ПериодЗаписи,
| ДанныеПоСотрудникам.Регистратор,
| ДанныеПоСотрудникам.Сотрудник КАК Сотрудник,
| ДанныеПоСотрудникам.Подразделение КАК Подразделение,
| ДанныеПоСотрудникам.Начисление КАК Начисление,
| ВЫБОР
| КОГДА ДанныеПоСотрудникам.Начисление.КодДоходаНДФЛ.ИмеетЕдинственныйВычет
| ТОГДА ДанныеПоСотрудникам.Начисление.КодДоходаНДФЛ.ВычетПоУмолчанию
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыВычетовНДФЛ.ПустаяСсылка)
| КОНЕЦ КАК КодВычета,
| ДанныеПоСотрудникам.Результат КАК Размер,
| ДанныеПоСотрудникам.ВходитВБазуРКиСН КАК ВходитВБазуРКиСН,
| NULL КАК ОсновнойПоказатель,
| NULL КАК ЗначениеОсновногоПоказателя,
| ДанныеПоСотрудникам.НачислениеТарифнойСтавки,
| 0 КАК КоэффициентПересчета
|ПОМЕСТИТЬ ВТПлановыеНачисленияСотрудников
|ИЗ
| ВТДанныеНачисленийПоСотрудникам КАК ДанныеПоСотрудникам
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСотрудникиОрганизации КАК КадровыеДанныеСотрудников
| ПО ДанныеПоСотрудникам.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеПоКоэффициентамСотрудников.Период,
| ДанныеПоКоэффициентамСотрудников.Период,
| НЕОПРЕДЕЛЕНО,
| ДанныеПоКоэффициентамСотрудников.Сотрудник,
| ДанныеПоКоэффициентамСотрудников.Подразделение,
| Начисления.Ссылка,
| ВЫБОР
| КОГДА Начисления.КодДоходаНДФЛ.ИмеетЕдинственныйВычет
| ТОГДА Начисления.КодДоходаНДФЛ.ВычетПоУмолчанию
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыВычетовНДФЛ.ПустаяСсылка)
| КОНЕЦ,
| ДанныеПоКоэффициентамСотрудников.Результат * (ДанныеПоКоэффициентамСотрудников.РайонныйКоэффициент - 1),
| ЛОЖЬ,
| NULL,
| NULL,
| ЛОЖЬ,
| ДанныеПоКоэффициентамСотрудников.РайонныйКоэффициент - 1
|ИЗ
| ВТДанныеПоКоэффициентамСотрудников КАК ДанныеПоКоэффициентамСотрудников
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК Начисления
| ПО (Начисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.РайонныйКоэффициент))
| И (ДанныеПоКоэффициентамСотрудников.РайонныйКоэффициент <> 1)
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСотрудникиОрганизации КАК КадровыеДанныеСотрудников
| ПО ДанныеПоКоэффициентамСотрудников.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеПоКоэффициентамСотрудников.Период,
| ДанныеПоКоэффициентамСотрудников.Период,
| НЕОПРЕДЕЛЕНО,
| ДанныеПоКоэффициентамСотрудников.Сотрудник,
| ДанныеПоКоэффициентамСотрудников.Подразделение,
| Начисления.Ссылка,
| ВЫБОР
| КОГДА Начисления.КодДоходаНДФЛ.ИмеетЕдинственныйВычет
| ТОГДА Начисления.КодДоходаНДФЛ.ВычетПоУмолчанию
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыВычетовНДФЛ.ПустаяСсылка)
| КОНЕЦ,
| ДанныеПоКоэффициентамСотрудников.Результат * ДанныеПоКоэффициентамСотрудников.ПроцентСевернойНадбавки / 100,
| ЛОЖЬ,
| NULL,
| NULL,
| ЛОЖЬ,
| ДанныеПоКоэффициентамСотрудников.ПроцентСевернойНадбавки / 100
|ИЗ
| ВТДанныеПоКоэффициентамСотрудников КАК ДанныеПоКоэффициентамСотрудников
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления КАК Начисления
| ПО (Начисления.КатегорияНачисленияИлиНеоплаченногоВремени = ЗНАЧЕНИЕ(Перечисление.КатегорииНачисленийИНеоплаченногоВремени.СевернаяНадбавка))
| И (ДанныеПоКоэффициентамСотрудников.ПроцентСевернойНадбавки <> 0)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТТерриториальныеУсловияПФРСрезПоследних КАК ТерриториальныеУсловия
| ПО ДанныеПоКоэффициентамСотрудников.Период = ТерриториальныеУсловия.Период
| И ДанныеПоКоэффициентамСотрудников.Подразделение = ТерриториальныеУсловия.СтруктурнаяЕдиница
| И (ТерриториальныеУсловия.ТерриториальныеУсловияПФР В (ЗНАЧЕНИЕ(Справочник.ТерриториальныеУсловияПФР.МКС), ЗНАЧЕНИЕ(Справочник.ТерриториальныеУсловияПФР.МКСР), ЗНАЧЕНИЕ(Справочник.ТерриториальныеУсловияПФР.РКС), ЗНАЧЕНИЕ(Справочник.ТерриториальныеУсловияПФР.РКСМ), ЗНАЧЕНИЕ(Справочник.ТерриториальныеУсловияПФР.ПРОЧ)))
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСотрудникиОрганизации КАК КадровыеДанныеСотрудников
| ПО ДанныеПоКоэффициентамСотрудников.Сотрудник = КадровыеДанныеСотрудников.Сотрудник";
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "ВТСотрудникиОрганизации", ИмяВременнойТаблицыОтборовСотрудников);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Сотрудник", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Сотрудник);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "КадровыеДанныеСотрудников.Период", "КадровыеДанныеСотрудников." + ПоляОтбораСотрудников.Период);
МассивТекстов.Добавить(ТекстЗапроса);
Запрос.Текст = СтрСоединить(МассивТекстов, ЗарплатаКадрыОбщиеНаборыДанных.РазделительЗапросов());
КонецЕсли;
ЗарплатаКадрыОбщиеНаборыДанных.ЗаменитьИмяСоздаваемойВременнойТаблицы(Запрос.Текст, "ВТПлановыеНачисленияСотрудников", ИмяВТПлановыеНачисленияСотрудников);
Возврат Запрос;
КонецФункции
Функция ОписанияСоставаНачисленийПоВременнойТаблице(МенеджерВременныхТаблиц, ИмяВТСотрудникиПериоды, ИмяПоляПериод, ИмяПоляСотрудник, ИмяПоляДатаОкончания, ИспользоватьКраткиеПредставления, ВыводитьДенежныеПоказателиСВалютой) Экспорт
ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
МенеджерВременныхТаблиц,
ИмяВТСотрудникиПериоды,
ИмяПоляСотрудник + "," + ИмяПоляПериод);
ОписательВременныхТаблиц.ИмяВТКадровыеДанныеСотрудников = "ВТКадровыеДанныеСотрудниковДляСоставаНачислений";
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Истина, "ТарифнаяСтавка");
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.Текст =
"ВЫБРАТЬ
| КадровыеДанныеСотрудников.Период КАК Период,
| КадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
| КадровыеДанныеСотрудников.ТарифнаяСтавка КАК ТарифнаяСтавка
|ИЗ
| ВТКадровыеДанныеСотрудниковДляСоставаНачислений КАК КадровыеДанныеСотрудников
|ИТОГИ ПО
| Сотрудник";
ОписанияНачисленийПоПериодам = Новый Соответствие;
ВыборкаПоСотрудникам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСотрудникам.Следующий() Цикл
ОписаниеНачисленийПоПериодам = Новый Соответствие;
ВыборкаПоПериодам = ВыборкаПоСотрудникам.Выбрать();
Пока ВыборкаПоПериодам.Следующий() Цикл
ОписаниеСостава = ОписаниеСоставаНачислений();
ОписаниеСостава.ПоказательОкладТариф = НСтр("ru='Оклад'");
ОписаниеСостава.ОкладТариф = ВыборкаПоПериодам.ТарифнаяСтавка;
ОписаниеСостава.ОписаниеОклада = ОписаниеСостава.ПоказательОкладТариф
+ ?(ОписаниеСостава.ОкладТариф = 0, "", ": " + Формат(ОписаниеСостава.ОкладТариф, "ЧДЦ=0"));
ОписаниеНачисленийПоПериодам.Вставить(ВыборкаПоПериодам.Период, ОписаниеСостава);
КонецЦикла;
ОписанияНачисленийПоПериодам.Вставить(ВыборкаПоСотрудникам.Сотрудник, ОписаниеНачисленийПоПериодам);
КонецЦикла;
Возврат ОписанияНачисленийПоПериодам;
КонецФункции
Функция ОписаниеСоставаНачислений() Экспорт
ОписаниеСостава = Новый Структура("ПоказательТариф,Тариф,ОписаниеОклада,ОписаниеНадбавок");
ОписаниеСостава.Вставить("ПоказательОкладТариф", "");
ОписаниеСостава.Вставить("ОкладТариф", 0);
ОписаниеСостава.Вставить("ОписаниеОклада", "");
ОписаниеСостава.Вставить("ОписаниеНадбавок", "");
Возврат ОписаниеСостава;
КонецФункции
ПоказатьПростите если что-то не так или не то. Не ругайтесь только тк новичок.
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот