DeTrah пишет:И еще вопрос: как задать условие "или"/"и" для узлов классификатора?
Такой вариант не работает:
Dim hor, udovl, neud
norm= "Нормальный": vys = "Высокий"
q.AddCondition 1, norm Or vys, "ATTR_SHED_PRIOR_EX"
Вылазит ошибка: несоответствие типа String: ...
И такой не работает:
q.AddCondition 1, "NODE_PRIOR_HIGH" Or "NODE_PRIOR_NORMAL", "ATTR_SHED_PRIOR_EX"
А вот такой без Or работал нормально:
q.AddCondition 1, "Высокий", "ATTR_SHED_PRIOR_EX"
norm Or vys
В данном случае результатом операции является булевый тип. Т.е. обе ваши строки, если они не пустые, приводятся к значению истина и затем над ними производится операция OR. Этот булевый результат вы пытаетесь передать в функцию, которая ждет для данного аргумента строку
"NODE_PRIOR_HIGH" Or "NODE_PRIOR_NORMAL"
То же самое, вы используете булевую операцию над строками
Чтобы задать условие OR или AND в строке, заключите эти операторы в строку.
Например,
norm & " Or " & vys
или
"NODE_PRIOR_HIGH" & " Or " & "NODE_PRIOR_NORMAL"
Есть еще одна немаловажная деталь, которую вам наверняка придется использовать. Когда вы формируете подобную строку, необходимо учитывать наличие кавычек в выражении. Например, если вы должны сформировать строку которая записывается как
Условие_1 Оператор "Условие_2" (второе условие должно быть заключено в кавычки), то такую строку необходимо сформировать в соответствии с синтаксисом языка.
Например, чтобы в бейсике создать одну двойную кавычку в строке, нужно записать подряд четыре кавычки """". Крайние будут обрамлять строку, а две внутренние будут преобразованы в одну кавычку.