Я программист на Делфи, новичек в Аксапте. Возникла проблема при переносе отчета с 4-ки на Ах 2009 . Отчет- кассовая книга для Украины. Отчет переносился копи-пастом с одной машины на другую (методы), а все объекты создавались заново, и свойства менялись вручную на оригинал Ах 4. Отчет запускается из класса, отчет имеет генериремый дизайн из кучи секций.
Проблема следующая: в оригинале отчет выводит проведенные записи из журнала ордеров, каждая дата-в новом листе. Если за один день было 5 кассовых ордеров --то на одном листе список ордеров кассы из 5 штук(плюс кучу разных итогов).
У меня отчет выводит 5 листов, по одному листу на каждый ордер. Причем на каждом листе все выглядит нормально- все хидеры и футеры на месте. Только итоговые суммы за день выводятся на первом листе, на остальных они пустые, но секции прорисовываются.
В отчете метод run не перекрыт, зато перекрыт fetch, сокращенно такой:
X++:
if (this.queryRun().prompt())
{
while (this.queryRun().next())
{
RCashTrans = this.queryRun().get(tableNum(RCashTrans));
_rCashTrans = RCashTrans::find(cashAccount,
RCashTrans.DocId,
RCashDocType::Correction,
RCashTrans.TransDate);
RCashTrans = this.queryRun().get(tableNum(RCashTrans));
element.send(RCashTrans);
}
}
Исходя из этого, возник вопрос: Как правильно работает отчет?
По Андерсену dialog->run->fetch->send->print, т.е. element.send(RCashTrans) посылает первую запись запроса, для нее обрабатываются prolog, header, groupSection.Header, groupSection.Body, groupSection.Footer, Footer, Epilog. Если в какой-то секции есть element.execute(название), то выполняется она и снова та секция, из которой она вызвалась? Потом то же самое для следующей записи (while (this.queryRun().next())? Как тогда попадают все записи запроса в секцию Body одним списком?
Или, все секции выполняются единожды, а секция Body прорабатывает все записи?
Или, все секции execute для каждой записи, а потом неперекрытый метод run делает им print, и тут то они печатают, все что наделали? А заголовки и футеры тогда как?