Добавить автонумерацию к полю на странице добавления записи (front-end)

Сложный

Пример. Добавить автонумерацию к полю Код (Code) страницы добавления продукта. Шаблон номера: ART_0000N, где N = 1, 2, и т. д. Автонумерацию реализовать на стороне front-end.

1. Создать системные настройки 

  1. Создайте системную настройку с маской кода продукта.

    1. Перейдите в дизайнер системы по кнопке .
    2. В блоке Настройка системы (System setup) перейдите по ссылке Системные настройки (System settings).
    3. На панели инструментов раздела нажмите на кнопку Добавить настройку (Add setting).
    4. Заполните свойства системной настройки.

      • Название (Name) — "Маска кода продукта" ("Product code mask").
      • Код (Code) — "ProductCodeMask".
      • Тип (Type) — выберите "Строка неограниченной длины" ("Unlimited length text").
      • Значение по умолчанию (Default value) — "ART_{0:00000}".
  2. Создайте системную настройку с текущим кодом продукта.

    1. Перейдите в дизайнер системы по кнопке .
    2. В блоке Настройка системы (System setup) перейдите по ссылке Системные настройки (System settings).
    3. На панели инструментов раздела нажмите на кнопку Добавить настройку (Add setting).
    4. Заполните свойства системной настройки.

      • Название (Name) — "Текущий код продукта" ("Product last number").
      • Код (Code) — "ProductLastNumber".
      • Тип (Type) — выберите "Целое число" ("Integer").

2. Создать схему замещающей модели представления страницы продукта 

  1. Перейдите в раздел Конфигурация (Configuration) и выберите пользовательский пакет, в который будет добавлена схема.
  2. На панели инструментов реестра раздела нажмите Добавить —> Замещающая модель представления (Add —> Replacing view model).

  3. Заполните свойства схемы.

    • Код (Code) — "ProductPageV2".
    • Заголовок (Title) — "Cтраница редактирования продукта" ("Edit page - Product").
    • Родительский объект (Parent object) — выберите "ProductPageV2".
  4. Реализуйте автонумерацию поля.

    Для этого в свойстве methods реализуйте метод onEntityInitialized() — переопределенный базовый виртуальный метод. Срабатывает после окончания инициализации схемы объекта. В метод onEntityInitialized() добавьте вызов метода-обработчика getIncrementCode(), который присвоит сгенерированный номер полю Код (Code).

    Исходный код схемы замещающей модели представления страницы продукта представлен ниже.

    ProductPageV2
    define("ProductPageV2", [], function() {
        return {
            /* Название схемы объекта страницы записи. */
            entitySchemaName: "Product",
            /* Методы модели представления страницы записи. */
            methods: {
                /* Переопределение базового метода Terrasoft.BasePageV2.onEntityInitialized, который срабатывает после окончания инициализации схемы объекта страницы записи. */
                onEntityInitialized: function() {
                    /* Вызывается родительская реализация метода. */
                    this.callParent(arguments);
                    /* Код генерируется, если создается новый элемент или копия существующего. */
                    if (this.isAddMode() || this.isCopyMode()) {
                        /* Вызов базового метода Terrasoft.BasePageV2.getIncrementCode, который генерирует номер по ранее заданной маске. */
                        this.getIncrementCode(function(response) {
                            /* Сгенерированный номер возвращается в колонку [Code]. */
                            this.set("Code", response);
                        });
                    }
                }
            }
        };
    });
    
  5. На панели инструментов дизайнера нажмите Сохранить (Save).

Результат выполнения примера 

Чтобы посмотреть результат выполнения примера:

  1. Очистите кэш браузера.
  2. Обновите страницу раздела Продукты (Products).

В результате выполнения примера добавлена автонумерацию к полю Код (Code) страницы добавления продукта.