BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование отчетов  / Расчет среднего/часового заработка

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Расчет среднего/часового заработка
 
Здравствуйте!
Подскажите пожалуйста, как сделать чтобы часы из табличных док. (Табель раб. врем.) выходили в отчете.
 
Если Вы имеете ввиду "вечерние, ночные и сверхурочные часы", для которых в этом отчете есть отдельная колонка, то Вам нужно в карточке запроса отчета поставить галочку для соответствующей колонки табеля. (Список этих колонок находится в правом нижнем углу карточки запроса под заголовком "Вечерние и ночные часы")
 
Нет не это имела ввиду. Там есть колонка Число рабочих дней/часов. Вот в ней не выходят часы.
 
В этой колонке выводятся дни/часы из табеля. Если часов нет - значит в табеле эти часы не проставлены.
 
А они берутся из Табличных док.(Табель) или Табель рабочего времени.
 
Они берутся из "Табель рабочего времени". Это таблицы salary\table.dbf и(или) salary\arc\arc_tab.dbf, поле IDay - дни, поле IHour - часы.
 
Текст запроса.

sel ect tnum,sum(timeh) as s2,type,inout,cperiod fr om salary_arc_arc_acc
cgroup by c.tnum, c.cperiod
where (c.type='+')and((c.inout='ЗРС')or
(c.inout='РЕ2')or(c.inout='ЗР1')or(c.inout='ЗР')
or(c.inout='ТР1')or(c.inout='ТР2')or(c.inout='ТАР'))
and(c.cperiod<=:endPeriod)and(c.cperiod>=:begPeriod)

Подскажите где этот запрос надо вписать. Для вывода часов в справке Расчет среднего дневного/часового заработка.
 
Самый простой способ - добавить в отчет компонент "Запрос к БЭСТ" и там написать запрос
sel ect tnum, sum(timeh) as s2, type, inout, cperiod
fr om salary_arc_arc_acc as c
group by c.tnum, c.cperiod
where (c.type='+')and((c.inout='ЗРС')or
(c.inout='РЕ2')or(c.inout='ЗР1')or(c.inout='ЗР')
or(c.inout='ТР1')or(c.inout='ТР2')or(c.inout='ТАР'))
and(c.cperiod=:pPeriod)and(c.TNum=:pTNum)

А на секции MasterData83 в событии OnBeforePrint написать скрипт:
Query1.Close;
Query1.Params['pTNum'] := [DialogForm.DS_tnum."TNUM"];
Query1.Params['pPeriod'] := [DialogForm.DS_tnum."FPERIOD"];
Query1.Open;
Потом в колонке "Числол рабочих дней (часов)" написать [DialogForm.Query1."S2"]

Чтобы работало быстрее надо на основе фоксового источника bdf.salary.salary_average_earnings создать пользовательский,
в нем перед формированием курсора cur_rez1 написать Ваш запрос, а потом результат запроса по LEFT OUTER JOIN
прицепить к курсору cur_rez1 (по аналогии с тем, как это делается для cur_tbl2). Затем сделать копию отчета, в которой источник
bdf.salary.salary_average_earnings заменить на новый пользовательский. И поле IHOUR в шаблоне отчета заменить на поле S2.
 
Сделала как вы сказали. Теперь выходит ошибка "Не может преобразовать String в Double".
 
Проверил у себя - такой ошибки нет. Надо ещё для Query1 в свойстве Params указать типы параметров String. Но Ваша ошибка видимо не из-за этого. Попробуйте определить в каком месте ошибка возникает: при открытии запроса, или в поле при выводе значения [DialogForm.Query1."S2"]. Если не разберётесь - пришлите Ваш шаблон.
 
Не разобралась. Прикрепляю шаблон. Посмотрите пожалуйста.


Расчет среднего дневного-часового заработка.rar (8.17 КБ)
 
Файл в архиве почему-то имеет расширение FRT вместо FRF, а при попытке загрузить его в дизайнере отчетов выходит сообщение о неверном FRF-формате.
 
Расчет среднего дневного-часового заработка(опыт).rar (8.15 КБ)
Я не втом формате выгрузила.
 
Расчет среднего дневного-часового заработка(исправл).rar (8.16 КБ)
Ошибки в шаблоне исправил. У меня отчет сформировался, но данных (цифр) не было - это видимо база такая.
Правки сделал в самом SQL-запросе, изменил имя выводимого поля в шаблоне и по другому рассчитал сумму в итоговой строке.
Изменено: Сергей Введенский - 05.07.2013 15:46:24
 
Сергей Введенский пишет:
Цитата
Самый простой способ - добавить в отчет компонент "Запрос к БЭСТ" и там написать запрос
sel ect tnum, sum(timeh) as s2, type, inout, cperiod
fr om salary_arc_arc_acc as c
group by c.tnum, c.cperiod
where (c.type='+')and((c.inout='ЗРС')or
(c.inout='РЕ2')or(c.inout='ЗР1')or(c.inout='ЗР')
or(c.inout='ТР1')or(c.inout='ТР2')or(c.inout='ТАР'))
and(c.cperiod=:pPeriod)and(c.TNum=:pTNum)

А на секции MasterData83 в событии OnBeforePrint написать скрипт:
Query1.Close;
Query1.Params['pTNum'] := [DialogForm.DS_tnum."TNUM"];
Query1.Params['pPeriod'] := [DialogForm.DS_tnum."FPERIOD"];
Query1.Open;
Потом в колонке "Числол рабочих дней (часов)" написать [DialogForm.Query1."S2"]
Сделал как было написано тут, все работает спасибо. :happiness:
Сайт Ювентус
 
А у меня у всех работников одни те же часы выходят. Один раз посчитал и запомнил и во всех справках выходят эти часы.
 
Добавьте в конце SQL-запроса условие
and(c.TNum=:pTNum)
а между операторами
Query1.Close;
и
Query1.Open;
вставте оператор
Query1.Params['pTNum'] := [DialogForm.DS_tnum."TNUM"];
В Вашем шаблоне эти моменты были упущены.
 
Спасибо большое! Все получилось! :best:
Страницы: 1
Читают тему (гостей: 1)