Базовые Excel и $ATTFL
Статья формата ObjectTypeVersion 1.0. Каждая база — одна сущность одного вида; вид задаёт префикс имени листа. Первые строки $VQ задают идентичность, дальше — данные; {имя} стоят там, где конкретику подставит строка $FL манифеста.
Одинаково устроены листы в библиотеке и локальные листы OBJTYPE (подключаемые как this).
Канал (Ch.*)
Section titled “Канал (Ch.*)”Лист Ch.* — сразу строки каналов # / H / @ / d; в значениях используются {alias} и {DsTemplate}. Состав колонок канала — тот же, что в таблице каналов старого формата: Объявление каналов.
Объект DevStudio (DevSt.*)
Section titled “Объект DevStudio (DevSt.*)”Каждый объект 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 |
строки d | attrName, attrValue — атрибуты этого объекта |
На манифесте Tmpl.* не задают TechObject.devStudioType / …Path / …Name и не используют $LST TechObject.devStudioTemplates.
Пример листа DevSt.DiCC
Section titled “Пример листа DevSt.DiCC”Вверху — метаданные объекта, ниже — атрибуты. Путь и имя могут включать внешние переменные и литералы либо плейсхолдеры {DevStudioPath} / {DevStudioName}:

Рис. — DevSt.DiCC.
| Переменная / attrName | Значение | Комментарий |
|---|---|---|
TechObject.devStudioType | DiCC | тип объекта в 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] | заголовок объекта |
Иконка Alpha.HMI (HMI.*)
Section titled “Иконка Alpha.HMI (HMI.*)”$VQ HmiType → $ATTFL (общие опции) → строки # / H / @ / d с опциями. Имя вида иконки — имя листа без префикса. Колонки опций — как в Листы HMI.*. Семантических аргументов нет — только {argN}.
Иконка СТАБУР (HMIS.*)
Section titled “Иконка СТАБУР (HMIS.*)”$VQ Lib и $VQ HmiType → ($ATTFL) → строки опций. Колонки — как в Листы HMIS.*. Только {argN}.
$ATTFL — общий блок внутри базы
Section titled “$ATTFL — общий блок внутри базы”У баз одного вида часто есть одинаковая часть — типовые атрибуты объектов DevStudio, типовые опции иконок. Её выносят в отдельный лист и подтягивают строкой:
| A | B | C | D |
|---|---|---|---|
$ | ATTFL | файл | лист |
Результат листа = строки из $ATTFL + локальные строки базы. Поправили общий блок — изменение увидели все базы, что его подтягивают.
$ATTFL намеренно проще $FL:
- нет выключателя — строка отрабатывает всегда;
- нет
this— файл указывается явно (%Self%,%JSC%,[GLOBAL_LIB_PATH], …); - нет переменных объекта и
<script/>в C/D — блок домерживается один раз на весь OBJTYPE; иначе ошибка с подсказкой вынести выбор в$FL; - колонки сверяются — если заголовки блока не совпадают с колонками листа-хоста, в логе предупреждение, но строки всё равно добавляются.
Вложенный $FL в базе
Section titled “Вложенный $FL в базе”База может объявить свои подключения, но из них собирается только набор $JSM (подробнее). Каналы, объекты DevStudio и иконки берутся только из подключений манифеста: $FL Ch.* внутри базы канала не даст. Общий набор каналов перечисляйте строками $FL в манифесте.
| Связь | Как задаётся |
|---|---|
| канал ↔ объект DevStudio | DsTemplate канала (arg2) = DevStudioTemplate объекта (arg1). Если DevStudioTemplate не передан, ключом становится TechObject.devStudioType базы |
| канал ↔ Unimod | alias канала (arg1: base, Open, Close, …) = alias строки UnimodFB; из этих значений собирается набор UnimodAliases |
При нескольких подключениях одного листа DevSt.* значение DevStudioTemplate должно быть уникальным у каждого — иначе привязка каналов неоднозначна.
Именование
Section titled “Именование”- Лист базы обязан начинаться с префикса вида; в манифесте (кол. D) пишется полное имя.
- Ключи конфига в базах фиксированы:
TechObject.devStudioType/…Path/…Nameу DevStudio,HmiTypeу иконок,Libу СТАБУР. - Пути базовых файлов — через переменные:
%JSC%\Conf\Lib\…,[GLOBAL_LIB_PATH]\…,%Self%\…. - Локальный канал — лист
Ch.<имя>, подключениеthis.