Редактор формул таблицы nanoCAD: наличие подстроки в строке

Здравствуйте.

Есть отчёт в таблице нанокад.

Требуется в атрибутах блоков проверять наличие подстроки.

То есть нужна функция наподобие:
=Функция_проверки_подстроки(Object."АТРИБУТ"; "ПОДСТРОКА"; если_да; если_нет)

Справка Нанокада выдаёт немало функций редактора формул. Но найти требуемую не могу.

Подскажите как это сделать.

Теги темы:

Ответы

  • в общем случае часть строки искать не умеет

    нет такой функции

  • Вот прямо такого нет

    можно

  • Лучше конкретный пример привести, сроку можно по любому символу поделить:

    02:54 Редактируем выражение, теперь будем использовать Правую часть строки от «L=»: subSplit (Object.McPropNoteString1; "L=";1)

  • Спасибо за участие!

    Но для использования substring требуется знать начальное положение подстроки, а она может быть в любом месте.

    subsplit почти подходит, но разделителем в ней служит только один символ! В вашем примере разделителя будет два: либо "L", либо "=". Но не "L=" !

    Вот мой конкретный пример, где я пробовал использовать такую конструкцию:

    =iff(subsplit(Object."ОБОЗНАЧЕНИЕ";"СП";1)=="";0;1)

    Здесь разделителями получаются одновременно "С" и "П", а не "СП".

  • MCAD
    отредактировано 11 июл
    1. Это полный набор обозначений?
    2. А почему в третьей строке в 4 и 5й колонке "1"?

    Я смотрю на картинку и мне кажется, что если есть "(", то можно в четвертой и пятой колонках писать =count(), при наличии группировки по "С"

    1. Нет. Обозначения могут быть самые разные. Искомые подстроки всегда будут "СП" и "СИ". Они могут быть, а могут не быть в обозначении.
    2. Потому что функция не работает, как хотелось бы.

    Скобок может не быть. А могут быть, но с цифрами, что нам не надо.

  • Просто ты пытаешься под свои бизнес процессы подстроить нанокад,

    Как правило приходится наоборот, логику приложений подстраивать под возможности программы и свои навыки.

    Если нужна безграничная гибкость, велком NET, ну или хотя бы лисп и вебеа.

    Из коробки нано тоже многое умеет, но проще знать и учитывать его возможности , чем потом строить франкенштейнов

  • MCAD
    отредактировано 12 июл

    Какая именно неправильно работает?

    Так проверьте, пожалуйста

    @doctorRAZ ,В блоке есть необходимые атрибуты.

    так что законное желание :) ,упростить процесс.

  • MCAD
    отредактировано 11 июл

    Кстати, если хотите, то эти атрибуты можно высчитывать и принудительно возвращать (ctlSetValue()) в блок. Но уже утром.

  • Добавил =ctlSetValue(off(0;-2);Object."СП")+ctlSetValue(off(0;-1);Object."СИ")

  • MCAD
    отредактировано 12 июл

    »Если нужна безграничная гибкость, велком NET, ну или хотя бы лисп и вебеа.

    Только для этого надо сначала научиться проектировать, быстро и без ошибок, как @doctorRAZ

    Организовать двухстороннюю связь отчета и объектов в чертеже будет достаточно проблематично.

  • Всем спасибо!
    Была идея отказаться от атрибутов (СП, СИ) и вынести это в обозначение для наглядности.

    В целом ситуация ясна, буду исходить из текущих возможностей Нанокада.

  • Это значит, что решение не подошло?

  • Кожевников_Юра
    отредактировано 12 июл

    Нет.
    ctlSetValue это крутая функция, я её использую в других местах. Но здесь атрибуты не нужны, и записывать в них не надо.
    subRight требует фиксированного формата записи. Такого не будет. Почему-то таблица в вашем примере после обновления выдаёт ошибки:

    Версия Нанокада 20.1
    Спасибо за ответы, я хотел выяснить есть ли недокументированная функция, её нет.

    Поэтому решение такое - изначальный вариант, но с одним символом:
    =iff(subsplit(Object."ОБОЗНАЧЕНИЕ";"П";1)=="";0;1)
    =iff(subsplit(Object."ОБОЗНАЧЕНИЕ";"И";1)=="";0;1)

  • MCAD
    отредактировано 12 июл

    Почему-то таблица в вашем примере после обновления выдаёт ошибки:

    Старая версия.

    Это добавлено позже

  • MCAD
    отредактировано 12 июл

    subRight требует фиксированного формата записи. 

    Нужно бы реальный пример. Условия можно формировать по-разному.

    У меня всё работает

    https://cloud.mail.ru/public/JVDF/gKhrSnXqb