"Доброе время суток. У меня следующая проблема, разработали отчет по отработанному времени рабочих. Если допустим задать период с 01.01.2011 по 31.12.2011 и человек принят на предприятие 01.03.2011 то при формировании отчеты отработанные часы проставляются начиная с января месяца т.е как бы сдвигаются. Проверил запрос в консуле все нормально, отработанное время начинается с 01.03.2011. Как я понимаю ошибка допущена на стадии формирования таблицы. <br> <br>http://imageshack.us/photo/my-images/694/566jh.jpg/<br><br>Ячейки на скриншоте помеченные желтым должны быть пустые, так как человек не работал в эти месяца. <br><br>Кусок кода отвечающего за формирование: <br> <br> <br><br><pre> Запрос.Текст = "ВЫБРАТЬ<br> | СУММА(РабочееВремяРаботниковОрганизацийОбороты.ЧасовОборот) КАК явка,<br> | РабочееВремяРаботниковОрганизацийОбороты.Сотрудник.Физлицо КАК Сотрудник,<br> | РабочееВремяРаботниковОрганизацийОбороты.Период КАК Период,<br> | РабочееВремяРаботниковОрганизацийОбороты.Сотрудник.ТекущееПодразделениеОрганизации КАК ПодразделениеОрганизации<br> |ИЗ<br> | РегистрНакопления.РабочееВремяРаботниковОрганизаций.Обороты(&НачПериод, &КонПериод, Месяц, (НЕ ВидИспользованияРабочегоВремени В (&СписокЗначенийВидВремени))) КАК РабочееВремяРаботниковОрганизацийОбороты<br> |<br> |СГРУППИРОВАТЬ ПО<br> | РабочееВремяРаботниковОрганизацийОбороты.Сотрудник.Физлицо,<br> | РабочееВремяРаботниковОрганизацийОбороты.Период,<br> | РабочееВремяРаботниковОрганизацийОбороты.Сотрудник.ТекущееПодразделениеОрганизации<br> |<br> |УПОРЯДОЧИТЬ ПО<br> | Период<br> |ИТОГИ<br> | СУММА(явка)<br> |ПО<br> | ПодразделениеОрганизации,<br> | Сотрудник,<br> | Период";<br> <br> СписокЗначенийВидВремени = Новый СписокЗначений;<br> СписокЗначенийВидВремени.Добавить(Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеДни);<br> СписокЗначенийВидВремени.Добавить(Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеЧасы);<br> СписокЗначенийВидВремени.Добавить(Справочники.КлассификаторИспользованияРабочегоВремени.ВыходныеЧасыАдминистраторов);<br> СписокЗначенийВидВремени.Добавить(Справочники.КлассификаторИспользованияРабочегоВремени.РаботаНочныеЧасы);<br> СписокЗначенийВидВремени.Добавить(Справочники.КлассификаторИспользованияРабочегоВремени.Командировка);<br> Запрос.УстановитьПараметр("СписокЗначенийВидВремени",СписокЗначенийВидВремени);<br> <br> Результат = Запрос.Выполнить();<br> <br> НомерПП = 1;<br> ИтогЯвка = 0;<br> ТабДок.НачатьАвтогруппировкуСтрок();<br> <br> ВыборкаПодразделение = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ПодразделениеОрганизации");<br> Пока ВыборкаПодразделение.Следующий() Цикл<br> ОбластьСтрокаПодразделение = Макет.ПолучитьОбласть("СтрокаПодразделение|КолонкаСотрудник");<br> ОбластьСтрокаПодразделение.Параметры.Заполнить(ВыборкаПодразделение);<br> ТабДок.Вывести(ОбластьСтрокаПодразделение,ВыборкаПодразделение.Уровень());<br> Для н=0 по КолвоМесяцев Цикл<br> ОбластьСтрока = Макет.ПолучитьОбласть("СтрокаПодразделение|КолонкаСтроки");<br> ТабДок.Присоединить(ОбластьСтрока); <br> КонецЦикла;<br> <br> Выборка = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Сотрудник");<br> Пока Выборка.Следующий() Цикл<br> ОбластьСтрокаСотрудник = Макет.ПолучитьОбласть("Строка|КолонкаСотрудник");<br> ОбластьСтрокаСотрудник.Параметры.Заполнить(Выборка);<br> ОбластьСтрокаСотрудник.Параметры.НомерПП = НомерПП;<br> ТабДок.Вывести(ОбластьСтрокаСотрудник,Выборка.Уровень());<br> <br> ЧасовНакопительно = 0;<br> ВыборкаПоПериодам = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период");<br> Для н=0 по КолвоМесяцев Цикл<br> Если ВыборкаПоПериодам.Следующий() Тогда<br> ОбластьСтрока = Макет.ПолучитьОбласть("Строка|КолонкаСтроки");<br> ЧасовНакопительно = ЧасовНакопительно + ВыборкаПоПериодам.явка;<br> ОбластьСтрока.Параметры.Заполнить(ВыборкаПоПериодам);<br> ОбластьСтрока.Параметры.явкаНакоп = ЧасовНакопительно;<br> ТабДок.Присоединить(ОбластьСтрока); <br> Иначе<br> ОбластьСтрока = Макет.ПолучитьОбласть("Строка|КолонкаСтроки");<br> ТабДок.Присоединить(ОбластьСтрока); <br> КонецЕсли;<br> КонецЦикла;<br> <br> ИтогЯвка = ИтогЯвка + Выборка.явка;<br> НомерПП = НомерПП + 1;<br> КонецЦикла;<br> <br> КонецЦикла;</pre><br><br><br><br> Помогите пожалуйста с решением проблемы. Заранее благодарен."
Денис (САМАРА)
читатель
офлайн
Дата регистрации: 09.04.2008
Сообщений: 8351
Пост №2
29.12.2011 13:27
Что-то не видно в коде условия на дату принятия сотрудника ни в запросе, ни в цикле обхода выборки данных?
Алавир
читатель
офлайн
Дата регистрации: 20.04.2011
Сообщений: 511
Пост №3
29.12.2011 21:05
Ощущение, что даты у этих проблемных просто сдвинуты назад.<br> <br>В цикле<br>> Для н=0 по КолвоМесяцев Цикл<br>Если сотрудник работал с марта, то нулевой месяц у него будет март, т.к. он в запросе будет первым, и он будет записываться в первый столбец, который собственно не март, а январь.
Мы используем файлы cookie, чтобы анализировать трафик, подбирать для вас подходящий контент и рекламу,
а также дать вам возможность делиться информацией в социальных сетях.
Если вы продолжите использовать сайт, мы будем считать, что вас это устраивает.
X
X
Яндекс-виджет: Новости Яндекс-виджет: Полезные материалы Информеры