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

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

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

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

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

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

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

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

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

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

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

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

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

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