Быстрый старт прикладника

Документация ниже ориентирована на разработку бизнес-логики через уже собранные XML/SQL/Pascal-модули платформы.

Что нужно понимать перед стартом

В платформе всё приложение хранится как набор модулей:

  • Table — структуры данных и бизнес-правила на уровне БД.
  • Reference — карточка-список со своим видом поля и формой.
  • Form — карточка для ручного ввода/редактирования данных.
  • MainMenu — иерархия пунктов меню.
  • PrintForm, View, AutoView, Stored, Module — дополнительные служебные/отчётные модули.

Прикладник обычно работает в одном из сценариев:

  1. Открытие/изменение формы/справочника.
  2. Обработка событий (On...Click, On...Change, On...Select, ...).
  3. Интеграционные HTTP-вызовы и SQL.
  4. Выгрузка/загрузка изменений через архив приложения.

Типичный поток изменений

  1. Выгрузить приложение в архив:
python3 docs/downloads/tma_app_archive.py export-db \
  --database my1 \
  --output my1.tma-source.zip
  1. Распаковать и открыть нужный модуль:
python3 docs/downloads/tma_app_archive.py unpack \
  --input my1.tma-source.zip \
  --output my1-source
  1. Отредактировать нужный module.xml, form.xml, program.pas, триггеры и т.д.

  2. Проверить:

python3 docs/downloads/tma_app_archive.py verify \
  --input my1-source
  1. Собрать и загрузить обратно:
python3 docs/downloads/tma_app_archive.py pack \
  --input my1-source \
  --output my1-update.xml
  1. Загрузить my1-update.xml через клиент:

  2. Меню -> Загрузить обновление из файла.

Как ориентироваться в module.xml формы

Формы и справочники хранятся в:

  • modules/form/<ИмяМодуля>--<hash>/module.xml
  • modules/reference/<ИмяМодуля>--<hash>/module.xml

Типичный минимальный фрагмент:

<Module Type="Form" Name="TaskForm" Parent="Task" Description="Задачи">
  <Form Width="780" Height="560" Icon="-1">
    ...
  </Form>
  <Programm Language="Similar Pascal"/>
</Module>

Для справочника дополнительно есть:

  • Table-связанные атрибуты поля (TopHeight, Fields и др.),
  • Permissions.

Что важно сразу при разработке

  • Название обработчика события должно совпадать с моделью имени контрола:
  • кнопка Name="SaveBtn" → OnSaveBtnClick;
  • пункт меню с Command="OnFoo" → OnFoo или OnFooClick (в зависимости от типа/источника).
  • Не смешивать CP1251/UTF-8 руками в коде — для текста используйте ConvertToUTF8/ConvertFromUTF8 там, где нужно (см. Скриптовый API).
  • В Reference и сложных Table проверяйте permissions и fk-связи у полей, иначе формы могут открываться пустыми.
  • Для проверки корректности после правок выполняйте минимальный smoke-путь:
  • открыть меню,
  • открыть модифицированную форму/справочник,
  • создать/изменить запись,
  • посмотреть, что срабатывает нужный обработчик и запись реально записана.

Где смотреть дальше

Рабочий порядок до деплоя правок

  • Всегда запускай verify после редактирования — это снижает риск поломок при pack.
  • Перед сборкой обновления проверь:
  • соответствие Name обработчиков (On<Name>Click, On<Name>Change),
  • корректность Parent для Reference/Form,
  • уникальность имён контролов,
  • разрешения Permissions на уровне таблицы.
  • После pack делай сначала тестовый импорт в отдельную копию БД, потом только затем прод.