Имя: Пароль:
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) верно и к тому же эти реквизиты не индексируются, как следствие будет табл скан, это плохо. Но Комментарий это стандарный реквизит