AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.07.2019, 15:29   #1  
dark_knight is offline
dark_knight
Участник
 
14 / 10 (1) +
Регистрация: 20.01.2019
расылка писем согласно информации в табеле
Добрый день,

Мне необходимо написать 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]));

    }
Безуспешно.

Подскажите пожалуйста как это сделать? Так же подскажите пожалуйста как организовтаь рассылку писем. В администрировании системы нашел пункт "Обработка сообщений электронной почты". Скорее всего оттуда.

Заранее спасибо.
Миниатюры
Нажмите на изображение для увеличения
Название: 112.JPG
Просмотров: 41
Размер:	216.2 Кб
ID:	12353  

Последний раз редактировалось dark_knight; 23.07.2019 в 15:31.
Старый 24.07.2019, 09:21   #2  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
957 / 325 (12) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Придется подключить таблицу TSTimesheetTrans: посмотрите связь таблицы с TSTimesheetLineWeek, а последней с TSTimesheetTable
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 24.07.2019, 09:35   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,440 / 954 (34) +++++++
Регистрация: 13.01.2004
Записей в блоге: 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  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,440 / 954 (34) +++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от dark_knight Посмотреть сообщение
Так же подскажите пожалуйста как организовтаь рассылку писем. В администрировании системы нашел пункт "Обработка сообщений электронной почты". Скорее всего оттуда.
Да. Туда.

dax2012 \ Администрирование системы \ Периодические операции \ Обработка сообщений электронной почты

Организация рассылки - это создание записей в таблице SysOutgoingEmailTable и SysOutgoingEmailData (если есть вложения). Содержимое можно просмотреть "Состояние отправки сообщения электронной почты"

А собственно рассылка - это запуск пункта меню "Пакет", который просматривает таблицу SysOutgoingEmailTable и по ее содержимому формирует и рассылает сообщения
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обработка из DAX2009 писем в разных почтовых серверах по каким-то общим технологиям Raven Melancholic DAX: Программирование 20 23.06.2018 18:10
Отображение информации QQmore DAX: Программирование 10 06.02.2013 12:32
Чего не хватает из аналитической информации? ollu DAX: Функционал 38 13.03.2009 16:00
Проблема с отсылкой писем через Outlook zelibobis DAX: Программирование 11 26.02.2008 19:27
Время по графику и фактическое время работы в табеле nicko DAX: Функционал 0 09.02.2005 15:24
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 18:04.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.