Ограничения и «Ещё в GAP»
Раздел «Ещё в GAP» в каталоге отвечает на два вопроса: какие функции GAP.dll конструктор пока не умеет и чего он не умеет вообще. Список ведётся руками, а не читается из GAP.dll: сборка GAP лежит вне репозитория, и её перечень публичных методов наполовину состоит из внутренностей, которых ячейка не зовёт. Здесь только то, что инженер может встретить в книге.

Раздел «Ещё в GAP» в каталоге: сверху не перенесённые функции по причинам, ниже — «Чего конструктор пока не умеет» с ответом «Что делать» на каждую строку.
Функции GAP, которые не перенесены
Section titled “Функции GAP, которые не перенесены”Их объединяет одно: они ничего не считают для ячейки. Схема умеет только посчитать значение для своей ячейки.
Отчёт об ошибках сборки
Section titled “Отчёт об ошибках сборки”Почему нет: эти функции включают и выключают отчёт на всю сборку.
Сейчас: вызов из книги считает GAP.dll, как раньше.
| Функция | Аргументы | Что делает |
|---|---|---|
| GAP.ScadaProjectBase.General.EnableGenerationErrorReport | — | включить отчёт: рядом с книгой появится файл «<имя книги>_errors.txt» |
| GAP.ScadaProjectBase.General.DisableGenerationErrorReport | — | выключить отчёт |
| GAP.ScadaProjectBase.General.ClearGenerationErrorReport | — | стереть накопленные ошибки |
| GAP.ScadaProjectBase.General.WriteGenerationErrorReport | filePath | записать накопленные ошибки в файл по пути |
Чистка одинаковых строк в выгрузке обвязки тренажёра
Section titled “Чистка одинаковых строк в выгрузке обвязки тренажёра”Почему нет: эти функции правят уже сохранённый файл выгрузки.
Сейчас: вызов из книги считает GAP.dll, как раньше.
| Функция | Аргументы | Что делает |
|---|---|---|
| GAP.ScadaProjectBase.General.EnableDuplicateRowCleanup | — | включить чистку одинаковых строк |
| GAP.ScadaProjectBase.General.DisableDuplicateRowCleanup | — | выключить чистку |
Конфигурация КАУ для FireSec
Section titled “Конфигурация КАУ для FireSec”Почему нет: эта функция собирает файлы конфигурации КАУ по шаблону. Файлы схема не пишет.
Сейчас: вызов из книги считает GAP.dll, как раньше.
| Функция | Аргументы | Что делает |
|---|---|---|
| GAP.FireSec.Config.Generators.FireSecGenerator.GenerateKauDeviceConfig | templateFilePath | собрать конфигурацию КАУ для каждого устройства по шаблону |
Чего конструктор пока не умеет
Section titled “Чего конструктор пока не умеет”Каждая строка — то, на что можно наткнуться в книге или на схеме, и что с этим делать.
Готовые схемы для функций GAP с Uniplant Atomix пока не приходят
Section titled “Готовые схемы для функций GAP с Uniplant Atomix пока не приходят”Как сейчас: большинство функций GAP конструктор уже умеет повторить, но готовых схем для них в каталоге пока нет. Поэтому вызовы из книг по-прежнему считает GAP.dll.
Что делать: ничего менять не нужно — книги считаются как раньше. Чтобы вызов считала схема, соберите её в своей библиотеке под тем же именем, что у функции GAP.
Отчёт об ошибках сборки
Section titled “Отчёт об ошибках сборки”Как сейчас: файл «<имя книги>_errors.txt» рядом с книгой пишет GAP.dll, и попадают в него только ошибки функций GAP. Если значение не смогла посчитать схема, в этом файле этого не будет.
Что делать: откройте схему, впишите пробные значения аргументов и нажмите «▶ Запустить»: шаг, на котором схема споткнулась, встанет в красную рамку, и рядом будет написано почему.
Чистка одинаковых строк в выгрузке обвязки тренажёра
Section titled “Чистка одинаковых строк в выгрузке обвязки тренажёра”Как сейчас: одинаковые строки из выгрузки обвязки убирает только GAP.dll — и только если шаблон тренажёра эту чистку включил.
Что делать: пока GAP.dll на месте, всё как раньше.
Конфигурация КАУ для FireSec
Section titled “Конфигурация КАУ для FireSec”Как сейчас: файлы конфигурации КАУ собирает только GAP.dll.
Что делать: пока GAP.dll на месте, всё как раньше.
Функцию GAP из схемы не позвать
Section titled “Функцию GAP из схемы не позвать”Как сейчас: шаг «Вызвать схему» зовёт только схемы. Если для функции GAP схемы нет, из своей схемы её не вызвать.
Что делать: сначала соберите нужную функцию схемой под её именем — тогда её можно звать шагом «Вызвать схему».
Порядок аргументов не сверяется с функцией GAP
Section titled “Порядок аргументов не сверяется с функцией GAP”Как сейчас: схема под именем функции GAP перехватывает её вызовы из книг. Ячейка подаёт аргументы по порядку: в GetThTag([TAG], 1) первым идёт тег, вторым — номер порога. Если в схеме аргументы стоят в другом порядке, конструктор не предупредит.
Что делать: расставьте аргументы в овале «Из ячейки» в том же порядке, что в вызове из книги.
В книге нет столбца, на который ссылается вызов
Section titled “В книге нет столбца, на который ссылается вызов”Как сейчас: в вызове GetThTag([TAG], 1) вместо [TAG] подставляется значение из столбца TAG. Если такого столбца в книге нет — удалили или закомментировали, — подставлять нечего, и в вызов уходит сам текст [TAG]. GAP.dll такой текст обычно отбрасывал и считал, что значения нет. Схема примет «[TAG]» за настоящий тег и посчитает с ним дальше.
Что делать: если столбца в книге может не быть, поставьте в схеме развилку: значение «не задано» или «начинается с [» — и решите, что отдавать в этом случае.
Регистр букв в сравнениях
Section titled “Регистр букв в сравнениях”Как сейчас: схема сравнивает без учёта регистра: «Дымовой» и «дымовой» для неё одно и то же. Функции GAP в одних местах их различали, в других — нет.
Что делать: если регистр важен, сравнивайте через «подходит под образец» — образец регистр различает.
Шаг «Свой код» видит только то, что ему подали
Section titled “Шаг «Свой код» видит только то, что ему подали”Как сейчас: код получает только то, что подано в его строки, и объекты проекта. Столбцы строки книги, из которой позвали схему, ему напрямую не видны, и переменную шаблона он задать не может.
Что делать: нужный столбец передайте в схему аргументом — в вызове из ячейки это [TAG] — и подайте этот аргумент в код. Переменные шаблона задавайте шагом «Переменные шаблона».
Ещё несколько ограничений, не вошедших в тот список
Section titled “Ещё несколько ограничений, не вошедших в тот список”| Ограничение | Пояснение |
|---|---|
| Схемы не едут в SVN вместе с проектом | Схемы лежат рядом со сборкой AutoMix. У коллеги, забравшего проект, тот же вызов уйдёт в GAP.dll. См. Библиотеки и решение. |
| Схема не пишет файлы | Читать текстовый файл умеет («Прочитать файл»), писать — нет. |
| Часть действий снята с полки | Держать в палитре недоделанное дороже, чем не иметь его вовсе: инженер выбирает действие по названию, ставит его в схему и узнаёт о недоделке, только упёршись в неё. Поэтому палитра содержит только доведённое. |
| Признак и словарь в «Своём коде» — строки | flag ? … и map.ContainsKey(…) не соберутся. См. Свой код. |
| У шага один выход | Вся палитра первой версии такая. Несколько ответов одного шага («Подставить по списку» с несколькими ответами) — это дополнительные столбцы одного выхода, а не второй выход. |