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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.11.2012, 09:20   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Narayana Посмотреть сообщение
А как тогда все-таки с временными таблицами?
Я это не могу понять.
Вот мы временную таблицу добавили в запрос в качестве дата-сорса.
Если мы такой запрос добавим во View, то поля этой таблицы, равно как и сама временная таблица в свойствах View отражаться не будут.

Почему так?
Скорее всего данное ограничение связано с тем что временные таблицы реализуются не средствами БД, а средствами AOS (приложением аксапты).
К слову сказать в версии AX2012 появились временные таблицы уровня БД.
Цитата:
Сообщение от Narayana Посмотреть сообщение
Ведь View, это ведь просто способ вывести результаты запроса.
Ну, допустим, временная таблица пустая, ну и путь бы запрос давал пустой результат.
Ну, инициализировали значения во временной таблице внутри какого-нибудь метода запроса или таблицы, тогда б и строки отобразились?
Зачем не давать использовать временную таблицу стандартным образом во View???
Нет View это не способ вывести результат запроса (куда вывести?). View это реализация принципа повторного использования кода. Так сказать макрос уровня запросов.
Для вывода результатов запроса на форме или отчёте View не требуется. Просто укажите в свойстве Query узла "Data Sources" имя вашего запроса.

Если по каким-то причинам нужен именно View, то в качестве workaround можно попробовать в RunTime делать постоянную таблицу временной (см. метод xRecord.setTmp()). Либо для промежуточных вычислений использовать постоянные таблицы (потребуется самостоятельно изолировать данные между пользовательскими сессиями).

Последний раз редактировалось S.Kuskov; 09.11.2012 в 09:45.
Старый 09.11.2012, 11:50   #2  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Нет View это не способ вывести результат запроса (куда вывести?). View это реализация принципа повторного использования кода. Так сказать макрос уровня запросов.
Для вывода результатов запроса на форме или отчёте View не требуется. Просто укажите в свойстве Query узла "Data Sources" имя вашего запроса.
Для меня View, это возможность представить данные на очередном шаге бизнес-процесса. В частности, подготовить баланс расчета с агентами, для того чтобы вывести результаты на портале, куда агенты могут заходить в личный кабинет.
Ну, типа, подготовил то, что можно подставить в Data Set для портала и забыл.
В этом случае этот кусочек данных может использоваться и внутри Аксапты, и на портале. Только внутри это выведется в форме, а на портале в контроле ШейрПоинта.
Старый 09.11.2012, 12:19   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Narayana Посмотреть сообщение
Для меня View, это возможность представить данные на очередном шаге бизнес-процесса. В частности, подготовить баланс расчета с агентами, для того чтобы вывести результаты на портале, куда агенты могут заходить в личный кабинет.
Ну, типа, подготовил то, что можно подставить в Data Set для портала и забыл.
В этом случае этот кусочек данных может использоваться и внутри Аксапты, и на портале. Только внутри это выведется в форме, а на портале в контроле ШейрПоинта.
Чесно говоря, у меня недостаточно опыта работы с порталом, что бы утверждать, что предложенный мной workaround будет работоспособен из ШейрПоинта. Возможно более знающие люди вам смогут помочь.

Цитата:
Сообщение от Narayana Посмотреть сообщение
Оператор select я воспринимаю как аргумент функции (в математическом смысле) Query. При этом select имеет внутреннюю реализацию, описанную S.Kuskov-ым.
Кто-то говорит что люди произошли от обезьян, кто-то - что обезьяны от людей, а кто-то, вы представляете, вообще предположил, что друг от друга они не происходили, а произошли от общего предка.

Представьте, что в результате "компиляции" код X++ переводится на некий псевдокод, который потом ядро системы (интерпретатор) способно интерпретировать (выполнить). Так вот и команда "select" и вызов QueryRun.next() компилируется компилятором в "одинаковый" псевдокод. Это моё личное восприятие действительности. Вы можете воспринимать как захотите.

Один интересный факт сейчас вспомнил. В версии AX2009 появилась возможность реализовать UNION. Но возможность эта реализуется только посредством Query. Через синтаксис "select" реализовать UNION не получится. Это так, к слову о первопричинности

Цитата:
Сообщение от Narayana Посмотреть сообщение
Если строка запроса "так или иначе уходит на SQL-сервер", то что получается, - временную таблицу запрос не обрабатывает и оператор select не действует?
Оператор select языка X++ применённый к временной таблице действительно НЕ инициирует реальный SQL запрос к БД.

Последний раз редактировалось S.Kuskov; 09.11.2012 в 12:57.
Старый 09.11.2012, 13:04   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Через синтаксис "select" реализовать UNION не получится.
угу. разработчики аксапты постоянно забывали синхронизировать возможности оператора и Query. Так, долгое время в операторе нельзя было использовать элемент типа-массива. Пичалька.

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Оператор select языка X++ применённый к временной таблице действительно НЕ инициирует реальный SQL запрос к БД.
Не только оператор. Query тоже не инициирует (до версии ax2012)
Теги
query, архитектура, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление поля с определённым типом во всех таблицах. Corel DAX: Программирование 1 20.12.2008 13:37
Достаточно ли изменить дату в таблицах inventTrans, inventTransPosting, VendPackingSlipJour? DmitryS DAX: Программирование 3 18.09.2008 14:37
Проверки заполненных значений в связанных таблицах. miklenew DAX: База знаний и проекты 11 25.12.2007 14:40
Как не использовать relations на таблицах demetra DAX: Программирование 13 14.07.2006 11:00
Осторожнее с CTRL+S на таблицах mit DAX: Администрирование 7 25.07.2005 19:09

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

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

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