Показать сообщение отдельно
Старый 25.09.2007, 18:16   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Angry Пропадает значение Range при экспорте проекта
Есть такой метод SysQuery::valueEmptyString(), который возвращает, так сказать, обозначение для пустого значения поля - две двойные кавычки. Если делать запрос не программно через всякие QueryBuildDataSource/QueryBuildRange, а "визуально" в AOT, то там нужно для поиска записей с пустым полем указать эти две двойные кавычки в значении Range. Все замечательно, запрос проверен, код, его использующий, отлажен, переносим проект на тестовое (или рабочее) приложение через экспорт-импорт. И тут-то нас ожидает подстава со стороны ядра Аксапты: при выгрузке запросов из AOT'а значение таких Range будет утеряно! Т.е. буквально вместо
Код:
Value               #""
в файл проекта будет выгружено
Код:
Value               #
после чего запрос, естественно, будет давать «немного» иные результаты. К счастью, коллегой был найден workaround, позволяющий не откатываться к программному созданию запросов: можно в качестве значения Range указать не просто "", а ((имя_поля="")), где имя_поля соответствует полю, на котором задается Range. И хотя гибкость использования запросов AOT от этого снижается - это все же лучше, чем вообще покорежить запрос при переносе проекта...

Проверено на AX 3 SP3, AX3 KR3.