23.07.2019, 15:29 | #1 |
Участник
|
расылка писем согласно информации в табеле
Добрый день,
Мне необходимо написать runbasebatch класс который бы автоматическую рассылку писем согласно информации по залогированному в табеле времени. Есть view TSTimeSheetSummaryWeek, которая аггрегирует данные по всем активностям из таблицы TSTimeSheetLineWeek, которая в свою очередт содержит залогированные в табеле данные по каждой активности. В аттаче скриншот. Есть поле во view sumofhours которое суммирует часы по каждой неделе у каждого пользователя и выводит общее число залогированных часов по дням в разрезе недели. Я не знаю как вытащить количество залогированных часов в конкретный день. Пробовал обращаться как к элементу массива: X++: static void Job23(Args _args) { PRJDevTaskTable localDevTaskTable; DirPersonUser dirPersonUser; TSTimesheetTable tsTimesheetTable; TSTimesheetSummaryWeek tsTimesheetSummaryWeek; while select Developper from localDevTaskTable group by Developper join tsTimesheetSummaryWeek group by Worker, dayfrom, dayto where tsTimesheetSummaryWeek.Worker == localDevTaskTable.Developper && (tsTimesheetSummaryWeek.DayFrom <= systemDateGet() && tsTimesheetSummaryWeek.DayTo >= systemDateGet()) { if(DirPersonUser::findWorker(localDevTaskTable.Developper).userInfo().enable != true) continue; info(strFmt("%1 %2 %3 %4 %5", localDevTaskTable.Developper, tsTimesheetSummaryWeek.Worker, tsTimesheetSummaryWeek.DayFrom, tsTimesheetSummaryWeek.DayTo, tsTimesheetSummaryWeek.SumOfHours[1])); } Подскажите пожалуйста как это сделать? Так же подскажите пожалуйста как организовтаь рассылку писем. В администрировании системы нашел пункт "Обработка сообщений электронной почты". Скорее всего оттуда. Заранее спасибо. Последний раз редактировалось dark_knight; 23.07.2019 в 15:31. |
|
24.07.2019, 09:21 | #2 |
Злыдни
|
Придется подключить таблицу TSTimesheetTrans: посмотрите связь таблицы с TSTimesheetLineWeek, а последней с TSTimesheetTable
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
24.07.2019, 09:35 | #3 |
Участник
|
При использовании опции group by в табличной переменной будут заполнены только те поля, которые
1. Входят в список, перечисленный в group by, даже если они не указаны в списке полей для выбора 2. Поля, указанные в списке полей для выбора с агррегирующими функциями sum(), minof(), maxof() У Вас есть group by, но нет аггрегирующих функций. Поэтому все остальные поля в результирующей выборке по tsTimesheetSummaryWeek - пустые Для полей типа массив следует указать суммирующую функцию без указания индекса массива. Будет суммирование по каждому элементу массива в отдельности. Т.е. в данном случае Вы должны использовать такой синтаксис X++: while select Developper from localDevTaskTable group by Developper join Worker, dayfrom, dayto, sum(SumOfHours) from tsTimesheetSummaryWeek group by Worker, dayfrom, dayto where (...) { info(strfmt('...%1...', tsTimesheetSummaryWeek.SumOfHours[1])); }
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
24.07.2019, 09:59 | #4 |
Участник
|
Цитата:
dax2012 \ Администрирование системы \ Периодические операции \ Обработка сообщений электронной почты Организация рассылки - это создание записей в таблице SysOutgoingEmailTable и SysOutgoingEmailData (если есть вложения). Содержимое можно просмотреть "Состояние отправки сообщения электронной почты" А собственно рассылка - это запуск пункта меню "Пакет", который просматривает таблицу SysOutgoingEmailTable и по ее содержимому формирует и рассылает сообщения
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|