Оператов OR (ИЛИ) в Вертикали

Автор tur, 30.10.14, 10:50:59

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

tur

Уважаемые господа!

Помогите кто чем сможет!

В конфигураторе Вертикали есть такой вычисляемый атрибут:

Вот в таком виде он не срабатывает:
   if obj.vrAttrByName("texnolog").vrValue = ("Фамилия 1" || "Фамилия 2" || "Фамилия 3") then    ' Проверка на соответствии фамилии и бюро   
     byroman_get = "Бюро 1"
     obj.vrAttrByName("man").vrValue = byroman_get
   end if

И в таком виде он не срабатывает:
   if obj.vrAttrByName("texnolog").vrValue = ("Фамилия 1" or "Фамилия 2" or "Фамилия 3") then    ' Проверка на соответствии фамилии и бюро   
     byroman_get = "Бюро 1"
     obj.vrAttrByName("man").vrValue = byroman_get
   end if

А в таком виде он легко срабатывает:
   if obj.vrAttrByName("texnolog").vrValue = "Фамилия 1" then    ' Проверка на соответствии фамилии и бюро   
     byroman_get = "Бюро 1"
     obj.vrAttrByName("man").vrValue = byroman_get
   end if
   if obj.vrAttrByName("texnolog").vrValue = "Фамилия 2" then    ' Проверка на соответствии фамилии и бюро   
     byroman_get = "Бюро 1"
     obj.vrAttrByName("man").vrValue = byroman_get
   end if
   if obj.vrAttrByName("texnolog").vrValue = "Фамилия 3" then    ' Проверка на соответствии фамилии и бюро   
     byroman_get = "Бюро 1"
     obj.vrAttrByName("man").vrValue = byroman_get
   end if


Но не хочется городить много блоков, подскажите, где ошибка. Хотелось бы использовать оператор ИЛИ.

oit

Как-то так:

  if obj.vrAttrByName("texnolog").vrValue = "Фамилия 1" or
    obj.vrAttrByName("texnolog").vrValue = "Фамилия 2" or
    obj.vrAttrByName("texnolog").vrValue = "Фамилия 3" then   

     byroman_get = "Бюро 1"
     obj.vrAttrByName("man").vrValue = byroman_get

   end if
+ Благодарностей: 1

tur


nnspu


  if obj.vrAttrByName("texnolog").vrValue = "Фамилия 1" or_
    obj.vrAttrByName("texnolog").vrValue = "Фамилия 2" or_
    obj.vrAttrByName("texnolog").vrValue = "Фамилия 3" then   

     byroman_get = "Бюро 1"
     obj.vrAttrByName("man").vrValue = byroman_get

   end if

или

Select Case obj.vrAttrByName("texnolog").vrValue
Case "Фамилия 1","Фамилия 2","Фамилия 3"
byroman_get = "Бюро 1"
obj.vrAttrByName("man").vrValue = byroman_get
End Select
+ Благодарностей: 1

teplinskiy

Цитата: tur от 30.10.14, 13:34:56
...не работает!
при сравнении строк, не лишним будет перевод символов этих строк в верхний регистр с помощью функции - UCase()
должно быть в таком виде:

  stFIOTehnolog = obj.vrAttrByName("texnolog").vrValue
  if (UCase(stFIOTehnolog) = UCase("Фамилия 1")) or_
       (UCase(stFIOTehnolog) = UCase("Фамилия 2")) or_
         (UCase(stFIOTehnolog) = UCase("Фамилия 2")) then
    ...     

но данная проверка будет работать только в момент загрузки ТП в ВЕРТИКАЛЬ.
Например, если открыта вкладка "Атрибуты" и значение атрибута "texnolog" перевыбрать, то функция не выполнится, пока в этой функции не появится подписка на смену атрибута "texnolog"
+ Благодарностей: 1

tur

Сработал скрипт:

Select Case obj.vrAttrByName("texnolog").vrValue
   Case "Фамилия 1","Фамилия 2","Фамилия 3"
      byroman_get = "Бюро 1"
      obj.vrAttrByName("man").vrValue = byroman_get
End Select

Большое спасибо всем кто откликнулся!