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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.04.2011, 09:31   #1  
Thrice is offline
Thrice
Участник
Аватар для Thrice
 
46 / 10 (1) +
Регистрация: 09.07.2008
Добрый день! Перейдя на SQL базу при работе с Navision, решили использовать это на максимум возможностей. Как вариант начали переводить часть отчетов на Report Server. И тут столкнулись с такой проблемой, необходимо выводить в отчете поля типа Option (Nav), в SQL эти поля хранятся как int. Где же найти связку между int (SQL) и option (NAV)?
Старый 26.04.2011, 11:57   #2  
VProk is offline
VProk
Участник
 
25 / 10 (1) +
Регистрация: 07.03.2007
Если сразу передать значение напрямую не получается, хотя должно, можно просто сконвертировать значение опции в целое:
"...Assume that Number is a numeric value and that Type denotes a field in the Purchase Header table. In the following statement, the system converts the option value into a number:
Number := "Purchase Header".Type"

А вообще значения опции идут по порядку: 0,1,2,3...
Старый 26.04.2011, 13:07   #3  
Thrice is offline
Thrice
Участник
Аватар для Thrice
 
46 / 10 (1) +
Регистрация: 09.07.2008
Прошу прощения, толи я не совсем понял ваше предложение, толи вы не до конца поняли мою потребность.
Я пишу отчет на Report Server, где результатом select является значение "G/L Entry"."Bal. Account Type" (для примера). Мне необходимо чтобы на отчет выводились доступные значения из NAV (Фин. Счет,Клиент,Поставщик,Банк. Счет,ОС,МФ Партнер), но т.к. в SQL данное поле хранится как Int, то я получаю значения 0,1,2... Я как раз и ищу какую то связь между значениями из NAV и значениями из SQL.
Старый 26.04.2011, 13:27   #4  
Cheb is offline
Cheb
Участник
Лучший по профессии 2017
 
138 / 13 (1) ++
Регистрация: 22.09.2002
Адрес: Ростов-на-Дону -> Москва
Думаю, вам нужно добавить доп. таблицу, в которой хранить соответствие между Int и Option для каждой используемой таблицы. По крайней мере, мы именно так делали.
Старый 26.04.2011, 16:56   #5  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Все OptionString + OptionCaption как и прочая информация NAV-полей) хранится в системной таблице Field. Можно программным путём универсальной функцией с помощью RecRef + FieldRef для любого поля достать оттуда в том числе и значения типа Option (и не надо никаких дополнительных таблиц):

Код:
SampleTable и SampleField = таблица и поле таблицы, для которого надо получить значения типа Option; 
Name	             Тype		Length
OptionCaption	     Text		1024

OptionCaption := '';
CLEAR(FieldRef);
RecordRef.OPEN(SampleTable);
IF Field.GET(RecordRef.Number,SampleTable.FIELDNO(SampleField) AND (Field.Type = Field.Type::Option)
THEN BEGIN
  FieldRef := RecordRef.FIELD(Field."No.");
  IF FieldRef.OPTIONCAPTION <> '' THEN BEGIN
    OptionCaption := COPYSTR(FieldRef.OPTIONCAPTION, 1, MAXSTRLEN(OptionCaption));
  END;
END;
RecordRef.CLOSE();
Вот как нечто подобное на SQL сделать: что-то вроде хранимой процедуры, которая Вам и возвращает из НАВ'a OptionCaption из таблицы Field?
Тем более перед обращением к таблице Field надо НАВ'у подставить через GLOBALLANGUAGE соответствующий язык для OptionCaption.
Старый 27.04.2011, 09:09   #6  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Цитата:
Вот как нечто подобное на SQL сделать: что-то вроде хранимой процедуры, которая Вам и возвращает из НАВ'a OptionCaption из таблицы Field?
Тем более перед обращением к таблице Field надо НАВ'у подставить через GLOBALLANGUAGE соответствующий язык для OptionCaption.
Можно было бы сделать не будь таблица Field виртуальной, видимой только из Нава
Старый 27.04.2011, 13:44   #7  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Thrice Посмотреть сообщение
Прошу прощения, толи я не совсем понял ваше предложение, толи вы не до конца поняли мою потребность.
Я пишу отчет на Report Server, где результатом select является значение "G/L Entry"."Bal. Account Type" (для примера). Мне необходимо чтобы на отчет выводились доступные значения из NAV (Фин. Счет,Клиент,Поставщик,Банк. Счет,ОС,МФ Партнер), но т.к. в SQL данное поле хранится как Int, то я получаю значения 0,1,2... Я как раз и ищу какую то связь между значениями из NAV и значениями из SQL.
Вы прям хотите универсальное решение? Оно вам надо? Может простого Case будет достаточно?
Старый 27.04.2011, 15:34   #8  
Thrice is offline
Thrice
Участник
Аватар для Thrice
 
46 / 10 (1) +
Регистрация: 09.07.2008
Цитата:
Сообщение от Alterant Посмотреть сообщение
Вы прям хотите универсальное решение? Оно вам надо? Может простого Case будет достаточно?
ну в целом была мечта об универсальности, т.к. количество отчетов на Report Server растет и много где используются поля типа Option

Всем спасибо за подсказки, будем выкручиваться как нибудь по тругому.
Старый 27.04.2011, 17:22   #9  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Цитата:
Сообщение от rmv Посмотреть сообщение
Можно было бы сделать не будь таблица Field виртуальной, видимой только из Нава
Да ваша правда, забыл по запарке. Привык пользоваться виртуальными таблицами из NAV'а и забыл про SQL.
Старый 28.04.2011, 07:33   #10  
GRIZZLY_imported is offline
GRIZZLY_imported
Участник
 
39 / 10 (1) +
Регистрация: 18.05.2007
А почему нельзя выгрузить записи из виртуальной таблицы в обычную (с фильтром по Option)? Я так понимаю, все равно потребуется предварительная обработка, т.к. OptionCaption вернет значения, разделенные запятыми. А по условиям задачи нам следует преобразовать 0 - в первое значение из списка, 1 - во второе и т.д.
Поэтому, думаю, есть смысл (если в будущем будете активно использовать SQL) отдельную таблицу и настроить периодическую синхронизацию с метаданными Навижна.
А затем из SQL подключать эту таблицу в запросе.
Старый 28.04.2011, 16:48   #11  
Thrice is offline
Thrice
Участник
Аватар для Thrice
 
46 / 10 (1) +
Регистрация: 09.07.2008
Цитата:
Сообщение от GRIZZLY Посмотреть сообщение
А почему нельзя выгрузить записи из виртуальной таблицы в обычную (с фильтром по Option)? Я так понимаю, все равно потребуется предварительная обработка, т.к. OptionCaption вернет значения, разделенные запятыми. А по условиям задачи нам следует преобразовать 0 - в первое значение из списка, 1 - во второе и т.д.
Поэтому, думаю, есть смысл (если в будущем будете активно использовать SQL) отдельную таблицу и настроить периодическую синхронизацию с метаданными Навижна.
А затем из SQL подключать эту таблицу в запросе.
ну видимо придется придумывать что нибудь на подобие этого...
Только очень интересно, как же разработчикам удалось так хорошо запрятать это данные в БД, что их никто так и не сумел от туда выудить?
 

Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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