![]() |
#1 |
Модератор
|
![]()
Создается новая таблица. Нужен первичный ключ. Но не хочется создавать новую номерную серию, запихивать ее еще в одни "настройки", которых и так немало. Зато есть замечательное поле RecId, насквозь уникальное в пределах компании. Возникает естественное желание выбрать его в качестве ключа.
Плюсы: меньше программирования на одно поле меньше, запись меньше места занимает join по целочисленым полям будет шустрее, чем по строкам Минусы: пока что вижу только одни грядущие грабли. RecID при экспорте-импорте не восстанавливаются, так что связи таблиц надо будет как-то восстанавливать. Если больше минусов нет, буду думать, как с этим бороться. Если я еще чего-то серьезного не вижу, ткните пожалуйста носом, выброшу это из головы и буду делать как все ![]() |
|
![]() |
#2 |
Участник
|
RECID при экспорте/импорте восстанавливаются.
Однако бывают в этом алгоритме глюки, если у тебя два поля с RECID и/или ты включаешь/исключаешь твою таблицу в коллекцию. На RecID не повесишь свой нумератор. Никто не гарантирует, что нумерация RecID будет сплошная без дыр. Кстати, никто не гарантирует, что нумерация RecID монотонно возрастает по времени ![]() RECID сугубо программистский инструмент. Если ты завязываешься на него, то тебе нужно будет придумывать, как показывать наименование вместо кода. А Аксапта сделана в расчете, что код является значимым для пользователя. Уж извиини за ссылку http://www.mazzy.ru/axapta/hints/autonumber/index.html По RECID не будет работать VisualMorphXplorer. По RecID не будет работать алгоритм изменения кода. По RecID не будет работать DynaLink. Да и вообще автосвязь между таблицами работать не будет. Будет меньше информации в перекрестных ссылках. В общем, чего тебе не нравится свой код? Лениво? Думаю, что потеряешь ты больше, чем приобретешь. ![]() |
|
![]() |
#3 |
Продавец игрушек
|
То, что они теряются при импорте, пожалуй, самое неприятное.
Ещё неприятности могут возникнуть при объединении данных - перенос из компаний в виртуальные компании. Напирмер, некий справочник заводишь как уникальный для каждой из 2-х компаний, а потом понимаешь, что он должен быть единым. Но есть и более значимый, с моей точки зрения, минус: - тебе придётся использовать два подхода: ссылки по ключу и ссылки по RecId. Чем меньше подходов, тем стройнее разработка. Однако, в самой Аксапте есть места, где ссылаются по RecId. Но это не пример для подражания.
__________________
С уважением, Роман Кошелев. |
|
![]() |
#4 |
Moderator
|
Цитата:
То, что они теряются при импорте, пожалуй, самое неприятное.
InventSettlement - InventTrans CustSettlement - CustTrans VendSettlement - VendTrans В этих таблицах связка происходит именно по RecId. Допустим мне нужно перейти на новую базу данных. Ну например я перехожу на новую версию. Рассуждая, приходим к тому, что что связь между этими таблицами при экспорте/импорте исчезнет. И что делать ? Заново вручную проводить сопоставление ? Та это ж офигеешь. Или плюнуть на историю ? |
|
![]() |
#5 |
Участник
|
Нет. Если с этими таблицами не происходило существенных изменений, то импорт происходит более-менее корректно.
Плохо будет, если одна из таблиц, участвующих в сопоставлении, станет общей. Или в данных экспорта будут присутствовать не все таблицы, учатсвующие в сопоставлениии. Я открыл тему RecID при экспорте-импорте не восстанавливаются? Может туда? |
|
![]() |
#6 |
Модератор
|
Цитата:
На RecID не повесишь свой нумератор
![]() Цитата:
Никто не гарантирует, что нумерация RecID будет сплошная без дыр. Кстати, никто не гарантирует, что нумерация RecID монотонно возрастает по времени
![]() Цитата:
RECID сугубо программистский инструмент. Если ты завязываешься на него, то тебе нужно будет придумывать, как показывать наименование вместо кода. А Аксапта сделана в расчете, что код является значимым для пользователя. Уж извиини за ссылку http://www.mazzy.ru/axapta/hints/autonumber/index.html
![]() Цитата:
По RecID не будет работать DynaLink. Да и вообще автосвязь между таблицами работать не будет.
Цитата:
В общем, чего тебе не нравится свой код? Лениво?
![]() |
|
![]() |
#7 |
Участник
|
Цитата:
Изначально опубликовано Vadik
Собственно от нумератора я и пытался избавиться ![]() Цитата:
Изначально опубликовано Vadik
Придумывать ничего не надо, просто пристыковывать больше таблиц приходится. Ну и лукапы надо будет переписывать. ![]() Представь, что клиенты у тебя имеют вместо AccountNum код RecID. Тогда ВЕЗДЕ, где показываются клиенты нужно будет делать связь. И в отчетах, и в формах. Например, в заказах сейчас грид работает по одной таблице и показывает поле из этой же таблицы - Sales.AccountNum. А тебе придется делать join и показывать CustTable.Name. Кроме того, подумай о поиске! Как ты организуешь пользовательский поиск? Пользователь у тебя сможет искать только по НАИМЕНОВАНИЮ! Со всеми вытекающими ![]() Если "больше таблиц" - это две таблицы вместо одной, то работа увеличивается вдвое! По меньшей мере ![]() |
|
![]() |
#8 |
Модератор
|
В общем, убедили
![]() Всем, кто ответил, спасибо. Буду ломать старые привычки, ничего не поделаешь 2Mazzy: Цитата:
RECID сугубо программистский инструмент
![]() |
|
![]() |
#9 |
Участник
|
Это неправильно поставленный вопрос
![]() В Аксапте, как правило, решение достигается гораздо эффективнее БЕЗ программирования. Но если приходится, то могу и программировать. ![]() Если ты спрашиваешь про Анкету, то я ответил, что отношу себя к людям, которые настраивают/внедряют. |
|
![]() |
#10 |
Шаман форума
|
Цитата:
Изначально опубликовано Vadik
Дырки - на здоровье, мне не жалко ![]() |
|
![]() |
#11 |
Продавец игрушек
|
Лишь бы не комплексные.
__________________
С уважением, Роман Кошелев. |
|
![]() |
#12 |
Moderator
|
Надо добавить, что в Axapta 3, при выполнении операции "Проверить идентификаторы записей" в форме SQL-Администрирование, может выполняться перенумерация recid, с соответствующей коррекцией всех ссылок по recid.
Процесс этот проходит очень неспешно, но проблемы отрицательных recid и пропусков в нумерации recid он решает. |
|
![]() |
#13 |
Moderator
|
Цитата:
Надо добавить, что в Axapta 3, при выполнении операции "Проверить идентификаторы записей" в форме SQL-Администрирование, может выполняться перенумерация recid, с соответствующей коррекцией всех ссылок по recid.
|
|
![]() |
#14 |
Участник
|
Нет, это не так.
|
|
Теги |
recid, как правильно |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|