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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.01.2003, 14:23   #1  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
? Чем грозит использование RecId в качестве ПК?
Создается новая таблица. Нужен первичный ключ. Но не хочется создавать новую номерную серию, запихивать ее еще в одни "настройки", которых и так немало. Зато есть замечательное поле RecId, насквозь уникальное в пределах компании. Возникает естественное желание выбрать его в качестве ключа.

Плюсы:
меньше программирования
на одно поле меньше, запись меньше места занимает
join по целочисленым полям будет шустрее, чем по строкам
Минусы:
пока что вижу только одни грядущие грабли. RecID при экспорте-импорте не восстанавливаются, так что связи таблиц надо будет как-то восстанавливать.

Если больше минусов нет, буду думать, как с этим бороться. Если я еще чего-то серьезного не вижу, ткните пожалуйста носом, выброшу это из головы и буду делать как все
Старый 22.01.2003, 14:31   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
RECID при экспорте/импорте восстанавливаются.
Однако бывают в этом алгоритме глюки, если у тебя два поля с RECID и/или ты включаешь/исключаешь твою таблицу в коллекцию.

На RecID не повесишь свой нумератор.

Никто не гарантирует, что нумерация RecID будет сплошная без дыр. Кстати, никто не гарантирует, что нумерация RecID монотонно возрастает по времени

RECID сугубо программистский инструмент. Если ты завязываешься на него, то тебе нужно будет придумывать, как показывать наименование вместо кода. А Аксапта сделана в расчете, что код является значимым для пользователя. Уж извиини за ссылку http://www.mazzy.ru/axapta/hints/autonumber/index.html

По RECID не будет работать VisualMorphXplorer.

По RecID не будет работать алгоритм изменения кода.

По RecID не будет работать DynaLink. Да и вообще автосвязь между таблицами работать не будет.

Будет меньше информации в перекрестных ссылках.

В общем, чего тебе не нравится свой код? Лениво?
Думаю, что потеряешь ты больше, чем приобретешь.
Старый 22.01.2003, 14:36   #3  
Роман Кошелев is offline
Роман Кошелев
Продавец игрушек
Аватар для Роман Кошелев
 
433 / 73 (3) ++++
Регистрация: 22.11.2001
Адрес: Москва
То, что они теряются при импорте, пожалуй, самое неприятное.
Ещё неприятности могут возникнуть при объединении данных - перенос из компаний в виртуальные компании. Напирмер, некий справочник заводишь как уникальный для каждой из 2-х компаний, а потом понимаешь, что он должен быть единым.

Но есть и более значимый, с моей точки зрения, минус:
- тебе придётся использовать два подхода: ссылки по ключу и ссылки по RecId.
Чем меньше подходов, тем стройнее разработка.

Однако, в самой Аксапте есть места, где ссылаются по RecId. Но это не пример для подражания.
__________________
С уважением, Роман Кошелев.
Старый 22.01.2003, 14:55   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
То, что они теряются при импорте, пожалуй, самое неприятное.
Давно интересовал следующий момент - связки таблиц:

InventSettlement - InventTrans
CustSettlement - CustTrans
VendSettlement - VendTrans

В этих таблицах связка происходит именно по RecId.

Допустим мне нужно перейти на новую базу данных. Ну например я перехожу на новую версию.

Рассуждая, приходим к тому, что что связь между этими таблицами при экспорте/импорте исчезнет. И что делать ? Заново вручную проводить сопоставление ? Та это ж офигеешь. Или плюнуть на историю ?
Старый 22.01.2003, 15:01   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Нет. Если с этими таблицами не происходило существенных изменений, то импорт происходит более-менее корректно.

Плохо будет, если одна из таблиц, участвующих в сопоставлении, станет общей. Или в данных экспорта будут присутствовать не все таблицы, учатсвующие в сопоставлениии.

Я открыл тему RecID при экспорте-импорте не восстанавливаются?

Может туда?
Старый 22.01.2003, 16:27   #6  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
На RecID не повесишь свой нумератор
Собственно от нумератора я и пытался избавиться
Цитата:
Никто не гарантирует, что нумерация RecID будет сплошная без дыр. Кстати, никто не гарантирует, что нумерация RecID монотонно возрастает по времени
Дырки - на здоровье, мне не жалко
Цитата:
RECID сугубо программистский инструмент. Если ты завязываешься на него, то тебе нужно будет придумывать, как показывать наименование вместо кода. А Аксапта сделана в расчете, что код является значимым для пользователя. Уж извиини за ссылку http://www.mazzy.ru/axapta/hints/autonumber/index.html
Придумывать ничего не надо, просто пристыковывать больше таблиц приходится. Ну и лукапы надо будет переписывать. За ссылку спасибо, я это подозревал, но словами сформулировать не мог
Цитата:
По RecID не будет работать DynaLink. Да и вообще автосвязь между таблицами работать не будет.
Создал extended data type, вроде работает
Цитата:
В общем, чего тебе не нравится свой код? Лениво?
Не совсем. Просто генерация ID поля - не такая высокоинтеллектуальная задача, которую для всех новых таблиц хотелось бы реализовывать. А у меня с давних пор и других систем осталась дурная привычка Identity использовать
Старый 22.01.2003, 16:35   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Vadik
Собственно от нумератора я и пытался избавиться
Зря, классная штука.

Цитата:
Изначально опубликовано Vadik
Придумывать ничего не надо, просто пристыковывать больше таблиц приходится. Ну и лукапы надо будет переписывать.
Не только лукапы.
Представь, что клиенты у тебя имеют вместо AccountNum код RecID.
Тогда ВЕЗДЕ, где показываются клиенты нужно будет делать связь.
И в отчетах, и в формах.
Например, в заказах сейчас грид работает по одной таблице и показывает поле из этой же таблицы - Sales.AccountNum. А тебе придется делать join и показывать CustTable.Name.

Кроме того, подумай о поиске! Как ты организуешь пользовательский поиск? Пользователь у тебя сможет искать только по НАИМЕНОВАНИЮ! Со всеми вытекающими

Если "больше таблиц" - это две таблицы вместо одной, то работа увеличивается вдвое! По меньшей мере
Старый 22.01.2003, 16:46   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
В общем, убедили

Всем, кто ответил, спасибо. Буду ломать старые привычки, ничего не поделаешь

2Mazzy:
Цитата:
RECID сугубо программистский инструмент
А ты себя к программистам не относишь?
Старый 22.01.2003, 16:50   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Это неправильно поставленный вопрос

В Аксапте, как правило, решение достигается гораздо эффективнее БЕЗ программирования. Но если приходится, то могу и программировать.

Если ты спрашиваешь про Анкету, то я ответил, что отношу себя к людям, которые настраивают/внедряют.
Старый 23.01.2003, 11:47   #10  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Цитата:
Изначально опубликовано Vadik


Дырки - на здоровье, мне не жалко

Не только дырки, есть еще отрицательные RecId
Старый 23.01.2003, 12:28   #11  
Роман Кошелев is offline
Роман Кошелев
Продавец игрушек
Аватар для Роман Кошелев
 
433 / 73 (3) ++++
Регистрация: 22.11.2001
Адрес: Москва
Лишь бы не комплексные.
__________________
С уважением, Роман Кошелев.
Старый 23.01.2003, 13:50   #12  
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
Надо добавить, что в Axapta 3, при выполнении операции "Проверить идентификаторы записей" в форме SQL-Администрирование, может выполняться перенумерация recid, с соответствующей коррекцией всех ссылок по recid.
Процесс этот проходит очень неспешно, но проблемы отрицательных recid и пропусков в нумерации recid он решает.
Старый 23.01.2003, 13:55   #13  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Надо добавить, что в Axapta 3, при выполнении операции "Проверить идентификаторы записей" в форме SQL-Администрирование, может выполняться перенумерация recid, с соответствующей коррекцией всех ссылок по recid.
Насколько я помню, в 2.5 SP2 - все гораздо хуже. Эта операция всего лишь сдвигает указатель RecId на (максимальное+1) значение в базе.
Старый 08.03.2004, 08:13   #14  
LCh is offline
LCh
Участник
 
104 / 10 (1) +
Регистрация: 13.11.2002
Адрес: Санкт-Петербург
Нет, это не так.
Теги
recid, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Использование формы в качестве диалога vs создание диалога программно Lucky13 DAX: Программирование 3 30.05.2008 13:09
Использование памяти клиентского ПК falcon65 DAX: Администрирование 0 07.11.2007 11:49
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
[ANN] WordSL - использование Word 2003 в качестве визуального редактора xsl... belugin DAX: База знаний и проекты 0 26.09.2006 09:12
Использование индекса по RecId не разрешено! 3oppo DAX: Программирование 1 25.07.2005 14:54

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

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

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