Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как правильно сравнивать два строковых реквизита? 1с 7.7 конф 7.7.00
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
ZUBR
Здравствуйте. Привожу кусок кода модуля документа АктПриема

Изм=0;
Мистер.ПочтовыйАдрес=Адрес;
Если  Мистер.ПочтовыйАдрес<>Адрес Тогда
                    Мистер.ПочтовыйАдрес =Адрес;
                    Изм=1;
                КонецЕсли;

И после этого оказывается, что Изм=1. Почему?

Поле ввода Адрес в документе заполнено вручную.
Мистер - это элемент справочника Контрагенты (через СоздатьОбъект)
Спасибо!
denis84
ZUBR @ Сегодня, 2:27 необходимо зарегистрироваться для просмотра ссылки ,
Добрый день! Вот пример:

Мистер =СоздатьОбъект("Справочник.Контрагенты");    
Изм=0;
Мистер.НайтиПоКоду(Контр.Код,0);       //контр - реквизит на форме
КК = Мистер.ТекущийЭлемент();

Если  ВРЕГ(СокрЛП(КК.ПочтовыйАдрес))<>ВРЕГ(СокрЛП(Адрес)) Тогда
    изм = 0;
    сообщить(изм);
Иначе  
    Изм=1;
    сообщить(изм);
КонецЕсли;
pablo
У Вас может быть разная длина полей ПочтовыйАдрес и Адрес. Например, почтовый адрес 20 символов, а адрес - 50 символов. Копирование произойдет с отсечением лишних символов, а сравнение не выполнится, т.к. длина строк разная.
volodya1122
Невелике пояснення до відповіді denis84.
Чому використовується СокрЛП. Тому, що для текстового поля, його значення завжди займає всі символи відведені для нього. Якшо вказали наприклад 100 символів, то незалежно від того скільки заповнили, строка для 1С буже виглядати так (наприклад Адреса: "м. Київ, вул Банківська __________________________ " - тобто допониться пробілами до 100 символів)

П.с., не по темі. Бачу ви всі повідомлення пишети вночі, А спите коли, вдень? При такій великій нагрузці можна скоро "вигоріти" на роботі
ZUBR
volodya1122 @ Вчера, 10:27 необходимо зарегистрироваться для просмотра ссылки ,
Я взагалі не сплю)));
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.