Автонумерация элементов справочника
Во время работы приложения стандартным поведением является автоматическое формирование кода для нового элемента справочника. Это избавляет пользователя от необходимости каждый раз вводить код.
Простые коды
В простейшем случае в качестве кода сервер присваивает новому элементу справочника некоторый номер.
Если в проекте стандартный реквизит справочника Код имеет тип Число, то во время работы приложения для вычисления номера нового элемента сервер возьмет максимальный код из имеющихся элементов справочника и добавит к нему единицу. Таким образом элементы справочника будут иметь коды, идущие последовательно: 1, 2, 3, 4 и т. д.
Если, например, элемент с кодом 3 был в последствии удален и сервер не перезапускался, то для нового элемента справочника сервер снова выберет номер 3. Таким образом она заполняет пропущенные номера. А для следующего элемента она выберет номер 5.
Однако если после удаления элемента справочника сервер был перезапущен, то информация о пропущенных номерах теряется и для следующего элемента сервер сразу же предложит номер 5.
Если в проекте у справочника стандартный реквизит Код имеет тип Строка, то сервер вычисляет номер для нового элемента справочника по таким же правилам. Отличие заключается только в типе номера — Строка. То есть это строковое представление числа и оно может иметь лидирующие нули, чтобы длина кода была одинаковой у всех элементов справочника. За это отвечает свойство реквизита Код — Автонумерация.ДлинаНумерации.
Сложные коды типа «Строка»
- АА-00345/ББ
- АА-00346/ББ
- НК-00022/ПС
- НК-00023/ПС
Формальная запись такого кода выглядит следующим образом:
<Префикс><РазделительПрефикса><Номер><РазделительПостфикса><Постфикс>
Вид Справочник содержит набор свойств для настройки каждого из перечисленных компонентов кода.
- Стандартные префикс и постфикс
- Во-первых, вы можете задать в проекте стандартные значения префикса и постфикса, которые сервер будет использовать для всех
элементов справочника. За это отвечают свойства стандартного реквизита справочника Код:
Автонумерация.Префикс и Автонумерация.Постфикс. Также вы можете задать разделители: Автонумерация.Формат.РазделительПрефикса и Автонумерация.Формат.РазделительПостфикса.
- Длина префикса и постфикса
- Префикс и постфикс могут вычисляться во время работы приложения и устанавливаться с помощью встроенного языка, методами
- имя-справочника.Объект.УстановитьПрефикс() и
- имя-справочника.Объект.УстановитьПостфикс().
- Автонумерация.Формат.ДлинаПрефикса и
- Автонумерация.Формат.ДлинаПостфикса
- Автонумерация в пределах префикса, постфикса и владельца
-
Номер для нового элемента справочника может вычисляться на основе анализа как всех имеющихся элементов, так и на основе анализа только их части. Например, элементы, имеющие один префикс, имеют собственную нумерацию, а элементы, имеющие другой префикс — собственную. Таким образом могут быть элементы с одинаковыми номерами, но с разными префиксами. Например:
- АА-00002/ББ
- НК-00002/ПС
Также номер элемента справочника может быть уникальным в пределах подчинения владельцу. Два элемента с разными владельцами могут иметь одинаковые коды. Примером может служить ячеистое хранение на складах, где справочник Стеллажи владеет элементами справочника Ячейки. Тогда у каждого стеллажа могут быть свои ячейки с одинаковой нумерацией:- Стеллаж 1 — Ячейка 1
- Стеллаж 1 — Ячейка 2
- Стеллаж 2 — Ячейка 1
- Стеллаж 2 — Ячейка 2
В проекте за это отвечает свойство справочника СерииНумерации. - Ограничения по символам
- Если длина префикса или постфикса не ограничена или если не используются разделители, то серверу может быть трудно определить, где заканчивается префикс и начинается номер. Например: в коде НК001245 префиксом может быть как НК, так и НК0 или НК00. В этом случае можно установить свойство стандартного реквизита справочника Код — Автонумерация.Формат.ОграниченияПоСимволам. Оно накладывает следующие ограничения: префикс не может заканчиваться на цифру и постфикс не может содержать цифры.
- Отключение контроля формата
- Если вы хотите использовать возможности автонумерации справочника, но при этом иногда (например, при импорте данных из другой системы) вам нужно записать элемент с «неправильным» кодом, используйте свойство стандартного реквизита справочника Код — Автонумерация.КонтрольФормата. Установите его в значение Выключено.