В формате номерных серий в Аксапте 2.5 можно использовать только один специальный символ - #. В Аксапте 3.0 можно использовать два специальных символа - # и &. Что они означают?

Номерные серии в Аксапте - инструмент, который позволяет задавать правило нумерации для справочников документов, операций и т.п. Так например, необходимо создать отдельную номерную серию для нумерации счетов-фактур, отдельную для нумерации накладных. В этом случае счета-фактуры и накладные получат свои независимые друг от друга номера.

Можно задать отдельные номерные серии для нумерации клиентов, поставщиков, партий, серийных номеров номенклатуры. Отдельные номерные серии задаются для нумерации заказов, закупок, журналов и т.п. Номерные серии используются также для нумерации служебных справочников - лотов, комбинаций складских аналитик и т.п.

Номерные серии в Аксапте позволяют задавать непрерывную последовательность. В непрерывных последовательностях не бывает пропущенных номеров. Естественно, работа с непрерывными последовательностями требует больших ресурсов от Аксапты, чем при работе с простыми последовательностями.

Подробнее о номерных сериях см. документацию по Аксапте.

Номерные серии в Аксапте также позволяют задавать формат номерной серии. В строке формата указывается где будут размещаться цифры номера, а где будут размещаться обычные (неизменные) символы. Для того, чтобы в формате задать место для номера используются специсиволы. О спецсимволах и будет рассказано в этом совете.

 

Спецсимвол #

Спецсимвол # указывает место в строке формата, где нужно расположить цифры номера.

Так например, если для нумерации счетов-фактур используется формат «сф-#####», то счет-фактура с номером 1278 в качестве номера получит строку «сф-01278».

Специальные символы можно произвольно чередовать с обычными символами. Так, например, вполне допустим формат «###-сф-##». Тогда та же самая счет-фактура в качестве номера получит строку «012-сф-78». Обычные символы можно поставить и в конце строки формата. Так например, в демонстрационных данных международной версии формат номерной серии для заказов выглядит следующим образом: «#####_036».

 

Спецсимвол &

Спецсимвол & появился в Аксапте 3.0. Этот спецсимвол работает аналогично #. Он также указывает место, где нужно размещать представление кода. Единственное отличие – для кодирования используются не цифры, а латинские буквы. Т.е. вместо цифры 0 используется символ A , вместо цифры 1 – B и т.д.

Номер 1 2 3 ... 8 9 10 11 ... 24 25 26 27 28 29 ... 98 99 100 101 ... 675 676
Формат && AA AB AC .. AH AI AJ AK ... AX AY AZ BA BB BC ... DT DU DW DX ... ZY ZZ

Также как и # специальный символ & можно использовать вперемешку с другими символами. Сами символы # и & также можно использовать вперемешку. Так, если указать формат «&&-сф-78», счет-фактура с номером 1378 после форматирования получит в качестве номера строку «AMсф-78».

 

Зачем понадобился символ &

С одной стороны, что чем короче код, тем быстрее работает поиск и выборка данных. С другой стороны, коды для разных записей должны быть уникальными. Нумератор позволяет добиться уникальности каждого нового значения.

Традиционное представление числа в виде строки работает неплохо. Но обладает одним недостатком – строка получается достаточно длинной. Как уменьшить длину уникальной строки?

Идея состоит в том, что вместо 10 цифр выбрать большее количество знаков. Например, 26 латинских букв. Тогда число будет записано по основанию 26. Так например, число 999999 будет записано как CEXHM. Т.е. вместо 6 символов будет использовано 5 символов.

Казалось бы, какая фигня – 1 символ. Но это различие проявляется 900 тыс. раз. Т.е. легким движением экономится почти мегабайт данных. Но это еще не все. В 5 символов в такой кодировке можно «уложить» еще 10 млн. записей. Т.е. сэкономить можно больше 10 мегабайт.

Номер 999,998 999,999 1,000,000 1,000,001 ... 11,881,375 11,881,376
Формат &&,&&& CE,XHL CE,XHM CE,XHN CE,XHO ... ZZ,ZZY ZZ,ZZZ

Но что самое главное, на эти мегабайты уменьшаются все индексы, в которых участвует данное поле. А код, как правило, входит во многие индексы. Это значит, что sql -серверу придется выполнять меньше операций чтения-записи. Это значит, что больше данных будет помещаться в быстрый кэш и т.п. На самом деле это существенная экономия.

 

Рекомендация

Специальный символ стоит использовать для внутренних, системных нумераторов. Тех, которые обычный пользователь, как правило, не видит. Например, таким может быть нумератор для пакетов корреспонденции, для лотов, сопоставлений, для номеров аналитики и т.п.

 

Буду рад Вашим замечаниям и предложениям.
mazzy@mazzy.ru, Мазуркин Сергей