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

  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)