Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 18:27

Обработка выгрузка в таблицу справочника

Автор leo-oksana, 13 окт 2016, 14:16

0 Пользователей и 1 гость просматривают эту тему.

leo-oksana

Процедура ПроверкаКонтрагентов(Команда)
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Контрагенты.Наименование КАК Наименование,
        |    Контрагенты.ИНН КАК ИНН,
        |    Контрагенты.КПП КАК КПП,
        |    Контрагенты.КодПоОКПО КАК КодПоОКПО,
        |    Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |    Контрагенты.Наименование = &пустаяСтрока
        |    ИЛИ Контрагенты.ИНН = &пустаяСтрока
        |    ИЛИ Контрагенты.КПП = &пустаяСтрока
        |    ИЛИ Контрагенты.КодПоОКПО = &пустаяСтрока
        |    ИЛИ Контрагенты.ЮрФизЛицо = &пустоеЗначение"
        ;
    Запрос.УстановитьПараметр("пустаяСтрока","");    
    Запрос.УстановитьПараметр("пустоеЗначение",Перечисления.ЮрФизЛицо.ПустаяСсылка());    
    
    РезультатЗапроса = Запрос.Выполнить().Выбрать();
    Объект.Список.Очистить();
    Пока РезультатЗапроса.Следующий() Цикл
        НоваяСтрока=Объект.Список.Добавить();
        ЗаполнитьЗначенияСвойств(НоваяСтрока,РезультатЗапроса)
    КонецЦикла
        
КонецПроцедуры


Что не так? Надо выгрузить контрагентов  с пустыми строками в таблицу. Не работает, не пойму - почему...

cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Kironten

Как минимум - на клиенте запрос не будет работать.

Afinogen

я бы вместо приравнивания к пустой строке передавал список, т.е. не "= &пустаяСтрока",  а в (&СписокПусто)
и соответственно в список загнал бы кроме того что  вы передаете еще NULL, НЕОПРЕДЕЛЕНО

Добавлено: 14 окт 2016, 10:58


но проще сначала вообще убрать эти провереки на равенства и в отладчике посмотреть  какие типы для пустых строк запрос возвращает, что то  мне подсказывает что  там NULL-ы будут

Luzer1C

ЦитироватьКонтрагенты.Наименование = ""
ИЛИ Контрагенты.ИНН = ""
ИЛИ Контрагенты.КПП = ""
ИЛИ Контрагенты.КодПоОКПО = ""
ИЛИ Контрагенты.ЮрФизЛицо = Значение(Перечисление.ЮрФизЛицо.ПустаяСсылка)

А так условие запилить не вариант?
По последним рекомендациям от 1С использование предлога "ИЛИ" крайне нежелательно. Лучше использовать временные таблицы.
Халамбалам.

ilyay

А я бы просто поля все эти выбрал, а при обходе выборки (на сервере приложений) проверял через "ПустаяСтрока(Выборка.ИНН) или ..."
Добавлено: 14 окт 2016, 12:42


А запрос лучше в консоли запросов проверить.

cska-fanat-kz

Цитата: Afinogen от 14 окт 2016, 10:56я бы вместо приравнивания к пустой строке передавал список, т.е. не "= &пустаяСтрока",  а в (&СписокПусто)
и соответственно в список загнал бы кроме того что  вы передаете еще NULL, НЕОПРЕДЕЛЕНО

и в какой интересно момент в одном из этих реквизитов будет NULL или Неопределено? :^454^:
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ilyay

Цитироватьи в какой интересно момент в одном из этих реквизитов будет NULL или Неопределено?
Если поле ссылочное, составное и не установлено, там будет не пустая ссылка, а неопределено.
Добавлено: 15 окт 2016, 18:05


Цитата: Luzer1C от 14 окт 2016, 11:40

По последним рекомендациям от 1С использование предлога "ИЛИ" крайне нежелательно. Лучше использовать временные таблицы.


Оно не желательно, когда не дает использовать индекс. Здесь все равно будет сканирование таблицы. При чем здесь временные таблицы не понятно, кроме того создание временны таблиц также требует накладных расходов, поэтому не всегда это лучше.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск