24.
Serjik78
1290
20.10.09 16:03
Сейчас в теме
( 22 ) Как нет? А вот это:
ЗапросБольничные = Новый Запрос;
ЗапросБольничные.Текст =
"ВЫБРАТЬ
| ОсновныеНачисления.НомерСтроки,
| ЕСТЬNULL(ВложенныйЗапрос.РезультатПоОкладуПрошлыйМесяц, 0) КАК ОкладЗаПрошлыйМесяц,
| ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЗначениеФактическийПериодДействия, 0) КАК ФактЧасовБольничного
|ИЗ
| РегистрРасчета.ОсновныеНачисления КАК ОсновныеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СУММА(ОсновныеНачисления.Результат) КАК РезультатПоОкладуПрошлыйМесяц,
| ОсновныеНачисления.Сотрудник КАК Сотрудник
| ИЗ
| РегистрРасчета.ОсновныеНачисления КАК ОсновныеНачисления
| ГДЕ
| ОсновныеНачисления.ПериодРегистрации = &ПрошлыйМесяц
| И ОсновныеНачисления.ВидРасчета = &ВидРасчетаОклад
|
| СГРУППИРОВАТЬ ПО
| ОсновныеНачисления.Сотрудник) КАК ВложенныйЗапрос
| ПО ОсновныеНачисления.Сотрудник = ВложенныйЗапрос.Сотрудник
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
| ПериодРегистрации = &ПериодРегистрации
| И Регистратор = &Регистратор) КАК ОсновныеНачисленияДанныеГрафика
| ПО ОсновныеНачисления.НомерСтроки = ОсновныеНачисленияДанныеГрафика.НомерСтроки
|ГДЕ
| ОсновныеНачисления.Регистратор = &Регистратор
| И ОсновныеНачисления.ПериодРегистрации = &ПериодРегистрации
| И ОсновныеНачисления.ВидРасчета = &ВидРасчетаБольничный";
ЗапросБольничные.УстановитьПараметр("ВидРасчетаОклад", ПланыВидовРасчета.ОсновныеНачисления.Оклад);
ЗапросБольничные.УстановитьПараметр("ВидРасчетаБольничный", ПланыВидовРасчета.ОсновныеНачисления.Больничный);
ЗапросБольничные.УстановитьПараметр("Регистратор", Ссылка);
ЗапросБольничные.УстановитьПараметр("ПериодРегистрации", Ссылка.ПериодРегистрации);
ЗапросБольничные.УстановитьПараметр("ПрошлыйМесяц", ДобавитьМесяц(НачалоМесяца(Ссылка.ПериодРегистрации), -1));
РезультатБольничные = ЗапросБольничные.Выполнить();
Если Не РезультатБольничные.Пустой() Тогда
ЗапросДнейПрошлыйМесяц = Новый Запрос;
ЗапросДнейПрошлыйМесяц.Текст =
"ВЫБРАТЬ
| СУММА(ГрафикиРаботы.Значение) КАК Значение
|ИЗ
| РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
|ГДЕ
| ГрафикиРаботы.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ГрафикиРаботы.ГрафикРаботы = &ГрафикРаботыПятидневка";
ЗапросДнейПрошлыйМесяц.УстановитьПараметр("ГрафикРаботыПятидневка", Справочники.ГрафикиРаботы.Пятидневка);
ЗапросДнейПрошлыйМесяц.УстановитьПараметр("ДатаНачала", ДобавитьМесяц(НачалоМесяца(Ссылка.ПериодРегистрации), -1));
ЗапросДнейПрошлыйМесяц.УстановитьПараметр("ДатаОкончания", НачалоМесяца(Ссылка.ПериодРегистрации) - 1);
Выборка = ЗапросДнейПрошлыйМесяц.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ЧасовПрошлыйМесяц = Выборка.Значение;
Иначе
ЧасовПрошлыйМесяц = 0;
КонецЕсли;
Если ЧасовПрошлыйМесяц > 0 Тогда
ВыборкаБольничные = РезультатБольничные.Выбрать();
Пока ВыборкаБольничные.Следующий() Цикл
НаборЗаписей[ВыборкаБольничные.НомерСтроки - 1].Размер = ВыборкаБольничные.ОкладЗаПрошлыйМесяц;
НаборЗаписей[ВыборкаБольничные.НомерСтроки - 1].Результат =
ВыборкаБольничные.ОкладЗаПрошлыйМесяц / ЧасовПрошлыйМесяц * ВыборкаБольничные.ФактЧасовБольничного;
КонецЦикла;
КонецЕсли;
КонецЕсли;