|ИЗ

               |        ВТ_Граф КАК ВТ_Граф

               |                ЛЕВОЕ СОЕДИНЕНИЕ ВТ_База КАК ВТ_База

               |                ПО ВТ_Граф. НомерСтроки = ВТ_База. НомерСтроки";

       Измерения = Новый Массив;

       Измерения. Добавить("Сотрудник");

       Измерения. Добавить("Подразделение");

               

       Запрос. УстановитьПараметр("Больничный", ПланыВидовРасчета. ОсновныеНачисления. Больничный);

       Запрос. УстановитьПараметр("Дата", Дата);

       Запрос. УстановитьПараметр("Измерения", Измерения);

       Запрос. УстановитьПараметр("Ссылка", Ссылка);

       

       РезультатЗапроса = Запрос. Выполнить();

       

       ВыборкаДетальныеЗаписи = РезультатЗапроса. Выбрать();

       

       Пока ВыборкаДетальныеЗаписи. Следующий() Цикл

               Набор[ВыборкаДетальныеЗаписи. НомерСтроки - 1].Размер = ВыборкаДетальныеЗаписи. Размер;

НЕ нашли? Не то? Что вы ищете?

               ТЧ[ВыборкаДетальныеЗаписи. НомерСтроки - 1].Размер = ВыборкаДетальныеЗаписи. Размер;

               Набор[ВыборкаДетальныеЗаписи. НомерСтроки - 1].Результат = ВыборкаДетальныеЗаписи. Результат;

               ТЧ[ВыборкаДетальныеЗаписи. НомерСтроки - 1].Результат = ВыборкаДетальныеЗаписи. Результат;

               Набор[ВыборкаДетальныеЗаписи. НомерСтроки - 1].КолДней = ВыборкаДетальныеЗаписи. КолДней;

               ТЧ[ВыборкаДетальныеЗаписи. НомерСтроки - 1].КолДней = ВыборкаДетальныеЗаписи. КолДней;

       КонецЦикла;

               КонецЕсли;                

       КонецЦикла;

КонецПроцедуры

Процедура ОбработкаПроведения(Отказ, Режим)

       // регистр ОсновныеНачисления

       Движения. ОсновныеНачисления. Записывать = Истина;

       Выборка = СформироватьВыборкуОсн();

       ЗаполнитьНабор(Движения. ОсновныеНачисления, Выборка);

КонецПроцедуры

Модуль формы:

&НаСервере

Процедура РасчитатьНаСервере()

       Док = РеквизитФормыВЗначение("Объект");

       Док. РасчитатьЗП();

       ЗначениеВДанныеФормы(Док, Объект);

КонецПроцедуры

&НаКлиенте

Процедура Расчитать(Команда)

       РасчитатьНаСервере();

КонецПроцедуры

&НаСервере

Процедура ЗаполнитьНаСервере()

       Запрос = Новый Запрос;

       Запрос. Текст =

               "ВЫБРАТЬ

               |        СведенияОСотрудникахСрезПоследних. Сотрудник,

               |        СведенияОСотрудникахСрезПоследних. Подразделение,

               |        СведенияОСотрудникахСрезПоследних. Оклад КАК Размер,

               |        ЗНАЧЕНИЕ(Справочник. ГрафикиРаботы. Пятидневка) КАК ГрафикРаботы,

               |        ЗНАЧЕНИЕ(ПланвидовРасчета. ОсновныеНачисления. Оклад) КАК ВидРасчета,

               |        НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ) КАК ДатаНачала,

               |        КОНЕЦПЕРИОДА(&Дата, МЕСЯЦ) КАК ДатаОкончания

               |ИЗ

               |        РегистрСведений. СведенияОСотрудниках. СрезПоследних(НАЧАЛОПЕРИОДА(&Дата, МЕСЯЦ), ) КАК СведенияОСотрудникахСрезПоследних";

       

       Запрос. УстановитьПараметр("Дата", Объект. Дата);

       

       РезультатЗапроса = Запрос. Выполнить();

       

       Объект. ОсновныеНачисления. Загрузить(РезультатЗапроса. Выгрузить());

КонецПроцедуры

&НаКлиенте

Процедура Заполнить(Команда)

       ЗаполнитьНаСервере();

КонецПроцедуры

Отчет «БольничныйЗаПериод»

ВЫБРАТЬ

       ОсновныеНачисления. Сотрудник,

       ОсновныеНачисления. Подразделение,

       ОсновныеНачисления. КолДней,

       ОсновныеНачисления. Результат

ИЗ

       РегистрРасчета. ОсновныеНачисления КАК ОсновныеНачисления

ГДЕ

       ОсновныеНачисления. ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета. ОсновныеНачисления. Больничный)

       И ОсновныеНачисления. ПериодДействия = НАЧАЛОПЕРИОДА(&Период, МЕСЯЦ)

Обработка «ЗаполнениеГрафика»

Рекв: ГрафикРаботы (вынести на форму)

Процедура ЗаполнитьГрафик(ДатаНачала, ДатаОкончания, ВыходныеДни) Экспорт

       

       Набор = РегистрыСведений. ГрафикиРаботы. СоздатьНаборЗаписей();

       Набор. Отбор. ГрафикРаботы. Установить(ГрафикРаботы);

       

       Набор. Прочитать();

       

       ЧислоСекундВСутках = 86400;

       

       Дат = ДатаНачала;

       Для к = 0 По Набор. Количество()-1 Цикл

               

               Запись = Набор[к];

               Если Запись. Дата < ДатаНачала Тогда

                       Продолжить;

               ИначеЕсли Запись. Дата =Дат Тогда

                       Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда

                               Запись. Значение = 0;

                               Запись. ЗначениеВДнях = 0;

                       Иначе        

                               Запись. Значение = 8;

                               Запись. ЗначениеВДнях = 1;

                       КонецЕсли;

                       Дат = Дат + ЧислоСекундВСутках;

               Иначе

                       Пока Дат < Мин(Запись. Дата, ДатаОкончания) Цикл

                               НоваяЗапись = Набор. Добавить();

                               НоваяЗапись. Дата = Дат;

                               НоваяЗапись. ГрафикРаботы =ГрафикРаботы;

                               Если Найти(ВыходныеДни, Строка(ДеньНедели(Дат))) Тогда

                                       НоваяЗапись. Значение = 0;

                                       Запись. ЗначениеВДнях = 0;

                               Иначе        

                                       НоваяЗапись. Значение = 8;

                                       Запись. ЗначениеВДнях = 1;

                               КонецЕсли;

                               Дат = Дат + ЧислоСекундВСутках;

                       КонецЦикла;

                       Если Запись. Дата > ДатаОкончания Тогда

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7