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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.08.2004, 14:26   #41  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Re: Кстати, вот в этих местах возможны проблемы с отрицательным RecId
Цитата:
Изначально опубликовано George Nordic
\Data Dictionary\Tables\CommissionSalesRep\Methods\validateField
\Data Dictionary\Tables\CommissionSalesRep\Methods\validateField
..
\Forms\RAssetBalance\Methods\init
\Reports\WebCmNewsArticle\Methods\init
Я ВЫБОРОЧНО ткнулся в несколько классов - везде делается

PHP код:
select count(RecIdfrom table 
потом

PHP код:
if (table.RecId 1
т.е. не все так плохо
Старый 13.08.2004, 14:28   #42  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Андрей, а можешь привести пример, где сравниваются два RecId (без использования агрегатных функций) кроме как на неравенство?
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.08.2004, 14:43   #43  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Ну, я просто глубже не копал... конечно, не во всех этих случаях ошибка.. Если кто-нибудь занялся бы, да и нашел бы в этом списке все случаи, где действительно есть ошибка - вот это, я понимаю, дело! Но, как я смотрю, таких мест не очень много.. к счастью

Кстати, е если RecId 1 < RecId 2? RecId 1 = -1, RecId2 = 2 000 000 000 ?
Так что самый трабл, как уже указал многоуважаемый Андрей, именно при переходе от + к -
Старый 13.08.2004, 14:50   #44  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Вот я и говорю, что что-то не могу припомнить, где так делают:
Цитата:
Изначально опубликовано George Nordic
RecId 1 < RecId 2
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.08.2004, 14:58   #45  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Андрей, а можешь привести пример, где сравниваются два RecId (без использования агрегатных функций) кроме как на неравенство?
Напрямую в коде - нет. Но, если ты посмотришь на таблицу tmpInventModel, то там есть индекс, в который входит recId.
А в коде, отвечающим за пересчет себестоимости (например InventCostItemDim.updateModelFIFOLIFO), периодически встречается такой код:

PHP код:
 select reverse tmpIssue    index dateIdx 
То есть, используя индекс, мы закладываемся на определенный порядок записей (то же самое сравнение), который в свою очередь зависит от recId.
Это используется, например, при подборе проводки для сопоставления в том случае, если в один день было несколько подходящих проводок.
Старый 13.08.2004, 15:04   #46  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Изначально опубликовано Maxim Gorbunov Вот я и говорю, что что-то не могу припомнить, где так делают:
Так я подскажу:
\Data Dictionary\Tables\WMSLocation\Methods\BMNewRecord
\Data Dictionary\Tables\WMSLocation\Methods\BMNewRecord
\Data Dictionary\Tables\TmpRTax25LedgerAccountList\Methods\findRecIds
\Classes\ProdMultiScheduling\updateProdDeleted

А вот и меньше 0

\Data Dictionary\Tables\LedgerRRGCellDefVal_RU\Methods\addDefaultValue
\Classes\WebFormHtml\controlName
\Classes\WebFormHtml\setControls
\Classes\WebFormHtml\setControls
\Classes\WebLookupWeblet\run
\Classes\WebDateLookupWeblet\run
\Classes\WebCustomLookupWeblet\run
\Classes\webTableLookup\run
\Classes\webTableLookup\run
\Forms\ReqTransExplosionSetup\Data Sources\TmpReqExplosionTree\Methods\executeQuery
\Forms\ReqTransExplosionSetup\Data Sources\InventDimParm\Methods\executeQuery

Немного.. В основном - не по делу..
Старый 13.08.2004, 15:08   #47  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Вообще, как я понял - гиблое это дело, RecId сравнивать...

Ярослав, а Ваш скрипт учитывает подобне проблемы?

С Уважением,
Георгий
Старый 13.08.2004, 15:10   #48  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
\Classes\ProdMultiScheduling\updateProdDeleted
Так там же count.

Цитата:
\Data Dictionary\Tables\TmpRTax25LedgerAccountList\Methods\findRecIds
Опять же, ничего криминального не увидел.


Остальное проверять не стал.
Старый 13.08.2004, 15:11   #49  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Да, хотел написать то же самое, что и Андре.

Дополнение: в \Classes\ProdMultiScheduling\updateProdDeleted тоже Count сначала.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.08.2004, 15:13   #50  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано Андре
То есть, используя индекс, мы закладываемся на определенный порядок записей (то же самое сравнение), который в свою очередь зависит от recId.
Это используется, например, при подборе проводки для сопоставления в том случае, если в один день было несколько подходящих проводок.
ИМХО, это не более криминально, чем то, что написано в \Data Dictionary\Tables\TmpRTax25LedgerAccountList\Methods\findRecIds
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.08.2004, 15:14   #51  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Изначально опубликовано Андре
Остальное проверять не стал.
Что ж... будем надеяться, что ничего криминального и там нет. Все-таки, господа, если кто-нибудь наткнется на подобный трабл - киньте в эту ветку, плиз.

С Уважением,
Георгий.
Старый 13.08.2004, 15:15   #52  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Кстати, был в какой-то ветке вопрос (в какой, уже не помню), какие таблицы не переживут дефрагментацию RecId.

Исчерпывающего ответа не дам, но внесу первый вклад:
smmTransLog
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.08.2004, 15:21   #53  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
ИМХО, это не более криминально, чем то, что написано в \Data Dictionary\Tables\TmpRTax25LedgerAccountList\Methods\findRecIds
Да я и не говорил, что это смертельно

Хотя... при поиске проводки для сопоставления по FIFO/LIFO система считает, что раньше произошел тот расход, у которого меньше recId, при одной и той же дате.
Если нам феноменально не повезет, то может получиться так, что мы будем иметь две складских проводки с одной датой и с recId, равными maxPositiv, minNegative value. При этом, по факту, второе списание произошло позже первого, а система посчитает и сопоставит наоборот.
Старый 13.08.2004, 16:16   #54  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Еще две таблицы, которые не перенесут дефрагментацию RecId и экспорт/импорт (только для версии 2.5):
LedgerCorrespondTransLinks_RU
VendPBookUpdLog_RU
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.08.2004, 16:33   #55  
ALES is offline
ALES
Участник
Злыдни
 
220 / 45 (2) +++
Регистрация: 11.08.2004
Исчерпывающий ответ
Цитата:
Изначально опубликовано Maxim Gorbunov
...Исчерпывающего ответа не дам...
Поиск "проблемных" полей, созданных на основе EDT RecId.

...
;
for (i = 1; i <= tableCnt; i++)
{
dt = dictionary.tableObject(dictionary.tableCnt2Id(i));
fieldCnt = dt.fieldCnt();
for (j = 1; j <= fieldCnt; j++)
{
df = dt.fieldObject(dt.fieldCnt2Id(j));
if(! dt.isTmp() &&
! dt.isView() &&
df.type() == TYPES::UserType &&
GLOBAL::isType(df.typeId(), extendedTypeNum(RecId)) &&
! GLOBAL::isType(df.typeId(), extendedTypeNum(RefRecId)) &&
df.name() != "RecId")
info(StrFmt("Таблица - '%1'. Поле - '%2' \n", dt.name(), df.name()));
}
}

Удачи!
Старый 13.08.2004, 16:39   #56  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Ух. Какая полезная ветка.
Перенесу, пожалуй, в проекты.

Спасибо огромное всем участникам.
Ветка не закрывается. Дополнения приветствуются.
Старый 13.08.2004, 17:08   #57  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
За счет его универсальности мы можем снизить цену в разы ...
Пока что цена очень впечатляющаяя.

А нельзя ли сделать более упрощенный (и более дешевый, естесственно) скрипт для тестирования системы на предмет необходимости дефрагментации?

Думаю, и с коммерческой точки зрения это будет выгодно
Старый 13.08.2004, 17:30   #58  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
2ALES,
Поле будет обработано дефрагментацией и импортом, если имеет тип RecId или расширяющий RecId. Такие поля совсем не проблемные.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 13.08.2004, 17:32   #59  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
А нельзя ли сделать более упрощенный (и более дешевый, естесственно) скрипт для тестирования системы на предмет необходимости дефрагментации?
Хм... А что являтся критерием "необходимости дефрагментации" ?

В качестве гипотезы предлагаю такой вариант - количество оставшихся, неиспользованных recId. Зная среднюю скорость "потребления" этих recId несложно предположить сколько "нам осталось"

В данном случае и скрипт то не нужен. Достаточно посмотреть табличку SystemSequences.
Старый 13.08.2004, 19:55   #60  
ALES is offline
ALES
Участник
Злыдни
 
220 / 45 (2) +++
Регистрация: 11.08.2004
2Maxim Gorbunov опыт нескольких успешных проектов по подъему данных, позволяет мне называть поля - ссылки по recId "проблемными".

"Разжовыванья" всей технологии, особенностей реализации конкретных проектов и объяснения причин отдельного рассмотрения "не RefRecId" не будет.
Воспринимайте как выдранный из контекста кусок реального кода, опубликованный именно в том виде, в котором я счел возможным его опубликовать.
Теги
ax3.0, faq, recid, дефрагментирование recid

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Два RecId у одной записи таблицы sparur DAX: Программирование 33 18.12.2006 15:56
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

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

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

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