16.04.2021, 17:10 | #1 |
Участник
|
В пакетнике(!) не проходит цикл
Создал пакетник. Цель - вывести excel отчет - его в рассылку определенным лицам.
используется наследник ComExcelDocument_RU_Server - серверный от базового стандарта. сейчас баг в том, что в пакетном режиме на почту приходит пустой отчет. только шапка. Т.е. заполнение цикла значениями(данными) не проходит. В непакетном режиме все ок. Т.е. внутрь цикла не попадаем в пакетном режиме. X++: while select oOProblemTable where oOProblemTable.Confirmed && oOProblemTable.ConfirmationDate >= dt && oOProblemTable.ConfirmationDate <= dtEND join PIN, SObjectType, SObjectGroupId, CustGroupId, SObjectCategoryId, InstallDate, smmMountingOrganisationAccount, smmDealerAccount, Installer, ActivationDate, createdDateTime, Address, ProblemReasonId, ServiceDistrictId,ManagerIdPersonal, RecId, CustGroupId FROM sObject where sObject.PIN == oOProblemTable.PIN && sObject.SObjectType == VK6_SObjectType::Stationary && sObject.ServiceDistrictId == smmServiceDistrictId join Name FROM smmBusRelTable where smmBusRelTable.busRelAccount == sObject.smmClientAccount EXISTS JOIN * FROM OOProblemClass WHERE OOProblemTable.ProblemClassId == OOProblemClass.ProblemClassId NOTEXISTS JOIN * FROM SOServiceRequests WHERE OOProblemTable.SOServiceReqId == SOServiceRequests.Number && (SOServiceRequests.eMPLiD) && ((SOServiceRequests.RequestDate >= tDate) || (SOServiceRequests.Status == 2)) Последний раз редактировалось Loengrinchik; 16.04.2021 в 17:20. |
|
16.04.2021, 18:06 | #2 |
Участник
|
CurrentList не забыли наполнить переменными ?
pack\unpack и всё такое.
__________________
Дмитрий |
|
16.04.2021, 18:53 | #3 |
Участник
|
Да, предыдущий комментарий, вероятно, прав.
Ну и вообще - убедитесь что параметры в этом while select у вас верные (все эти ваши tDate и т.д.), выведите их куда-нибудь в инфолог, например. |
|
|
За это сообщение автора поблагодарили: Loengrinchik (1). |
19.04.2021, 12:16 | #4 |
Участник
|
Оказалось тип DateTime (TransDateTime) в пакетном режиме в инфолог выводит пустую строку. Т.е не работает этот тип в пакете.
|
|
19.04.2021, 12:28 | #5 |
Участник
|
|
|
19.04.2021, 12:36 | #6 |
Участник
|
|
|
19.04.2021, 14:00 | #7 |
Участник
|
Цитата:
что опять же подталкивает к первому комментарию о том, что распаковка-упаковка сделаны неверно и переменная просто в пакетном режиме не инициализирована |
|
20.04.2021, 11:25 | #8 |
Участник
|
А он от какго класса наследуется?
ПС У нас просто такого класса нет, есть ComExcelDocument_RU так он наследуется в итоге от ComOfficeDocument_RU, который к RunBaseBatch ни какого отношения не имеет. подробно тут разжевано когда что инициализируется Создание пакетного задания DAX 2009 |
|
20.04.2021, 17:26 | #9 |
Участник
|
Создаём копию класса. Перед циклом делаем вывод всех переменных (dt, dtEnd и т.д) в таблицу лога (либо создать табличку ради такого дела). Остальной код можно либо убрать либо оставить (на усмотрение автора).
Запускаем класс разово в пакете. Смотрим что записалось в таблицу лога. Профит! |
|
21.04.2021, 10:33 | #10 |
Участник
|
Цитата:
Сообщение от smailik
Создаём копию класса. Перед циклом делаем вывод всех переменных (dt, dtEnd и т.д) в таблицу лога (либо создать табличку ради такого дела). Остальной код можно либо убрать либо оставить (на усмотрение автора).
Запускаем класс разово в пакете. Смотрим что записалось в таблицу лога. Профит! Что тип не "работает" - я имел ввиду, что никакая моя запись - ни через DateTimeUtil::newDateTime - ни через запись вида 2018-12-31T21:00:00(напрямую в коде) ни через преобразование вида str2datetime( - в итоге в строковое поле таблички пишет пусто. При этом не в пакетном режиме все ок. Последний раз редактировалось Loengrinchik; 21.04.2021 в 11:36. |
|
21.04.2021, 12:17 | #11 |
Участник
|
Для разбирательства очень помогло бы полное содержание методов main, dialog, getfromDialog, pack, unpack ну и run до кучи
|
|
21.04.2021, 12:28 | #12 |
Участник
|
|
|
21.04.2021, 13:13 | #13 |
Участник
|
|
|
21.04.2021, 13:18 | #14 |
Участник
|
И classDeclaration еще бы посмотреть.
|
|
23.04.2021, 16:01 | #15 |
Участник
|
временные таблицы принимают участие в этом забеге?
__________________
Felix nihil admirari |
|
23.04.2021, 18:18 | #16 |
Участник
|
Физически пакетное задание - это запись в таблице Batch. Найдите запись в этой таблице, соответствующее Вашему пакетному заданию (по id класса или по тексту названия), откройте таблицу через обозреватель таблицы через AOT в Axapta и перейдите к нужной записи
Те параметры, которые передаются через pack/unpack в пакетное задание - это содержимое поля batch.Parameters. Это контейнер. В обозревателе таблиц если щелкнуть мышкой по этому полю, то откроется специальная формочка для просмотра его содержимого. Вот и посмотрите, что реально записалось в этот контейнер. Какие реквизиты
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: S.Kuskov (5), Loengrinchik (1). |
24.04.2021, 18:00 | #17 |
Сенбернар
|
Только что столкнулся: переделывал очередной "унаследованный" классик, типа RunBaseBatch.
Добавляю CurrentList, добавляю туда альтернативный е-мейл, чтобы поьзователей не дергать попусту (тестирование на продуктовой базе, иначе там никак. А оно е-мейлы рассылает...). Задаю свой е-мейл - из пакета отправка идет пользовтелю... долго смотрел, пока не увидел, что pack-unpack в этом классе вообще нет, и работают pack-unpack родителя... Занавес )))
__________________
Best Regards, Roman |
|
26.04.2021, 17:09 | #18 |
Участник
|
Да, всем спасибо, разобрался.
Действительно, в параметрах Batch не были заполнены даты. |
|