Untitled
unknown
plain_text
2 years ago
13 kB
8
Indexable
Процедура РассчитатьНачисления(Регистратор, Движения) Экспорт
НаборЗаписей = Движения.ОсновныеНачисления;
РассчитатьОсновныеНачисления(Регистратор, НаборЗаписей);
НаборЗаписей.Записать(, Истина);
ДопНаборЗаписей = Движения.ДополнительныеНачисления;
РассчитатьДопНачисления(Регистратор, ДопНаборЗаписей);
ДопНаборЗаписей.Записать();
КонецПроцедуры
Процедура РассчитатьОсновныеНачисления(Регистратор, НаборЗаписей)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОсновныеНачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки,
| ОсновныеНачисленияДанныеГрафика.Сотрудник КАК Сотрудник,
| ОсновныеНачисленияДанныеГрафика.Подразделение КАК Подразделение,
| ОсновныеНачисленияДанныеГрафика.ПериодДействияНачало КАК ПериодДействияНачало,
| ОсновныеНачисленияДанныеГрафика.ПериодДействияКонец КАК ПериодДействияКонец,
| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЧасовПериодДействия, 0) КАК ЧасовПлан
|ПОМЕСТИТЬ вт_ДанныеГрафика
|ИЗ
| РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчетаОклад) КАК ОсновныеНачисленияДанныеГрафика
|
|ИНДЕКСИРОВАТЬ ПО
| Сотрудник,
| Подразделение
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| вт_ДанныеГрафика.НомерСтроки КАК НомерСтроки,
| вт_ДанныеГрафика.ЧасовПлан КАК ЧасовПлан,
| ЕСТЬNULL(СведенияОСотрудникахСрезПоследних.Оклад, 0) КАК Оклад,
| СУММА(ЕСТЬNULL(ДанныеТабеляОбороты.ЧасовОтработаноОборот, 0)) КАК ЧасовФакт
|ИЗ
| вт_ДанныеГрафика КАК вт_ДанныеГрафика
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОСотрудниках.СрезПоследних(
| &ПериодРегистрации,
| (Сотрудник, Подразделение) В
| (ВЫБРАТЬ
| вт_ДанныеГрафика.Сотрудник КАК Сотрудник,
| вт_ДанныеГрафика.Подразделение КАК Подразделение
| ИЗ
| вт_ДанныеГрафика КАК вт_ДанныеГрафика)) КАК СведенияОСотрудникахСрезПоследних
| ПО вт_ДанныеГрафика.Сотрудник = СведенияОСотрудникахСрезПоследних.Сотрудник
| И вт_ДанныеГрафика.Подразделение = СведенияОСотрудникахСрезПоследних.Подразделение
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабеля.Обороты(
| &ПериодРегистрации,
| &КонецПериода,
| День,
| (Сотрудник, Подразделение) В
| (ВЫБРАТЬ
| вт_ДанныеГрафика.Сотрудник КАК Сотрудник,
| вт_ДанныеГрафика.Подразделение КАК Подразделение
| ИЗ
| вт_ДанныеГрафика КАК вт_ДанныеГрафика)) КАК ДанныеТабеляОбороты
| ПО вт_ДанныеГрафика.Сотрудник = ДанныеТабеляОбороты.Сотрудник
| И вт_ДанныеГрафика.Подразделение = ДанныеТабеляОбороты.Подразделение
| И вт_ДанныеГрафика.ПериодДействияНачало <= ДанныеТабеляОбороты.Период
| И вт_ДанныеГрафика.ПериодДействияКонец >= ДанныеТабеляОбороты.Период
|
|СГРУППИРОВАТЬ ПО
| вт_ДанныеГрафика.НомерСтроки,
| вт_ДанныеГрафика.ЧасовПлан,
| ЕСТЬNULL(СведенияОСотрудникахСрезПоследних.Оклад, 0)";
Запрос.УстановитьПараметр("ВидРасчетаОклад", ПланыВидовРасчета.ОсновныеНачисления.Оклад);
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(НачалоМесяца(Регистратор.Дата)));
Запрос.УстановитьПараметр("ПериодРегистрации", НачалоМесяца(Регистратор.Дата));
Запрос.УстановитьПараметр("Регистратор", Регистратор);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("НомерСтроки", 0);
Для Каждого Запись Из НаборЗаписей Цикл
СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
Запись.Результат = ?(Выборка.ЧасовПлан = 0, 0, Выборка.Оклад / Выборка.ЧасовФакт * Выборка.ЧасовПлан);
Запись.РабочихЧасов = Выборка.ЧасовПлан;
КонецЕсли;
Выборка.Сбросить();
КонецЦикла;
КонецПроцедуры
Процедура РассчитатьДопНачисления(Регистратор, НаборЗаписей)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки, ДополнительныеНачисленияБазаДополнительныеНачисления.НомерСтроки) КАК НомерСтроки,
| ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.Сотрудник, ДополнительныеНачисленияБазаДополнительныеНачисления.Сотрудник) КАК Сотрудник,
| ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.Подразделение, ДополнительныеНачисленияБазаДополнительныеНачисления.Подразделение) КАК Подразделение,
| ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.РезультатБаза, 0) + ЕСТЬNULL(ДополнительныеНачисленияБазаДополнительныеНачисления.РезультатБаза, 0) КАК База,
| ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.РабочихЧасовБаза, 0) КАК РабочихЧасов
|ПОМЕСТИТЬ вт_ДанныеБазы
|ИЗ
| РегистрРасчета.ДополнительныеНачисления.БазаДополнительныеНачисления(
| &Измерения,
| &Измерения,
| ,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчетаКомандировка) КАК ДополнительныеНачисленияБазаДополнительныеНачисления
| ПОЛНОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисления.БазаОсновныеНачисления(
| &Измерения,
| &Измерения,
| ,
| Регистратор = &Регистратор
| И ВидРасчета = &ВидРасчетаКомандировка) КАК ДополнительныеНачисленияБазаОсновныеНачисления
| ПО ДополнительныеНачисленияБазаДополнительныеНачисления.НомерСтроки = ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| вт_ДанныеБазы.НомерСтроки КАК НомерСтроки,
| вт_ДанныеБазы.База КАК База,
| вт_ДанныеБазы.РабочихЧасов КАК РабочихЧасов,
| ЕСТЬNULL(ДанныеТабеляОбороты.ДнейВКомандировкеОборот, 0) КАК ЧасовФакт
|ИЗ
| вт_ДанныеБазы КАК вт_ДанныеБазы
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДанныеТабеля.Обороты(
| &ПериодРегистрации,
| &КонецМесяца,
| ,
| (Сотрудник, Подразделение) В
| (ВЫБРАТЬ
| вт_ДанныеБазы.Сотрудник КАК Сотрудник,
| вт_ДанныеБазы.Подразделение КАК Подразделение
| ИЗ
| вт_ДанныеБазы КАК вт_ДанныеБазы)) КАК ДанныеТабеляОбороты
| ПО вт_ДанныеБазы.Сотрудник = ДанныеТабеляОбороты.Сотрудник
| И вт_ДанныеБазы.Подразделение = ДанныеТабеляОбороты.Подразделение";
Измерения = Новый Массив;
Измерения.Добавить("Сотрудник");
Измерения.Добавить("Подразделение");
Запрос.УстановитьПараметр("ВидРасчетаКомандировка", ПланыВидовРасчета.ДополнительныеНачисления.Командировка);
Запрос.УстановитьПараметр("Измерения", Измерения);
Запрос.УстановитьПараметр("КонецМесяца", КонецМесяца(Регистратор.Дата));
Запрос.УстановитьПараметр("ПериодРегистрации", НачалоМесяца(Регистратор.Дата));
Запрос.УстановитьПараметр("Регистратор", Регистратор);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
СтруктураПоиска = Новый Структура;
СтруктураПоиска.Вставить("НомерСтроки", 0);
для Каждого Запись Из НаборЗаписей Цикл
СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
Запись.Результат = ?(Выборка.РабочихЧасов = 0, 0, Выборка.База / Выборка.РабочихЧасов * Выборка.ЧасовФакт);
КонецЕсли;
Выборка.Сбросить();
КонецЦикла;
КонецПроцедуры Editor is loading...