Skip to content

«Найти объекты» и «Взять N-й»

Это два действия, но устроены они одинаково: условие, источник, порядок — общие. Отличие ровно одно: «Найти объекты» отдаёт весь список подошедших, «Взять N-й» — один объект под указанным номером.

СтрокаОбязательнаЧто это
Где искатьнетИсточник объектов. По умолчанию у «Найти объекты» — все объекты, у «Взять N-й» — объекты ПЛК. Источника нельзя подать связью: он задаёт поведение шага, а не значение.
ОбъектыдаПоявляется только при источнике в пришедшем. При поиске по проекту этой строки нет вовсе — иначе она пустовала бы обязательной строкой и проверка требовала бы заполнить то, что шагу не нужно.
Принимает не только объекты: словари (отбираются по ключам), тексты и числа (из них берут по номеру).
Какой по счёту / НомернетТолько у «Взять N-й». Считается с единицы, по умолчанию 1. Можно вписать, можно подать связью.
строки условия—Операнды условия стоят в самом условии, отдельными строками шага их не дублируют.
Найдено / Объектвыход«Найдено» — объекты, прошедшие условие. «Объект» — объект под этим номером среди подходящих либо пусто.

Тринадцать пунктов, у каждого своё пояснение под пунктом. Полный разбор — на странице Источники объектов. Коротко самое важное:

  • первые четыре пункта — это один и тот же прогон, источник только сужает список;
  • в пришедшем — не прогон, а то, что нашёл шаг выше;
  • остальные — свои модели со своими полями: обжтайпы, карта полевых тегов, уровни тревог, глобальные объекты HMI, данные симулятора, модули Unimod, устройства с листов MB.;
  • два пункта про Modbus — разные вещи, и на экране они подписаны иначе, чем лежат в файле.

Фраза шага меняется от источника

Section titled “Фраза шага меняется от источника”
ИсточникФраза
любой, кроме «в пришедшем»найти объекты ПЛК, у которых TAG равно
условий нетнайти объекты ПЛК — все подряд, условий нет
в пришедшемоставить из них те, у которых TAG равно
в пришедшем, условий нетоставить их все — условий нет

У «Взять N-й» так же, но с номером: взять второй объект, взять из них второй, взять объект под номером ↰ шаг 2.

Условие живёт внутри шага и правится там же. Подробный разбор — на странице Условие отбора. Три вещи, которые надо знать здесь:

  1. Пустое условие законно. Новый шаг приходит без условий, и это значит «все подряд». Заглушки вида «в InstanceData есть ключ “ключ”» больше нет: она выглядела как настоящее условие, которое кто-то уже заполнил, и её сначала надо было опознать как мусор.
  2. Отдельной настройки «тип объекта» нет. Тип — это обычная колонка OBJTYPENAME: сузить по нему поиск можно тем же сравнением, что и по любому другому полю.
  3. Подсказки полей зависят от источника. Шаг спрашивает тип у источника: обжтайпы — не объекты прогона, и подсказывать для них поля объекта проекта значило бы подсказывать заведомо пустой отбор.

Кнопка «+ порядок» у корневой группы условия. Порядок стоит между отбором и взятием — как ORDER BY между WHERE и выбором строки. Он нужен ровно тому, кто берёт по счёту, — то есть «Взять N-й».

Ключом служит то же условие, что и в отборе, плюс сторона: подходящие идут первыми или последними. Порядок пуст — объекты идут так, как их отдал источник.

СвойствоКак есть
Считается с единицыИнженер говорит «второй порог», и вычитать единицу за него должен шаг. В GAP на этом месте стоит thresholds[num - 1] — вычитание там не про смысл, а про то, что массив считается с нуля.
По умолчанию 1Раньше единица была зашита внутрь, и блок назывался «Найти первый».
Читается словомДо десятого номера фраза говорит словом: «первый», «второй», «третий»… Дальше — «№ 11».
Можно подать связьюНомер приходит из ячейки или из шага выше. Тогда фраза говорит про шаг, а не обещает постоянный номер.

Почему нет отдельного действия «взять первый»

Section titled “Почему нет отдельного действия «взять первый»”

Оно отличалось бы от «Взять N-й» ровно одним числом. А «Взять N-й» с источником в пришедшем и без условий уже означает «взять из них первый». Блок, отличающийся от соседа настройкой, — это настройка соседа, а не блок.

Что пришло / искали«Найти объекты» отдаёт«Взять N-й» отдаёт
объекты проектаобъектыобъект
словари (в пришедшем)словарь ×Nсловарь
тексты (в пришедшем)текст ×Nтекст
СитуацияЧто говорит шаг
Неизвестный источник в файле схемы«Неизвестный источник “X”. Допустимые: …» — обрыв, а не пустота: пустой список выглядел бы как «в проекте ничего не нашлось» и уехал бы в код ПЛК.
Неизвестный вид сравнения«Неизвестный вид сравнения “X”. Допустимые: …» — обрыв, а не молчаливое «равно»: отбор на нём отдал бы не тот объект, и выглядело бы это как настоящий ответ.
Условие спрашивает поля, а пришли тексты«Условие спрашивает поля, а пришли тексты — полей у них нет. Уберите условие и порядок: из текстов берут по номеру.»
На вход «Объекты» пришло что-то третье«На вход “Объекты” пришло “X” — это не объект, не словарь и не текст, выбирать из такого нечего. Проверьте шаг выше.»

Найти объект по тегу из ячейки

Section titled “Найти объект по тегу из ячейки”
  1. Найти объекты, где объекты ПЛК, условие: TAG равно аргументу ТЕГ;
  2. либо сразу Взять N-й с тем же условием — если нужен один объект.
  1. Взять N-й: найти датчик по тегу;
  2. Перейти по связи пороги;
  3. Взять N-й: источник в пришедшем, номер из ячейки;
  4. Взять поле.

Разные значения колонки и номер среди них

Section titled “Разные значения колонки и номер среди них”
  1. Найти объекты — все объекты ПЛК;
  2. Взять поле ModbusName;
  3. Убрать повторы;
  4. Номер в списке — каким по счёту стоит своё имя.
  1. Найти объекты — по листу или типу;
  2. Найти объекты с источником в пришедшем — сузить по второму признаку. Так шаг встанет сам, если поставить его после шага с объектами.