Skip to content

Базовые Excel и $ATTFL

Статья формата ObjectTypeVersion 1.0. Каждая база — одна сущность одного вида; вид задаёт префикс имени листа. Первые строки $VQ задают идентичность, дальше — данные; {имя} стоят там, где конкретику подставит строка $FL манифеста.

Одинаково устроены листы в библиотеке и локальные листы OBJTYPE (подключаемые как this).

Лист Ch.* — сразу строки каналов # / H / @ / d; в значениях используются {alias} и {DsTemplate}. Состав колонок канала — тот же, что в таблице каналов старого формата: Объявление каналов.

Каждый объект DevStudio — отдельный лист DevSt.*, на каждый объект — своя строка $FL в манифесте.

$ VQ TechObject.devStudioType DiCC ← фиксирован в базе — её «сорт»
$ VQ TechObject.devStudioPath {DevStudioPath} ← аргумент $FL
$ VQ TechObject.devStudioName {DevStudioName} ← аргумент $FL
$ ATTFL [GLOBAL_LIB_PATH]\DevStudio\common\attributes\BasePlcObjAttr.xlsx base-plc-attr
# / H attrName | attrValue / d … ← локальные атрибуты
Переменная / строкаНазначение
TechObject.devStudioTypeтип объекта DevStudio
TechObject.devStudioPathродительский узел; обычно {DevStudioPath}
TechObject.devStudioNameимя объекта; обычно {DevStudioName}
полный путьdevStudioPath.devStudioName
строки dattrName, attrValue — атрибуты этого объекта

На манифесте Tmpl.* не задают TechObject.devStudioType / …Path / …Name и не используют $LST TechObject.devStudioTemplates.

Вверху — метаданные объекта, ниже — атрибуты. Путь и имя могут включать внешние переменные и литералы либо плейсхолдеры {DevStudioPath} / {DevStudioName}:

Пример листа DevSt.DiCC

Рис. — DevSt.DiCC.

Переменная / attrNameЗначениеКомментарий
TechObject.devStudioTypeDiCCтип объекта в DevStudio
TechObject.devStudioPath[PathDevStudio].[TAG] ADDродительский узел
TechObject.devStudioName[TAG] CCимя создаваемого объекта
unit.CommonLib.Attributes.DevParams.SystemTag<script GAP.ScadaProjectBase.Tags.GetPrjTag([TAG])/>системный тег
unit.System.Attributes.Title[parentDescr]заголовок объекта

$VQ HmiType → $ATTFL (общие опции) → строки # / H / @ / d с опциями. Имя вида иконки — имя листа без префикса. Колонки опций — как в Листы HMI.*. Семантических аргументов нет — только {argN}.

$VQ Lib и $VQ HmiType → ($ATTFL) → строки опций. Колонки — как в Листы HMIS.*. Только {argN}.

$ATTFL — общий блок внутри базы

Section titled “$ATTFL — общий блок внутри базы”

У баз одного вида часто есть одинаковая часть — типовые атрибуты объектов DevStudio, типовые опции иконок. Её выносят в отдельный лист и подтягивают строкой:

ABCD
$ATTFLфайллист

Результат листа = строки из $ATTFL + локальные строки базы. Поправили общий блок — изменение увидели все базы, что его подтягивают.

$ATTFL намеренно проще $FL:

  • нет выключателя — строка отрабатывает всегда;
  • нет this — файл указывается явно (%Self%, %JSC%, [GLOBAL_LIB_PATH], …);
  • нет переменных объекта и <script/> в C/D — блок домерживается один раз на весь OBJTYPE; иначе ошибка с подсказкой вынести выбор в $FL;
  • колонки сверяются — если заголовки блока не совпадают с колонками листа-хоста, в логе предупреждение, но строки всё равно добавляются.

База может объявить свои подключения, но из них собирается только набор $JSM (подробнее). Каналы, объекты DevStudio и иконки берутся только из подключений манифеста: $FL Ch.* внутри базы канала не даст. Общий набор каналов перечисляйте строками $FL в манифесте.

СвязьКак задаётся
канал ↔ объект DevStudioDsTemplate канала (arg2) = DevStudioTemplate объекта (arg1). Если DevStudioTemplate не передан, ключом становится TechObject.devStudioType базы
канал ↔ Unimodalias канала (arg1: base, Open, Close, …) = alias строки UnimodFB; из этих значений собирается набор UnimodAliases

При нескольких подключениях одного листа DevSt.* значение DevStudioTemplate должно быть уникальным у каждого — иначе привязка каналов неоднозначна.

  • Лист базы обязан начинаться с префикса вида; в манифесте (кол. D) пишется полное имя.
  • Ключи конфига в базах фиксированы: TechObject.devStudioType / …Path / …Name у DevStudio, HmiType у иконок, Lib у СТАБУР.
  • Пути базовых файлов — через переменные: %JSC%\Conf\Lib\…, [GLOBAL_LIB_PATH]\…, %Self%\….
  • Локальный канал — лист Ch.<имя>, подключение this.