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