Доброго времени суток, дамы и господа.
Подскажите пожалуйста, может кто-либо из вас сталкивался с таким вопросом. Суть - нужно открыть форму(№2) с заранее отсортированным дс из другой формы(№1).
Для этого изпользуются классы FormRun, FormDataSource и QueryBuildRange. В частности вот код -
X++:
QFormRun = ClassFactory.FormRunClass(Args);
QFormRun.init();
QFormDs = QformRun.dataSource(2);
criteria = QFormDs.Query().dataSourceNo(2).addRange(
fieldNum(pgpProjTable,ProjId)); //спозиционировались
criteria.value(pgpProjTable.ProjId); //задали рейндж
QFormRun.Run();
В данном случае код рабочий, однако, когда в другой форме(№3) используется точно такой-же код (необходимо открыть форму №2 с сортировкой того-же дс, но по другому полю), то в строке
X++:
criteria = QFormDs.Query().dataSourceNo(2).addRange(
fieldNum(pgpTaskTable,TaskId)); // вот тут начинаются чудеса :eek:
criteria.value(pgpTasksTable.TaskId);
Аксапта
не позиционируется на необходимое нам поле, а взамен этого выдает позиционирование на другое поле (даже из другой таблицы). В результате в дебаггере видна строка -
criteria = pgpProjId = TN4 , где pgpProjId - это неправильное позиционирование, а TN4 - это правильно полученный TaskId. Что совсем интересно, так это то, что при смене позиционирования на другое поле(TaskName к примеру) Аксапта начнет позиционировать на необходимое поле (т.е. TaskId).
Как говорила некая Алиса - "Всё чудесатее и чудесатее."
З.Ы. Ax 3.0 eng SP2. Заранее благодарю.