AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.09.2007, 18:16   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 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.
Старый 26.09.2007, 10:07   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Условие "" эквивалентно условию с незаданной строкой.
Чтобы задать условие "" в коде, кавычки надо экранировать бэкслешем \"\"

То, что ядро трактует "" отлично от незаданной строки - ошибка ядра, а экспорт совершенно прав
См. FAQ: http://axapta.mazzy.ru/lib/emptyqueryrange/
__________________
полезное на axForum, github, vk, coub.
Старый 26.09.2007, 15:33   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
Условие "" эквивалентно условию с незаданной строкой. Чтобы задать условие "" в коде, кавычки надо экранировать бэкслешем \"\"
Спасибо, я в курсе но речь-то идет не про код! Позволю процитировать себя
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Если делать запрос не программно через всякие QueryBuildDataSource/QueryBuildRange, а "визуально" в AOT, то там нужно для поиска записей с пустым полем указать эти две двойные кавычки в значении Range.
Цитата:
Сообщение от mazzy Посмотреть сообщение
То, что ядро трактует "" отлично от незаданной строки - ошибка ядра, а экспорт совершенно прав
Нет, все как раз наоборот. Ядро трактует двойные кавычки правильно, а экспорт корежит работающий запрос, изменяя значения Range value

PS. На картинке слева "квадратик", с которым сравнивается CustInvoiceJour.LedgerVoucher, - это символ с кодом 2, которым Oracle обозначает пустые строки.

Последний раз редактировалось gl00mie; 26.09.2007 в 15:43.
За это сообщение автора поблагодарили: mazzy (5).
Старый 27.09.2007, 00:22   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Ядро трактует двойные кавычки правильно, а экспорт корежит работающий запрос, изменяя значения Range value
Хм... Пока остаюсь при своем. Но буду тестировать. Спасибо.
__________________
полезное на axForum, github, vk, coub.
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как подставить вычисляемое значение в Range у query Poleax DAX: Программирование 16 17.06.2008 18:52
Проблемы при импорте и экспорте проекта FiGr DAX: Прочие вопросы 0 23.05.2006 16:41
Глюк при экспорте веб проекта arnold DAX: Программирование 3 14.07.2005 13:29
Null значение в Range braathe DAX: Программирование 2 26.05.2005 12:33
Клиенты Аксапты версии 3.0 SP3 вылетают при экспорте большого проекта... ddadream DAX: Функционал 3 09.12.2004 13:06
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:01.