18.08.2011, 19:32 | #1 |
Участник
|
Использование номерных серий для формирования числовых полей
Довольно часто в качестве идентификатора записи в новых таблицах достаточно использовать поле типа Integer. Для генерации нового значения используется номерная серия, а в момент записи осуществляется конвертация через str2int().
X++: MyTable.MyField = str2Int(numberSeq.num()); Единственное неудобство, которое есть в данном сценарии, это то, что Extended Data Types, используемый для идентификации номерной серии в таблице ссылок NumberSequenceReference отличается от Extended Data Types на основе которого создано поле таблицы. Т.е. нужны два разных Extended Data Types. Решением может являться снятие запрета на использование Extended Data Types с типом отличным от STRING в таблице ссылок NumberSequenceReference. Насколько я вижу, обязательность символьного типа данных связана только и исключительно с дополнительной проверкой в случае создания номерной серии через Wizard в методе \ Data Dictionary \ Tables \ TmpNumberSeqCreate \ Methods \ validateFormat() Как лучше (правильно) поступить в данном случае?
|
|
|
За это сообщение автора поблагодарили: Vasil (1). |
19.08.2011, 08:19 | #2 |
Участник
|
можно не использовать номерную серию, а искать максимальное и прибавлять 1.
в случае массовой вставки счетчик можно вести непосредственно в коде |
|
19.08.2011, 08:26 | #3 |
Участник
|
Цитата:
И ещё в таком случае вы неизбежно попадёте на взаимоблокировки при работе с одной таблицей одновременно нескольких пользователе. В случае с LineNum эта проблема решена "организационно" - два пользователя не могут одновременно работать с одним документом Последний раз редактировалось S.Kuskov; 19.08.2011 в 08:34. |
|
19.08.2011, 09:17 | #4 |
Участник
|
Цитата:
По теме: я бы ослабил ограничение по базовому типу EDT, чтобы можно было использовать целочисленные типы, и научил бы validateFormat() их проверять. |
|
Теги |
как правильно, номерная серия |
|
|