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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.08.2011, 19:32   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Использование номерных серий для формирования числовых полей
Довольно часто в качестве идентификатора записи в новых таблицах достаточно использовать поле типа 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()

Как лучше (правильно) поступить в данном случае?
  1. Использовать два разных Extended Data Types. Один для идентификатора записи в NumberSequenceReference, другой для поля рабочей таблицы.
  2. Разрешить в качестве идентификатора записи в NumberSequenceReference использовать Extended Data Types любого типа
За это сообщение автора поблагодарили: Vasil (1).
Старый 19.08.2011, 08:19   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,740 / 404 (17) +++++++
Регистрация: 23.03.2006
можно не использовать номерную серию, а искать максимальное и прибавлять 1.
в случае массовой вставки счетчик можно вести непосредственно в коде
Старый 19.08.2011, 08:26   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от ice Посмотреть сообщение
можно не использовать номерную серию, а искать максимальное и прибавлять 1.
в случае массовой вставки счетчик можно вести непосредственно в коде
Это не спортивно . Хотя примером того может служить реализация поля LineNum

И ещё в таком случае вы неизбежно попадёте на взаимоблокировки при работе с одной таблицей одновременно нескольких пользователе.
В случае с LineNum эта проблема решена "организационно" - два пользователя не могут одновременно работать с одним документом

Последний раз редактировалось S.Kuskov; 19.08.2011 в 08:34.
Старый 19.08.2011, 09:17   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
В случае с LineNum эта проблема решена "организационно" - два пользователя не могут одновременно работать с одним документом
Особенно с заказом на покупку/продажу (отвлекаясь от того, можно ли журналы называть документами).

По теме: я бы ослабил ограничение по базовому типу EDT, чтобы можно было использовать целочисленные типы, и научил бы validateFormat() их проверять.
Теги
как правильно, номерная серия

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Несколько номерных серий для одного документа breakpoint DAX: Программирование 17 12.03.2009 16:42
Использование контейнеров и полей с неограниченными строками (текстом) в выражении WHERE не допускается. cutter DAX: Программирование 4 07.12.2007 11:16
Перенумерация номерных серий Berkoff DAX: Программирование 5 27.01.2005 01:08
Как работает формат номерных серий? alpin DAX: Функционал 8 19.12.2003 19:51
Группа номерных серий Swetik DAX: Функционал 0 05.08.2003 09:03
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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