Skip to content

Библиотеки и решение

Три слова, которые надо различать

Section titled “Три слова, которые надо различать”
СловоЧто это
СхемаОдин файл. В нём входы, шаги, связи и выход. Имя схемы — имя файла и имя вызова.
БиблиотекаПапка со схемами, у которой есть имя и, обычно, манифест — файл, объявляющий её состав. Имя нужно затем, чтобы в разговоре звучало «это из Скада.База», а не путь к папке на сетевом диске.
РешениеФайл *.scriptsln.json: список подключённых библиотек по порядку. Порядок — это и есть порядок разрешения имени.

Порядок разрешения имени

Section titled “Порядок разрешения имени”

Когда из ячейки приходит вызов, конструктор ищет схему с таким именем, идя по библиотекам решения сверху вниз. Первая найденная и считается. На экране это сказано так: «Порядок подключения = порядок разрешения. Верхняя библиотека перекрывает нижние.»

Порядок меняется кнопками ▲ и ▼ у библиотеки в рейле — перестановкой строк, а не пересборкой программы.

  1. Схема из библиотеки, стоящей выше — перекрывает одноимённую из библиотеки ниже.
  2. Любая схема решения — перекрывает одноимённую функцию GAP.dll.
  3. Ничего не нашлось — вызов уходит в GAP.dll по-старому.

Где физически лежат схемы

Section titled “Где физически лежат схемы”

Схемы лежат в подпапке Scripts рядом со сборкой Uniplant Atomix — одно место на все проекты. Там же лежит файл решения и папки библиотек.

Источник схем бывает трёх видов, и порядок этих видов — тот же порядок перекрытия:

Вид источникаГде это
проектПапка проекта. Перекрывает всё остальное. (Пока не используется.)
рядом с программойПапка Scripts рядом со сборкой AutoMix. Текущее место хранения.
общая библиотекаБиблиотека на общем диске, подключённая к решению.
КнопкаЧто делает
«Завести новую библиотеку…»Создаёт папку с манифестом и подключает её к решению.
«Подключить свою библиотеку…»Спрашивает папку или файл манифеста и добавляет строку в решение.
«Отключить от решения»Убирает строку из решения. Файлы остаются на диске; схемы просто перестают считаться.
«Переименовать библиотеку»Меняет имя в манифесте. На имена схем и на вызовы из книг это не влияет.
«Показать папку библиотеки»Открывает папку в проводнике.

Раздел «НЕ ПОДКЛЮЧЕНО К РЕШЕНИЮ»

Section titled “Раздел «НЕ ПОДКЛЮЧЕНО К РЕШЕНИЮ»”

В рейле под списком библиотек показываются те, что лежат рядом, но к решению не подключены — с пометкой рядом, не подключено. Их схемы не считаются. Кнопка + подключает.

Состав библиотеки: зачем манифест

Section titled “Состав библиотеки: зачем манифест”

Библиотека может ничего не объявлять — тогда её содержимое это просто то, что лежит в папке. Но если состав объявлен манифестом, появляется важная возможность: сказать вслух о недостающей схеме. Файл потеряли или не забрали из SVN — конструктор об этом скажет, а не сделает вид, что схемы никогда не было.

Обратная сторона: схема, которая лежит в папке, но в манифесте не объявлена, не считается. Такие схемы каталог показывает отдельным разделом с кнопкой «объявить».

Схема, файл которой не читается либо в которой проверка нашла ошибки, из каталога не исчезает: «сломано» и «нет такой» — разные ответы. В каталоге она помечена, вызов из ячейки уходит в GAP.dll, а в лог пишется, почему схема не посчиталась.