02.10.2005, 23:12 | #1 |
Участник
|
Логика работы метода fetch
Привет всем.
Столкнулся с проблемой. Не могу воссоздать метод fetch вручную по дизайну отчета. В смысле, есть дизайн. По super() строится отчет (3 датасорса в иерархии) А я хочу тоже самое сделать вручную. Типа while (queryRun.next()) { table1 = qr.get(tableNum(Table1)); if (qr.changed(tableNum(table1)) { this.send(table1); } .... } Не получается - проблема со вторым датасорсом - там body пустой, а только футера две штуки есть. И соответственно выводится должны после данных (body) третьего датасорса, вложенного в этот. (притом, что в футере выводится сумма по колонке из третьего датасорса, и поэтому он еще и ошибку выводит что поле не существует) Короче, вопрос в чем - кто-то может толково объяснить, как по отчету Аксапта строит выполнение метода fetch() Спасибо |
|
03.10.2005, 18:03 | #2 |
----------------
|
В метод send воткни отладочную печать (что посылается) и зауписти с родным fetch.
Потом воспоризведи эту последовательность вызовов в своем fetch. |
|
03.10.2005, 18:05 | #3 |
Участник
|
а как ее воткнуть можно детальней?
В смысле галку включить мониторинга вызова методов? |
|
03.10.2005, 21:59 | #4 |
Участник
|
Wamr, сделал по твоему совету.
В info() в методе send() выводу входные параметры Info Сообщение (20:48:00) CustTable - 1 - true Info Сообщение (20:48:00) CustTrans - 2 - true Info Сообщение (20:48:00) CustTransOpen - 3 - true Info Сообщение (20:48:00) CustTrans - 2 - true Info Сообщение (20:48:00) CustTransOpen - 3 - true Info Сообщение (20:48:00) CustTrans - 2 - true Info Сообщение (20:48:00) CustTransOpen - 3 - true Info Сообщение (20:48:00) CustTrans - 2 - true Info Сообщение (20:48:00) CustTransOpen - 3 - true Но если делаю такую же последовательность вручную PHP код:
Неверное поле - 2 раза - из-за того, что в footer CustTrans два поля суммирования по полям CustTransOpen Понимаю, что решать это надо с помощью функции this.addPendingSums(); Но пока не получилось ее куда-то прилепить, чтобы футер отобразился в правильном положении. И еще, помимо этого, не печатается второй футер - тоже знаю почему, не знаю как побороть. В executeQuery второго футера CustTrans стоит проверка переменной if (value) super(); А эта переменная забивается в executeSession() CustTransOpen - третий уровень. и она не заполняется как надо. Запутанно как-то. Но, может еще есть умные идеи. Буду очень признателен. |
|
|
|