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

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

LittleFairy

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

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

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

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

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

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

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

или еще

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab