Автонумерация объектов документа

Во время работы приложения стандартным поведением является автоматическое формирование Номера для нового объекта Документа. Это избавляет пользователя от необходимости каждый раз вводить Номер.

Простые номера

В простейшем случае в качестве Номера сервер присваивает новому объекту Документа некоторый номер.

Если в проекте стандартный реквизит Документа Номер имеет тип Число, то во время работы приложения для вычисления номера нового объекта сервер возьмет максимальный Номер из имеющихся объектов Документа и добавит к нему единицу. Таким образом объекты Документа будут иметь номера, идущие последовательно: 1, 2, 3, 4 и т. д.

Если, например, объект с Номером 3 был в последствии удален и сервер не перезапускался, то для нового объекта Документа сервер снова выберет номер 3. Таким образом он заполняет пропущенные номера. А для следующего объекта он выберет номер 5.

Однако если после удаления объекта Документа сервер был перезапущен, то информация о пропущенных номерах теряется и для следующего объекта сервер сразу же предложит номер 5.

Если в проекте у Документа стандартный реквизит Номер имеет тип Строка, то сервер вычисляет номер для нового объекта Документа по таким же правилам. Отличие заключается только в типе Номера — Строка. То есть это строковое представление числа и оно может иметь лидирующие нули, чтобы длина номера была одинаковой у всех объектов Документа. За это отвечает свойство реквизита Номер — Автонумерация.ДлинаНумерации.

Сложные номера типа «Строка»

Ситуация, когда сервер формирует Номер объекта Документа только из номера — это простейший случай. В общем случае строковый Номер объекта Документа может содержать префикс, номер, постфикс и разделители, например:
  • АА-00345/ББ
  • АА-00346/ББ
  • НК-00022/ПС
  • НК-00023/ПС

Формальная запись такого номера выглядит следующим образом:

<Префикс><РазделительПрефикса><Номер><РазделительПостфикса><Постфикс>

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

Стандартные префикс и постфикс
Во-первых, вы можете задать в проекте стандартные значения префикса и постфикса, которые сервер будет использовать для всех объекта документа. За это отвечают свойства стандартного реквизита Документа Номер: Автонумерация.Префикс и Автонумерация.Постфикс.
Также вы можете задать разделители: Автонумерация.Формат.РазделительПрефикса и Автонумерация.Формат.РазделительПостфикса.
Длина префикса и постфикса
Префикс и постфикс могут вычисляться во время работы приложения и устанавливаться с помощью встроенного языка, методами
  • имя-документа.Объект.УстановитьПрефикс() и
  • имя-документа.Объект.УстановитьПостфикс().
В этом случае в проекте у стандартного реквизита Документа Номер необходимо указать длину префикса и постфикса:
  • Автонумерация.Формат.ДлинаПрефикса и
  • Автонумерация.Формат.ДлинаПостфикса
Автонумерация в пределах префикса, постфикса и периода
Номер для нового объекта Документа может вычисляться на основе анализа как всех имеющихся объектов, так и на основе анализа только их части. Например, объекты, имеющие один префикс, имеют собственную нумерацию, а объекты, имеющие другой префикс — собственную. Таким образом могут быть объекты с одинаковыми номерами, но с разными префиксами. Например:
  • АА-00002/ББ
  • НК-00002/ПС
Также номер объекта Документа может быть уникальным в пределах определенного периода. За контроль уникальности номера и автонумерации в рамках определенного периода, отвечает свойство реквизита Номер — Периодичность. Периодичность определяет пространство нумерации. Например, если Периодичность имеет значение Год, то каждый год нумерация объектов Документа начинается заново. Таким образом, два объекта Документа, созданные в разные года, могут иметь одинаковый Номер.
Периодичность имеет точность до даты (без времени). Для документа с типом Даты Момент периодическая нумерация запрещена и значение свойства Периодичность у реквизита Номер может быть только НеИспользуется.
Возможные значения периодичности:
  • НеИспользуется — используется по умолчанию
  • День
  • Месяц
  • Год
Ограничения по символам
Если длина префикса или постфикса не ограничена или если не используются разделители, то серверу может быть трудно определить, где заканчивается префикс и начинается номер. Например: в Номере НК001245 префиксом может быть как НК, так и НК0 или НК00. В этом случае можно установить свойство стандартного реквизита Документа Номер — Автонумерация.Формат.ОграниченияПоСимволам. Оно накладывает следующие ограничения: префикс не может заканчиваться на цифру и постфикс не может содержать цифры.
Отключение контроля формата
Если вы хотите использовать возможности автонумерации Документа, но при этом иногда (например, при импорте данных из другой системы) вам нужно записать объект с «неправильным» Номером, используйте свойство стандартного реквизита документа Номер — Автонумерация.КонтрольФормата. Установите его в значение Выключено.