29.10.2015, 15:20 | #1 |
Участник
|
Изменить отчет
Коллеги, кто знает Ms Dynamics AX. Помогите, пожалуйста! Не знаю ее вообще (сама - программист 1с) Начальство пристали надо сделать: Изменить существующий отчет, добавив туда новую грапфу.
Сделала: Использую свободное поле в форме. Изменила шаблон отчета, добавила туда грацу. Теперь как я понимаю надо исправить запрос, что бы выводилась эта графа. Подскажите, куда идти в проекте. Два года назад это делала, но не помню ничего! Помогите, пожалуйста! |
|
29.10.2015, 17:45 | #2 |
северный Будда
|
Вы бы для начала написали версию DAX и технологию формирования отчёта (Excel, SSRS и т.п.).
__________________
С уважением, Вячеслав |
|
30.10.2015, 09:03 | #3 |
Участник
|
Доброе утро! Прошу прощения, вот версия:
Ms DAX2009, 5.0.1500.2985 Вот здесь формируется отчет: (моя графа N) #define.startRow(4) public void run() { EAMObjectIncidentJournal incidentJournal; EAMObjectIncidentJournal incidentJ_delayed; EAMDivisionId divisionPrev = ""; Int sumLogged, sumRedirected, sumMismatch, sumAnalized, sumConfirmed, sumPlanned, sumInProgress, sumFixed, sumDismissed, sumPlanning; int sumByDivision, totalSum, totalDelayed,SumPreWorkLong; void put(str _col, anytype _value) { excelDocument.insertValue(strfmt("%1%2", _col, row), _value); } ; super(); row = #startRow; while select count(RecId) from incidentJournal group by EAMDivisionId, statusId where incidentJournal.StatusId != EAMObjectIncidentStatus::Accepted && //incidentJournal.StatusId != EAMObjectIncidentStatus::Fixed && //incidentJournal.StatusId != EAMObjectIncidentStatus:ismissed && incidentJournal.StatusId != EAMObjectIncidentStatus::Empty //&& //incidentJournal.DateToFix && //incidentJournal.DateToFix < today() //incidentJournal.EAMDivisionId like "ТМО*" { if (divisionPrev == "") divisionPrev = incidentJournal.EAMDivisionId; if (divisionPrev != incidentJournal.EAMDivisionId) { select count(RecId) from incidentJ_delayed where incidentJ_delayed.StatusId != EAMObjectIncidentStatus::Accepted && incidentJ_delayed.StatusId != EAMObjectIncidentStatus::Fixed && incidentJ_delayed.StatusId != EAMObjectIncidentStatus:ismissed && incidentJ_delayed.StatusId != EAMObjectIncidentStatus::Empty && incidentJ_delayed.DateToFix && incidentJ_delayed.DateToFix < today() && incidentJ_delayed.EAMDivisionId == divisionPrev; put("A", divisionPrev); put("L", sumByDivision); put("M", incidentJ_delayed.RecId); put("N", SumPreWorkLong); divisionPrev = incidentJournal.EAMDivisionId; totalSum += sumByDivision; totalDelayed += incidentJ_delayed.RecId; sumByDivision = 0; row++; } sumByDivision += incidentJournal.RecId; switch (incidentJournal.StatusId) { case EAMObjectIncidentStatus::Logged: put ("B", incidentJournal.RecId); sumLogged += incidentJournal.RecId; break; case EAMObjectIncidentStatus::Redirected: put ("C", incidentJournal.RecId); sumRedirected += incidentJournal.RecId; break; case EAMObjectIncidentStatus::Mismatch: put ("D", incidentJournal.RecId); sumMismatch += incidentJournal.RecId; break; case EAMObjectIncidentStatus::Analyzed: put ("E", incidentJournal.RecId); sumAnalized += incidentJournal.RecId; break; case EAMObjectIncidentStatus::Confirmed: put ("F", incidentJournal.RecId); sumConfirmed += incidentJournal.RecId; break; case EAMObjectIncidentStatus::Planned: put ("G", incidentJournal.RecId); sumPlanned += incidentJournal.RecId; break; case EAMObjectIncidentStatus::InProgress: put ("H", incidentJournal.RecId); sumInProgress += incidentJournal.RecId; break; case EAMObjectIncidentStatus::Fixed: put ("I", incidentJournal.RecId); sumFixed += incidentJournal.RecId; break; case EAMObjectIncidentStatus:ismissed: put ("J", incidentJournal.RecId); sumDismissed += incidentJournal.RecId; break; case EAMObjectIncidentStatus::Planning: put ("K", incidentJournal.RecId); sumPlanning += incidentJournal.RecId; break; default : break; } } put("A", divisionPrev); put("L", sumByDivision); select count(RecId) from incidentJ_delayed where incidentJ_delayed.StatusId != EAMObjectIncidentStatus::Accepted && incidentJ_delayed.StatusId != EAMObjectIncidentStatus::Fixed && incidentJ_delayed.StatusId != EAMObjectIncidentStatus:ismissed && incidentJ_delayed.DateToFix && incidentJ_delayed.DateToFix < today() && incidentJ_delayed.EAMDivisionId == divisionPrev; put("M", incidentJ_delayed.RecId); totalSum += sumByDivision; totalDelayed += incidentJ_delayed.RecId; row++; excelDocument.Borders(strFmt("A%1:M%2",#startRow,row)); excelDocument.Bold(strFmt("A%1:M%1",row)); excelDocument.Bold(strFmt("L%1:L%2",#startRow, row)); excelDocument.Bold(strFmt("M%1:M%2",#startRow, row)); excelDocument.Color(strFmt("M%1:M%2",#startRow, row),3); put ("A", "ИТОГО:"); put ("B", sumLogged); put ("C", sumRedirected); put ("D", sumMismatch); put ("E", sumAnalized); put ("F", sumConfirmed); put ("G", sumPlanned); put ("H", sumInProgress); put ("I", sumFixed); put ("J", sumDismissed); put ("K", sumPlanning); put ("L", totalSum); put ("M", totalDelayed); } |
|
30.10.2015, 09:52 | #4 |
Участник
|
Судя по всему в новую графу нужно выводить данные из соответствующего поля таблицы EAMObjectIncidentJournal?
Выводить нужно только в итоги? (сейчас вы добавили вывод только там) Суммировать нужно данные из всех строк, или только из строк с определённым статусом? Предварительно код который вам нужен: X++: select sum(PreWorkLong) from EAMObjectIncidentJournal where EAMObjectIncidentJournal.EAMDivisionId == divisionPrev; sumPreWorkLong = EAMObjectIncidentJournal.PreWorkLong; |
|
30.10.2015, 11:58 | #5 |
Участник
|
Спасибо огромное за ответ!
Суммировать надо для всех строк (по подразделениям). На этом форуме не нашла где вставить файл? Последний раз редактировалось KusmAX; 30.10.2015 в 12:08. |
|
30.10.2015, 12:11 | #6 |
Участник
|
Вот файл
Последний раз редактировалось KusmAX; 30.10.2015 в 12:13. |
|
02.11.2015, 10:51 | #7 |
Участник
|
Коллеги, мне нужно посчитать сумму для графы N (в т.ч. Блок2) по подразделениям, но с условием:
Поле PreWorkLong=2. Не по статусам, а по этому условию. Подскажите как? |
|
02.11.2015, 13:42 | #8 |
Участник
|
Коллеги, я сделал все. Спасибо!
|
|
|
|