Перейти к основному содержанию
`Ctrl`+`K`

# Настройка автонумерации

1. Откройте `odm` класса.

2. Укажите для нужного атрибута свойство `type` = `autonum`.

3. Создайте внутри тега `attr` вложенный тег `autonum`. Укажите в нем следующие свойства:

   - `id` - уникальный в рамках класса идентификатор автонумерации.

   - `isHoleFill` - заполнение пропусков (опционально). Если в настройках автонумерации указан разрез, то автоматически включено. Чтобы выключить нужно прописать `isHoleFill` = `false`.

4. Внутри тега `autonum` создайте вложенные теги:

   - `mask` - маска автонумерации. Маска должна собой представлять jexl-скрипт, с экранированием спец. символов. Для каждого автонумерующегося атрибута может быть настроена своя маска автонумерации. В маске доступен для использования параметр сounter, который будет заменен на значение счетчика.

   - `dimension` - разрез автонумерации:

     - Установите у тега следующие свойства:

       - `name` - название разреза. Задается всегда, даже если используется автонумерация без разреза;

       - `attr` - атрибут, в рамках которого рассматривается разрез. Разрезы указываются из атрибутов класса. Используется только для автонумерации с разрезом.

       - `order` - порядковый номер. Если его не задать, то разрезы будут обрабатываться в алфавитном порядке. Используется для автонумерации с разрезом по нескольким атрибутам.

     - Дополнительные возможности:

       - При необходимости можно добавить более одного тега `dimension`. В этом случае разрез будет реализован по нескольким атрибутам.

       - К значениям атрибутов разреза возможно применение выражений, они указываются во вложенном теге `expression` для `dimension`. На каждый разрез может быть не больше одного выражения. Значение, указанное в элементе `expression`, будет передано в обработчик Jexl-скриптов, параметр, заменяемый на значение атрибута разреза, называется `dimValue`.

   Пример автонумерации без разреза:

       <attr name="sNoDep"
           caption="Автонумерация без разреза"
           attribute-type="Varchar"
           type="autoNum"
           isHeadLine="true">
           <autonum id="1">
               <mask>lpad(counter,3,"0")</mask>
               <dimension name="dim1"/>
           </autonum>
       </attr>

   Пример указания нескольких разрезов:

       <attr name="sTwoDepExpr"
               caption="Автонумерация с 2 разрезами"
               attribute-type="Varchar"
               type="autoNum">
           <autonum id="3">
               <mask>lpad(counter,3,"0")</mask>
               <dimension name="nNumber"
                       attr="nNumber"
                       order="10" />
               <dimension name="dDate_dim"
                       attr="dDate"
                       order="20">
                   <expression>truncDate(dimValue)</expression>
               </dimension>
           </autonum>
       </attr>

5. Сформируйте окружение класса:

   - Сформируйте исходный код для класса (`generate sources`).

   - Выполните сборку проекта (`build`).

   - Сформируйте таблицы класса (`generate tables`).