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

Не получается определить значение переменной при сравнении

Автор Yury_B, 28 апр 2023, 15:56

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

Yury_B

Добрый день.
Хочу задать значение  переменной "ПроцентУвеличения" в зависимости от выбраного значения "Температура" в документе. В функции прописал следующее:
         Если       ПустаяСтрока(Температура) Тогда ПроцентУвеличения = 0
         ИначеЕсли    Температура = ">0 C" Тогда ПроцентУвеличения = 0
         ИначеЕсли    Температура = "0 С - 5 С" Тогда ПроцентУвеличения = 5
         ИначеЕсли    Температура = "-6 С - 10 С"  Тогда ПроцентУвеличения = 7
         ИначеЕсли    Температура = "<-10C" Тогда ПроцентУвеличения = 10
         КонецЕсли;
Если строка пустая то все хорошо.
Сами значения температур определяются, но при сравнении "Ложь". Где ошибка?

alexandr_ll

Yury_B, Какое значение принимает переменная Температура, откуда она берется? Возможно, в строке есть лишние пробелы.

Yury_B

alexandr_ll,
Значение температура из процедуры, там строка
  "Объект.НормаРасхода=ПолучитьНормуРасхода(Объект.Автомобиль,Объект.Температура, Объект.Дата)"
в функцию "Функция ПолучитьНормуРасхода(Автомобиль,Температура,Дата)"

Значение "Температура" видно при отладке. Я даже пробовал копировать его в строку, но при сравнении все равно "Ложь"

Список в самом документе  выпадает по ссылке на Перечисления

LexaK

приведите/скопируйте сюда текст что конкретно в переменной  Температура  ?
если помогло нажмите: Спасибо!

alexandr_ll

Yury_B, Если в объекте температура - это перечисление, зачем сравнивать его со строкой?

Yury_B


Максим75

Yury_B, ну, так у Температуры тип значения ПеречислениеССылка, а не строка.
надо сравнивать со значениями данного перечисления, а не со строкой.
это разные типы.

Yury_B

Решил проблему следующим путем - создал справочник с полем.
Я не понимаю как мне сделать подстановку в поле со списком если оно по ссылке на справочник?
В процедуре написал -    Объект.Температура = ПодстановкаТемпературы(Объект.Дата)
В функции:&НаСервереБезКонтекста
Функция ПодстановкаТемпературы(Дата)
    Если Не ПустаяСтрока (Дата)
        Тогда
    //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    // Данный фрагмент построен конструктором.
    // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЖурналТемпературСрезПоследних.Период КАК Период,
        |    ЖурналТемпературСрезПоследних.ТСредняя КАК ТСредняя
        |ИЗ
        |    РегистрСведений.ЖурналТемператур.СрезПоследних(&Период, ) КАК ЖурналТемпературСрезПоследних
        |ГДЕ
        |    ЖурналТемпературСрезПоследних.Период = &Период";
   
    Запрос.УстановитьПараметр("Период", Дата);
   
    РезультатЗапроса = Запрос.Выполнить();
   
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
   
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        // Вставить обработку выборки ВыборкаДетальныеЗаписи
    КонецЦикла;
   
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    Темп =ВыборкаДетальныеЗаписи.ТСредняя;
    Если Темп = "Ноль" ИЛИ Темп >0 Тогда  Температура = "Выше 0"
            ИначеЕсли Темп <=0 И Темп >=-5 Тогда  Температура = "от 0 до -5"
            ИначеЕсли Темп <=-6 И Темп >=-10 Тогда Температура = "от -6 до -10"
            ИначеЕсли Темп  >-10 Тогда Температура = "менее -10"
                   
            КонецЕсли;
    КонецЕсли;
    Возврат Температура;   
    КонецФункции;

Теги:

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

Рейтинг@Mail.ru

Поиск