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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.01.2017, 13:42   #1  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
19,985 / 2920 (137) +++++++++
Регистрация: 29.11.2001
Адрес: Москва
вывод в XML только недефолтных значений. а смысл?
предположим, метод isFieldSet проверяет содержится ли в поле некое дефолтное значение или значение, отличное от дефолтного. см ветку xRecord.isFieldSet() - что это? как сейчас правильно проверять наличие поля в базе данных?

тогда я перестаю понимать смысл происходящего в коде метода record2XmlNode:

X++:
        // loop through the fields in the table
        for (f = 1 ; f <= table.fieldCnt() ; f++)
        {
            fieldId = table.fieldCnt2Id(f);
            fieldName = table.fieldName(fieldId);

            if (!fieldId && !_common.isFieldSet(fieldId))
            {
                continue;
            }
другими словами, код выводит в xml только недефолтные значения.
а зачем? в чем глубинный смысл?
типа сократить объем XML? а зачем?
Миниатюры
Нажмите на изображение для увеличения
Название: ax7.PNG
Просмотров: 8
Размер:	32.4 Кб
ID:	11136  
Старый 10.01.2017, 14:13   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2014
 
3,048 / 1489 (56) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Одно из возможных объяснений: если к моменту загрузки дефолтные значения поменяются, то они не затрутся устаревшими.
Старый 10.01.2017, 14:18   #3  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
19,985 / 2920 (137) +++++++++
Регистрация: 29.11.2001
Адрес: Москва
но это означает, что даже после "синхронизации" данных
данные все равно останутся разными.

а зачем?
Старый 10.01.2017, 14:50   #4  
ax_mct is offline
ax_mct
Участник
Аватар для ax_mct
 
1,210 / 312 (13) ++++++
Регистрация: 10.10.2005
Адрес: Страна эля
Как уже написали в той теме для 2012 помимо
Checks whether a field has a Set or Defaulted state.
есть чуть более как
true if field is has a Set or Defaulted state; otherwise, false.
https://technet.microsoft.com/en-us/...sfieldset.aspx

Также рассматривая этот код, я бы заключил что это это аналог "Enabled", а не простановки значения. Так как здесь надо поставить скобки:
Checks whether a field has a (Set or Defaulted) state.

P.S. Может быть даже "Actually in use", так как не конфигурационный "Enabled", а процессный/производный такой "Enabled". Но наверное можно думать об этом как "Enabled".
Цитата:
Как я понял, это просто "признак редактирования" - устанавливается после любой записи в поле и сбрасывается после clear() / update():

Последний раз редактировалось ax_mct; 10.01.2017 в 14:58.
Старый 10.01.2017, 14:54   #5  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
233 / 272 (10) ++++++
Регистрация: 08.08.2007
А вас не смущает условие !fieldId &&, ну т.е. вторая часть которая isFieldSet будет выполнена только если fieldId =0 Хотя скорее всего, если fieldId будет 0, то будет трассировка стека Т.е. выводятся в данном методе все значения в том числе и дефолтные.

ПС. Конечно скорее всего описка и должно было быть что то типа if (fieldId && ! _common.isFieldSet(fieldId)).
__________________
Sergey Nefedov,
IT Magnet

Последний раз редактировалось SRF; 10.01.2017 в 15:06.
Старый 10.01.2017, 15:16   #6  
ax_mct is offline
ax_mct
Участник
Аватар для ax_mct
 
1,210 / 312 (13) ++++++
Регистрация: 10.10.2005
Адрес: Страна эля
Цитата:
Сообщение от SRF Посмотреть сообщение
А вас не смущает условие !fieldId &&, ну т.е. вторая часть которая isFieldSet будет выполнена только если fieldId =0 Хотя скорее всего, если fieldId будет 0, то будет трассировка стека Т.е. выводятся в данном методе все значения в том числе и дефолтные.

ПС. Конечно скорее всего описка и должно было быть что то типа if (fieldId && ! _common.isFieldSet(fieldId)).
Если логика в том чтобы избежать неуправляемого defaulting когда вы ничего с полем не делали, а enum принимает значение 0 и прочее.
Если логика в том что вы должны явно в initValue() ? присвоить default значение или как-то иначе но явно.
Или присвоить - что всегда явно.
То логика есть. Поле с которым ничего явно не сделали - игнорируется.

IF ((нет поля) OR (поле не прошло defaulting или присвоение))
{
continue; // То есть игнорируй
}

То есть defaulting должен быть явным и никак иначе?
Старый 10.01.2017, 15:25   #7  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
19,985 / 2920 (137) +++++++++
Регистрация: 29.11.2001
Адрес: Москва
смущает.
но об этом уже говорил Logger в соседней ветке
давайте про isFieldSet и дефолтные значения туда.

в этой же ветке призываю сосредоточиться на способе генерации XML.
в XML попадают только "не дефолтные" значения.
следовательно, "дефолтные" не передаются между базами данных.
(как определена эта дефолтность не так уж и важно)

насколько правилен такой подход?
насколько я помню ворды-эксели ругали за многословность и объемность именно потому что doc|xls|... содержат все-все-все значения.
но именно эта многословность позволяла легко переходить с версию на версию...

с другой стороны...

в общем, что думаете о самом принципе - запись в XML только недефолтных значений?
плюсы? минусы?
Старый 10.01.2017, 15:27   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,715 / 1797 (67) ++++++++
Регистрация: 16.01.2004
Адрес: Москва
Например, если встретится кастомизированное поле но неизмененное при симметричном разборе не будет ошибки
Старый 10.01.2017, 15:33   #9  
ax_mct is offline
ax_mct
Участник
Аватар для ax_mct
 
1,210 / 312 (13) ++++++
Регистрация: 10.10.2005
Адрес: Страна эля
Цитата:
Сообщение от mazzy Посмотреть сообщение
в XML попадают только "не дефолтные" значения.
Попадают все поля которые имеют Set or Defaulted state. (P.S. не уверен так как нельзя полагаться на help полностью)

Но их Defaulted может быть не то что здесь "не дефолтные".

Последний раз редактировалось ax_mct; 10.01.2017 в 15:48. Причина: P.S.
Старый 10.01.2017, 15:36   #10  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
19,985 / 2920 (137) +++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
Например, если встретится кастомизированное поле но неизмененное при симметричном разборе не будет ошибки
что имеешь в виду под симметричным разбором?

сейчас же действует правило:
если в базе есть поле, а в данных нет - ошибка не возникает.
если в базе нет поля, а в данных нет - ошибка также не возникает. данные игнорируются.
Старый 10.01.2017, 15:43   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,715 / 1797 (67) ++++++++
Регистрация: 16.01.2004
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
что имеешь в виду под симметричным разбором?
Я имею ввиду при разборе сгенерированного XML.

Если там что-то ненулевое, это может быть важно. Соотвественно при импорте правильно не игнорировать что-то важное. Да и отлаживаться удобнее.
Старый 10.01.2017, 16:24   #12  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
 
1,610 / 760 (29) +++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Не очень понятно. А если схема данных, согласованная с другой системой, не допускает отсутствия определенных узлов? А мы оставили в таких полях дефолтные значения, то значит они не выгрузятся?
Старый 10.01.2017, 16:49   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
Сотрудники Microsoft Dynamics
 
3,715 / 1797 (67) ++++++++
Регистрация: 16.01.2004
Адрес: Москва
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Не очень понятно. А если схема данных, согласованная с другой системой, не допускает отсутствия определенных узлов? А мы оставили в таких полях дефолтные значения, то значит они не выгрузятся?
тот код, о котором идет речь, не про схему данных, а про простой вывод записи в xml
Старый 10.01.2017, 17:26   #14  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
Most Valuable Professional
 
19,985 / 2920 (137) +++++++++
Регистрация: 29.11.2001
Адрес: Москва
xml по любому нужен не человеку, а какому-то ПО.
сам подход то не меняется.

можно ли пропускать в некоем машинно-читаемом файле поля с дефолтными значениями?
плюсы/минусы?

очевидный плюс - результирующий файл будет иметь гораздо меньший объем.
есть ли минусы?
Старый 10.01.2017, 18:04   #15  
ax_mct is offline
ax_mct
Участник
Аватар для ax_mct
 
1,210 / 312 (13) ++++++
Регистрация: 10.10.2005
Адрес: Страна эля
Цитата:
Сообщение от mazzy Посмотреть сообщение
xml по любому нужен не человеку, а какому-то ПО.
сам подход то не меняется.

можно ли пропускать в некоем машинно-читаемом файле поля с дефолтными значениями?
плюсы/минусы?

очевидный плюс - результирующий файл будет иметь гораздо меньший объем.
есть ли минусы?
Если это сериализация в одной и той же системе, то смысл есть.

Если это предназначено для другой системы, то неприемлимо. Для уменьшения XML файла есть схема.

Данный кусок это Retail. Каким то образом поле может иметь нулевое ID но при этом использоваться как переменная для передачи. Я бы читал это так. Но Бредово.
Было бы более системным кодом тогда грешил бы на всякие необходимости при mapping. А так если в Retail - то там еще и не такое есть

Последний раз редактировалось ax_mct; 10.01.2017 в 18:10.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
kurthatlevik: AX suggestion: XML Columns and XML indexes Blog bot DAX Blogs 0 28.08.2015 13:11
axStart: How to use XSLT in AIF and what’s wrong with empty xml Nodes. Blog bot DAX Blogs 0 27.04.2008 18:07
Inside Dynamics AX 4.0: The XML Structure Blog bot DAX Blogs 0 04.10.2007 11:20
Inside Dynamics AX 4.0: XML Document Integration Blog bot DAX Blogs 0 04.10.2007 11:20
Отчеты: вывод значений из несвязанных таблиц ArturK DAX: Программирование 1 15.08.2003 11:08
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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


Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:14.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.