«Найти объекты» и «Взять N-й»
Это два действия, но устроены они одинаково: условие, источник, порядок — общие. Отличие ровно одно: «Найти объекты» отдаёт весь список подошедших, «Взять N-й» — один объект под указанным номером.
Строки шага
Section titled “Строки шага”| Строка | Обязательна | Что это |
|---|---|---|
| Где искать | нет | Источник объектов. По умолчанию у «Найти объекты» — все объекты, у «Взять N-й» — объекты ПЛК. Источника нельзя подать связью: он задаёт поведение шага, а не значение. |
| Объекты | да | Появляется только при источнике в пришедшем. При поиске по проекту этой строки нет вовсе — иначе она пустовала бы обязательной строкой и проверка требовала бы заполнить то, что шагу не нужно.Принимает не только объекты: словари (отбираются по ключам), тексты и числа (из них берут по номеру). |
| Какой по счёту / Номер | нет | Только у «Взять N-й». Считается с единицы, по умолчанию 1. Можно вписать, можно подать связью. |
| строки условия | — | Операнды условия стоят в самом условии, отдельными строками шага их не дублируют. |
| Найдено / Объект | выход | «Найдено» — объекты, прошедшие условие. «Объект» — объект под этим номером среди подходящих либо пусто. |
Где искать
Section titled “Где искать”Тринадцать пунктов, у каждого своё пояснение под пунктом. Полный разбор — на странице Источники объектов. Коротко самое важное:
- первые четыре пункта — это один и тот же прогон, источник только сужает список;
в пришедшем— не прогон, а то, что нашёл шаг выше;- остальные — свои модели со своими полями: обжтайпы, карта полевых тегов, уровни тревог, глобальные объекты HMI, данные симулятора, модули Unimod, устройства с листов
MB.; - два пункта про Modbus — разные вещи, и на экране они подписаны иначе, чем лежат в файле.
Фраза шага меняется от источника
Section titled “Фраза шага меняется от источника”| Источник | Фраза |
|---|---|
| любой, кроме «в пришедшем» | найти объекты ПЛК, у которых TAG равно |
| условий нет | найти объекты ПЛК — все подряд, условий нет |
в пришедшем | оставить из них те, у которых TAG равно |
в пришедшем, условий нет | оставить их все — условий нет |
У «Взять N-й» так же, но с номером: взять второй объект, взять из них второй, взять объект под номером ↰ шаг 2.
Условие
Section titled “Условие”Условие живёт внутри шага и правится там же. Подробный разбор — на странице Условие отбора. Три вещи, которые надо знать здесь:
- Пустое условие законно. Новый шаг приходит без условий, и это значит «все подряд». Заглушки вида «в InstanceData есть ключ “ключ”» больше нет: она выглядела как настоящее условие, которое кто-то уже заполнил, и её сначала надо было опознать как мусор.
- Отдельной настройки «тип объекта» нет. Тип — это обычная колонка OBJTYPENAME: сузить по нему поиск можно тем же сравнением, что и по любому другому полю.
- Подсказки полей зависят от источника. Шаг спрашивает тип у источника: обжтайпы — не объекты прогона, и подсказывать для них поля объекта проекта значило бы подсказывать заведомо пустой отбор.
Порядок
Section titled “Порядок”Кнопка «+ порядок» у корневой группы условия. Порядок стоит между отбором и взятием — как ORDER BY между WHERE и выбором строки. Он нужен ровно тому, кто берёт по счёту, — то есть «Взять N-й».
Ключом служит то же условие, что и в отборе, плюс сторона: подходящие идут первыми или последними. Порядок пуст — объекты идут так, как их отдал источник.
Номер у «Взять N-й»
Section titled “Номер у «Взять N-й»”| Свойство | Как есть |
|---|---|
| Считается с единицы | Инженер говорит «второй порог», и вычитать единицу за него должен шаг. В GAP на этом месте стоит thresholds[num - 1] — вычитание там не про смысл, а про то, что массив считается с нуля. |
| По умолчанию 1 | Раньше единица была зашита внутрь, и блок назывался «Найти первый». |
| Читается словом | До десятого номера фраза говорит словом: «первый», «второй», «третий»… Дальше — «№ 11». |
| Можно подать связью | Номер приходит из ячейки или из шага выше. Тогда фраза говорит про шаг, а не обещает постоянный номер. |
Почему нет отдельного действия «взять первый»
Section titled “Почему нет отдельного действия «взять первый»”Оно отличалось бы от «Взять N-й» ровно одним числом. А «Взять N-й» с источником в пришедшем и без условий уже означает «взять из них первый». Блок, отличающийся от соседа настройкой, — это настройка соседа, а не блок.
Что уйдёт дальше
Section titled “Что уйдёт дальше”| Что пришло / искали | «Найти объекты» отдаёт | «Взять N-й» отдаёт |
|---|---|---|
| объекты проекта | объекты | объект |
словари (в пришедшем) | словарь ×N | словарь |
тексты (в пришедшем) | текст ×N | текст |
Что бывает обрывом
Section titled “Что бывает обрывом”| Ситуация | Что говорит шаг |
|---|---|
| Неизвестный источник в файле схемы | «Неизвестный источник “X”. Допустимые: …» — обрыв, а не пустота: пустой список выглядел бы как «в проекте ничего не нашлось» и уехал бы в код ПЛК. |
| Неизвестный вид сравнения | «Неизвестный вид сравнения “X”. Допустимые: …» — обрыв, а не молчаливое «равно»: отбор на нём отдал бы не тот объект, и выглядело бы это как настоящий ответ. |
| Условие спрашивает поля, а пришли тексты | «Условие спрашивает поля, а пришли тексты — полей у них нет. Уберите условие и порядок: из текстов берут по номеру.» |
| На вход «Объекты» пришло что-то третье | «На вход “Объекты” пришло “X” — это не объект, не словарь и не текст, выбирать из такого нечего. Проверьте шаг выше.» |
Типичные цепочки
Section titled “Типичные цепочки”Найти объект по тегу из ячейки
Section titled “Найти объект по тегу из ячейки”- Найти объекты, где
объекты ПЛК, условие: TAG равно аргументуТЕГ; - либо сразу Взять N-й с тем же условием — если нужен один объект.
Пороги датчика
Section titled “Пороги датчика”- Взять N-й: найти датчик по тегу;
- Перейти по связи
пороги; - Взять N-й: источник
в пришедшем, номер из ячейки; - Взять поле.
Разные значения колонки и номер среди них
Section titled “Разные значения колонки и номер среди них”- Найти объекты — все объекты ПЛК;
- Взять поле ModbusName;
- Убрать повторы;
- Номер в списке — каким по счёту стоит своё имя.
Отбор с сужением
Section titled “Отбор с сужением”- Найти объекты — по листу или типу;
- Найти объекты с источником
в пришедшем— сузить по второму признаку. Так шаг встанет сам, если поставить его после шага с объектами.