Имя: Пароль:
1C
1С v8
Запрос
0 Altuntop
 
07.02.12
07:15
Помогите пожалуйста. Как правильно отобрать контрагентов у которых Не Пустой Комментарий.


При таком запросе выдает всех контрагентов:

Процедура КнопкаВыполнитьНажатие(Кнопка)
Контра=Справочники.Контрагенты.ПустаяСсылка().Комментарий;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Контра",Контра);
Запрос.Текст="ВЫБРАТЬ
            |    Контрагенты.Ссылка КАК Контрагент
            |ИЗ
            |    Справочник.Контрагенты КАК Контрагенты
            |ГДЕ
            |    НЕ Контрагенты.Комментарий ЕСТЬ NULL";
Результат=Запрос.Выполнить().Выгрузить();
Для Каждого Стр Из Результат Цикл
Сообщить(""+Стр.Контрагент);
КонецЦикла;
КонецПроцедуры
1 Wobland
 
07.02.12
07:16
да когда ж вы станете названия более творчески изобретать?
Комментарий=""
2 D_Pavel
 
07.02.12
07:16
|ГДЕ
            |    НЕ Контрагенты.Комментарий = """";
3 Altuntop
 
07.02.12
07:18
В этом случае выдает ошибку типа нельзя сравнивать строки неограниченной длины  типа такого
4 Wobland
 
07.02.12
07:19
(3) ВЫРАЗИТЬ(Комментарий КАК Строка(800))<>""
5 Altuntop
 
07.02.12
07:20
Спасибо!
Получилось!
6 mkanaev
 
07.02.12
07:22
Комментарий - реквизит типа строка неограниченной длины... реквизиты неограниченный длины нельзя сравнивать в запросах поэтому нужно выполнить метод Выразить(Комментарий как Строка(разряд)) и сравнить с пустой строкой
7 D_Pavel
 
07.02.12
07:23
Лучше не делать строки неограниченной длины. С ними потом труднее работать.
8 mkanaev
 
07.02.12
07:23
(7) верно и к тому же эти реквизиты не индексируются, как следствие будет табл скан, это плохо. Но Комментарий это стандарный реквизит
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан