Довольно часто в качестве идентификатора записи в
новых таблицах достаточно использовать поле типа Integer. Для генерации нового значения используется номерная серия, а в момент записи осуществляется конвертация через str2int().
X++:
MyTable.MyField = str2Int(numberSeq.num());
Разумеется, у используемой номерной серии или нет формата вообще или он довольно специфический, чтобы преобразование str2int() вернуло число отличное от нуля.
Единственное неудобство, которое есть в данном сценарии, это то, что Extended Data Types, используемый для идентификации номерной серии в таблице ссылок NumberSequenceReference отличается от Extended Data Types на основе которого создано поле таблицы. Т.е. нужны два разных Extended Data Types.
Решением может являться снятие запрета на использование Extended Data Types с типом отличным от STRING в таблице ссылок NumberSequenceReference. Насколько я вижу, обязательность символьного типа данных связана только и исключительно с дополнительной проверкой в случае создания номерной серии через Wizard в методе
\ Data Dictionary \ Tables \ TmpNumberSeqCreate \ Methods \ validateFormat()
Как лучше (правильно) поступить в данном случае?
- Использовать два разных Extended Data Types. Один для идентификатора записи в NumberSequenceReference, другой для поля рабочей таблицы.
- Разрешить в качестве идентификатора записи в NumberSequenceReference использовать Extended Data Types любого типа