Показать сообщение отдельно
Старый 16.10.2008, 11:47   #1  
Sergey Petrov is offline
Sergey Petrov
Участник
 
80 / 19 (1) ++
Регистрация: 03.04.2007
Адрес: Saint-Petersburg, Russia
Вывод в отчёт значения QueryBuildRange
Всем добрый день.

Ax 3.0 CIS SP3 на SQL Server 2000.

Возникла проблема. При формировании Excel-отчёта (класс - потомок RunBaseBatch) используется внешний запрос, критерии которого вводятся пользователем. Запрос строится по CustInvoiceJour (поля InvoiceAccount и InvoiceDate).
В отчёт информация о значениях фильтров выводится следующим образом:
X++:
ComExcelDocument_RU         excelDocument;
...
excelDocument.insertValue("Period", qRun.query().dataSourceTable(tableNum(CustInvoiceJour)).findRange(fieldNum(CustInvoiceJour, InvoiceDate)).value());
excelDocument.insertValue("Client", qRun.query().dataSourceTable(tableNum(CustInvoiceJour)).findRange(fieldNum(CustInvoiceJour, InvoiceAccount)).value());
....
При выполнении отчёта у некоторых пользователей при построении отчёта критерии выводятся в ячейки нормально, а у некоторых появляется сообщение об ошибке: "QueryBuildRange Объект не инициализирован" и отчёт не выполняется.

Если в коде использовать проверку типа
X++:
if (qRun.query().dataSourceTable(tableNum(CustInvoiceJour)).findRange(fieldNum(CustInvoiceJour, InvoiceDate)))
    excelDocument.insertValue("Period", qRun.query().dataSourceTable(tableNum(CustInvoiceJour)).findRange(fieldNum(CustInvoiceJour, InvoiceDate)).value());
то у всех отчёт формируется одинаково (то есть, данные собираются одни и те же, фильтры на запросе отрабатывают), но у тех, у кого раньше отчёт падал с сообщением об ошибке, теперь просто не появляются введённые значения фильтров запроса.
В чём может быть причина такого поведения?