• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Сравнение строк

  • Автор темы LittleFairy
  • Дата начала
L

LittleFairy

Здравствуйте!
1с 7.7 026
Имеется такой не сложный код:

Код:
СпрНом=СоздатьОбъект("Справочник.Номенклатура");
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл	 
Если СпрНом.Наименование = Товар Тогда...

Сожержимое переменной Товар понятное дело берется из Справочник.Номенклатура .
Проблема в том, что условие
Код:
СпрНом.Наименование = Товар
не выполняется.
Если строки отдельно выводить в окно сообщений, то на глаз разницы никакой нет. Даже код символов сравнил на всякий случай ) !
С чем это может быть связано???
 
L

LSH

С длиной строки.
Если Наименование длиной 100 символов, то выглядит оно как "Товар [...еще пробелы до 100 символов]".
Сравнивая же эту строку с переменной Товар, длина которой НЕ 100 символов, вы получите неравенство в любом случае.
Либо сравнивайте:

СпрНом=СоздатьОбъект("Справочник.Номенклатура");
СпрНом.ВыбратьЭлементы();
Пока СпрНом.ПолучитьЭлемент() = 1 Цикл
Если СокрЛП(СпрНом.Наименование) = СокрЛП(Товар) Тогда...

Либо, используйте функцию Формат() для приведения строк к одной длине.
 
H

Hryv

Вообще то проблема была не в длине строк
СокрЛП() попутно преобразовала 'Товар' в строку (как я понял 'Товар' содержит элемент справочника)
Но если бы в конфигураторе предстовление для Справочник.Номенклатура было не наименование, а код, то это не сработало бы
И кстати, если нет уникальности по нименованию, то будет глючить

Правильнее сделать, если надо сравнить именно элементы
Код:
Если СпрНом.ТекущийЭлемент() = Товар Тогда

Или
Если надо сравнить именно нименования, то
Код:
Если СпрНом.Наименование = Товар.Наименование Тогда

или еще

Код:
Если СокрЛП(СпрНом.Наименование) = СокрЛП(Товар.Наименование) Тогда
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!