1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

Тема в разделе "Базы данных и администрирование", создана пользователем LittleFairy, 6 авг 2008.

  1. LittleFairy

    LittleFairy Гость

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

    Код:
    СпрНом=СоздатьОбъект("Справочник.Номенклатура");
    СпрНом.ВыбратьЭлементы();
    Пока СпрНом.ПолучитьЭлемент() = 1 Цикл	 
    Если СпрНом.Наименование = Товар Тогда...
    Сожержимое переменной Товар понятное дело берется из Справочник.Номенклатура .
    Проблема в том, что условие
    Код:
    СпрНом.Наименование = Товар
    не выполняется.
    Если строки отдельно выводить в окно сообщений, то на глаз разницы никакой нет. Даже код символов сравнил на всякий случай ) !
    С чем это может быть связано???
     
  2. LSH

    LSH Гость

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

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

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

    LittleFairy Гость

    Репутация:
    0
    Спасибо, вопрос исчерпан :)
     
  4. Hryv

    Hryv Гость

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

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

    Код:
    Если СокрЛП(СпрНом.Наименование) = СокрЛП(Товар.Наименование) Тогда
     
Загрузка...

Поделиться этой страницей