Untitled
plain_text
a month ago
13 kB
0
Indexable
Never
Процедура РассчитатьНачисления(Регистратор, Движения) Экспорт НаборЗаписей = Движения.ОсновныеНачисления; РассчитатьОсновныеНачисления(Регистратор, НаборЗаписей); НаборЗаписей.Записать(, Истина); ДопНаборЗаписей = Движения.ДополнительныеНачисления; РассчитатьДопНачисления(Регистратор, ДопНаборЗаписей); ДопНаборЗаписей.Записать(); КонецПроцедуры Процедура РассчитатьОсновныеНачисления(Регистратор, НаборЗаписей) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОсновныеНачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки, | ОсновныеНачисленияДанныеГрафика.Сотрудник КАК Сотрудник, | ОсновныеНачисленияДанныеГрафика.Подразделение КАК Подразделение, | ОсновныеНачисленияДанныеГрафика.ПериодДействияНачало КАК ПериодДействияНачало, | ОсновныеНачисленияДанныеГрафика.ПериодДействияКонец КАК ПериодДействияКонец, | ЕСТЬ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, Выборка.База / Выборка.РабочихЧасов * Выборка.ЧасовФакт); КонецЕсли; Выборка.Сбросить(); КонецЦикла; КонецПроцедуры