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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.07.2020, 18:34   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Query (как строка) - как прочитать в Query object?
Привет Аксаптоведы!

Что-то я подзабыл чуть игрушки с контейнерами

У меня есть упакованная квери в строковом виде, типа 0x07FD30070300004A012F273500360.....FF

Из Х++ хочу эту строку преобразовать в Query (или QueryRun) объект

Пробовал BinData::stringToData(), ContainerClass::blobToContainer(), но что-то как-то все неудачно.

Хелп
Старый 01.07.2020, 18:53   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Пример, чтоб было понятнее

X++:
    public static void main(Args _args)
	{
        str val = "0x07FD30C10400004A012F27330035003600330037003100350031003300340037007C00330035003600330037003100350031003300340039000000110001E8033000330035003600330037003100350031003300340037007C00330035003600330037003100350031003300340039000000E649A10000000A4DF70300000000840457004D0053004C006F0063006100740069006F006E000000110001E803180057004D0053004C006F0063006100740069006F006E000000E209180057004D0053004C006F0063006100740069006F006E000000094DE80300000000920402001100010000FFFFFFFF860469006E00760065006E0074004C006F0063006100740069006F006E00490064000000110001E803220069006E00760065006E0074004C006F0063006100740069006F006E00490064000000E209180057004D0053004C006F0063006100740069006F006E000000D60D180057004D0053004C006F0063006100740069006F006E000000E309220069006E00760065006E0074004C006F0063006100740069006F006E00490064000000DA69360031000000C41901000000000001860477004D0053004C006F0063006100740069006F006E00490064000000110001E8031C0077004D0053004C006F0063006100740069006F006E00490064000000E209180057004D0053004C006F0063006100740069006F006E000000D60D180057004D0053004C006F0063006100740069006F006E000000E3091C0077004D0053004C006F0063006100740069006F006E00490064000000DA09420030003200410030003100520035005300310042002C0030003200410030003100520035005300320042002C0030003200410030003200520031005300310042000000000000000001FFFF840449006E00760065006E007400440069006D000000110001E803140049006E00760065006E007400440069006D000000E209140049006E00760065006E007400440069006D000000094DE9030000D91900DF19010000920402001100010000FFFFFFFFFFFF840449006E00760065006E007400530075006D000000110001E803140049006E00760065006E007400530075006D000000E209140049006E00760065006E007400530075006D000000094DEA030000D91900DF19010000920402001100010000FFFFFFFF860450006800790073006900630061006C0049006E00760065006E0074000000110001E8031E0050006800790073006900630061006C0049006E00760065006E0074000000E209140049006E00760065006E007400530075006D000000D60D140049006E00760065006E007400530075006D000000E3091E0050006800790073006900630061006C0049006E00760065006E0074000000DA693E0030000000C4190100000000000186044900740065006D00490064000000110001E8E34900740065006D00490064000000E209140049006E00760065006E007400530075006D000000D60D140049006E00760065006E007400530075006D000000E3E94900740065006D00490064000000DAC9540030003100300030000000000000000001FFFFFFFF8F04FFFF00000000000000FFFF8F04FFFF00000000000000FFFF9B04FFFF9A04FFFF00000000000001FFFFFFFF009005000000000000000000000000000000000000000000000000000000000000FF";
        var qCon = BinData::stringToData(val);

        QueryRun qr = new QueryRun(qCon);
    }
Старый 01.07.2020, 18:55   #3  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Ошибки:

Bad container.
Object 'Query' could not be created
Unable to create queryRun
Object 'QueryRun' could not be created
Старый 01.07.2020, 20:36   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А как получена эта строка?

контейнер с точки зрения CLR это массив объектов (object[]) НО есть специальный вид контейнеров, которые отвечают за бинарные данные - это object[] в котором лежит единственный элемент типа byte[].

Когда объект упаковывается он собирает обычные контейнеры. В Clr это будет, например

new object[]{1, 2, 3}

Сответственно, такой контейнер нельзя запихать в BinData и наоборот. Так как он работает только с new object{}{new byte[]{1, 2, 3}}.
Старый 01.07.2020, 20:40   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Строка взята из SQL из поля таблицы, в котором упакована квери
Старый 02.07.2020, 08:05   #6  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А не в первых ли шести байтах проблема? Axapta и BLOB поля
Старый 02.07.2020, 10:19   #7  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Мне кажется проблема в том, что Ванина строка - это не реальная binary string, а вполне себе строчный hexdump двоичной строки. Чтобы с ней что-то делать, надо последовательно, каждые два символа засунуть в num2char(hex2int(substr(...))), потом результаты собрать в уже настоящую двоичную строку и уже ее пробовать передать в BinData::stringtoData()
Старый 02.07.2020, 14:33   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Решил по-другому чуть, но вообще как-то странно.
Я почти уверен, что я что-то такое уже раньше делал без особых проблем.

Спасибо за ответы, и всем привет!
Старый 02.07.2020, 14:37   #9  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Спасибо за ответы, и всем привет!
Отвечу в духе вашего Джориса.
Старый 07.07.2020, 13:20   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
ContainerClass с BinData надо объединить
И "0x" из строки выкинуть

X++:
var qCon = ContainerClass::blob2Container(BinData::stringToData(val));
Запрос WMSlocation, если что)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: trud (2), Logger (5), Raven Melancholic (2).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
alirazazaidi: Build Dynamics Query in Dynamics 365 for Finance and Operations – Video Webcast MsDyn365FO Blog bot DAX Blogs 0 11.10.2018 08:12
vasantharivali: Using AOT Query Object in X++ Code Blog bot DAX Blogs 0 17.11.2012 11:12
Malaysia: Building a query object Blog bot DAX Blogs 0 06.11.2012 15:11
palleagermark: Shortcut to the query object of a form data source Blog bot DAX Blogs 1 07.01.2009 18:33

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

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

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