Показ схемы кодом
Кнопка «Показать код» в штампе (графа «ВЫЗОВ») показывает ту же схему на C#. Панель подписана прямо:
Так эта схема выглядела бы в GAP: строка кода на фигуру, в том же порядке. Это показ для сверки при переносе, а не то, что уходит в сборку.

Одна строка кода на одну фигуру, в том же порядке, в каком читается нить. Кнопка «Скопировать код» рядом.
Зачем это нужно
Section titled “Зачем это нужно”Ради переноса. Блоки заменяют собой рукописный метод, и пока перенос идёт, инженеру и разработчику надо видеть одно и то же с двух сторон: фигуру и её эквивалент на C#. По этому показу и сверяют, что схема повторяет функцию GAP.
Как читаются отдельные шаги
Section titled “Как читаются отдельные шаги”Каждое действие само знает, как оно выглядит в коде, и повторяет запись живого GAP, а не общий вид «нашего» перехода. Несколько примеров.
| Шаг | Как показан |
|---|---|
| Найти объекты | Parser.GetUpdatedInstances().Where(model => …).ToList() |
| Взять N-й | .FirstOrDefault(model => …), а при заданном номере — с пропуском. |
| Взять поле у списка | found.Select(model => model.Field("TAG")).ToList() |
| Взять поле у одного | picked?.Field("TAG") |
| Взять поле из строки ячейки | Data.Select(row => row.GetValueOrDefault("Units")).FirstOrDefault(value => !string.IsNullOrEmpty(value)) |
| Взять поле из опций ПЛК | CurrentPlcOptions?.PlcOptions?.FirstOrDefault()?.GetValueOrDefault("SplitRegex") |
| Перейти по связи «устройство Modbus» | picked?.ModbusDevice |
| Перейти по связи «лист» | Parser.GetUpdatedInstances().Where(model => model.SheetName == picked.SheetName).ToList() |
| Перейти по связи «обжтайп» | Parser.ObjectTypesInstances.FirstOrDefault(model => model.InstanceName == picked.InstanceName)?.Data |
| Перейти по связи «пороги» | SensorThresholdRule.Of(picked) — правило имён порогов выражением не записывается, и честнее показать вызов, чем сочинить строку, которой в GAP нет. |
| Прочитать файл | File.ReadAllText(path) либо path.Select(File.ReadAllText).ToList() |
| Часть пути | Path.GetFileNameWithoutExtension(path) и т. п. |
| Собрать текст | Интерполированная строка: $"{tag}_ALM" |
| Свой код | Своё тело как есть, с объявленными входами. |
Имена переменных
Section titled “Имена переменных”Переменные в показе называются по виду шага, а не по имени фигуры: фигуры называют по-русски, и «найтиПервый» посреди FirstOrDefault читалось бы как случайная вставка. Имя говорит, что в переменной лежит: found, picked, field, linked, text, part.
Тип возврата в подписи
Section titled “Тип возврата в подписи”Подпись метода в показе учитывает форму того, чем схема заканчивается, — включая разобранный «Свой код». Без этого схема, кончающаяся кодом, всегда объявлялась строкой.
| Форма | Тип в подписи |
|---|---|
| один объект | IProjectObject |
| список объектов | IReadOnlyList<IProjectObject> |
| одно значение | string |
| список значений | IReadOnlyList<string> |
Чего в показе нет
Section titled “Чего в показе нет”- Постоянной панели показа кодом больше нет — что реально произойдёт, отвечает ведомость прогона, а не код.
- Показ не компилируется и не запускается. Проверить код можно только у шага «Свой код», кнопкой «Проверить» в окне кода.