Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 10:57

Проблемы с конструкцией Если

Автор bkmz_1_, 03 авг 2013, 11:02

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

bkmz_1_

Имею код:

&НаКлиенте
Процедура ВидЗаправкиПриИзменении(Элемент)
    Сообщить(Объект.ВидЗаправки);
    Если Объект.ВидЗаправки = "Склад" Тогда
  Сообщить("Работает");
   КонецЕсли;
КонецПроцедуры


Первое сообщение выдает "Склад", а второе не выдает "Работает". Что не правильно?

bkmz_1_

Объект.ВидЗаправки это выпадающий список (склад, талоны, наличка) который подтягивается из перечеслений (неизменяемых справочников). Может проблема в типах данных?

mixqn

Цитата: bkmz_1_ от 03 авг 2013, 11:46Может проблема в типах данных?
конечно в этом!
ставьте точку останова и смотрите значение Объект.ВидЗаправки и его тип.

если, как вы пишите, это перечисление, то естественно значение перечисления не равно строке, и ваше условие будет выглядеть так:
Если Объект.ВидЗаправки = Перечисления.ИмяПеречисления.Склад Тогда
  Сообщить("Работает");
КонецЕсли;

тут вместо ИмяПеречисления нужно подставить имя перечисления, как оно задано в конфигурации, вместо Склад - имя значения перечисления




Добавлено: 03 авг 2013, 14:23


есть другой вариант - привести Объект.ВидЗаправки к типу строка:
Если Строка(Объект.ВидЗаправки) = "Склад" Тогда
  Сообщить("Работает");
КонецЕсли;

в любом случае если вы хотите, чтобы работало сравнение на равенство, сравниваемые значения должны быть одного типа (иначе всегда будет Ложь).

первый вариант (сравнивать со значением перечисления) предпочтительнее, скажем так, это просто более правильно

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск