Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Передача списка в запрос
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Kutuzov
Конфигурация Буха 7.7 289

Есть список для отбора в запросе
   ДокНАйти = СоздатьОбъект("Документ.ПриходнаяНакладная");
    СпПартий = СоздатьОбъект("СписокЗначений");
    Флаг=1;
    ТзДокументДанные.ВыбратьСтроки();
    Пока ТзДокументДанные.ПолучитьСтроку()=1 Цикл  
        Если Флаг=1 Тогда
            Если ДокНАйти.НайтиПоНомеру(ТзДокументДанные.НомерДокума,ТзДокументДанные.ДатаДокум,)= 1 тогда
                ДокТек =ДокНайти.ТекущийДокумент();
                СпПартий.ДобавитьЗначение(ДокТек);
                ПрошлыйНомерДокума = ТзДокументДанные.НомерДокума;
                Флаг=0;
            КонецЕсли;
        КонецЕсли;
        Если (ТзДокументДанные.НомерДокума <> ПрошлыйНомерДокума)  Тогда
            Если ДокНАйти.НайтиПоНомеру(ТзДокументДанные.НомерДокума,ТзДокументДанные.ДатаДокум,)= 1 тогда
                ДокТек = ДокНайти.ТекущийДокумент();
                СпПартий.ДобавитьЗначение(ДокТек);
                ПрошлыйНомерДокума = ТзДокументДанные.НомерДокума;
                Флаг=0;                                                                                      
            КонецЕсли;
        КонецЕсли;
  
    КонецЦикла;



Получаю в список ссылки на документы. Теперь пытаюсь в запросе выбрать документы РН в которых есть документы партии, то есть ПН из списка

пишу запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |РасходнаяНакладная = Документ.РасходнаяНакладная.ТекущийДокумент;
    |Фирма = Документ.РасходнаяНакладная.Фирма;
    |Патриот = Документ.РасходнаяНакладная.Партия.Док;
    |ДатаПартии =Документ.РасходнаяНакладная.Партия.Дата_Прих;
    |Группировка РасходнаяНакладная;
    |Группировка Патриот;
    |Группировка ДатаПартии;    
    |без Итогов;
    |Условие(Фирма в Фирма);
    |Условие(Патриот в СпПартий);
    |"



Документ.РасходнаяНакладная.Партия.Док - это ссылка на документ который мне надо

В итоге при работе запроса результат пустой или пустая строка, но если убираю условие то он нормально отрабатывая выводя все РН.
Каким макаром вылечить этот запрос???
Zaval
Где Функция в Запросе?
Kutuzov
Цитата(Zaval @ 02.12.11, 16:53) необходимо зарегистрироваться для просмотра ссылки
Где Функция в Запросе?


ЭЭЭЭЭ.... Запрос в функции. Список получаю до определения запроса, так что на момент создания запроса список уже есть. Сейчас заметил, что запрос не хочет выдавать данные перепрыгивая по ссылкам так как
партия
в запросе это ссылка ну и
док
тоже ссылка которую я пытаюсь получить через ссылку
Flexy
Делал что-то похожее в обработке Прайс-лист
У меня вот как-то так...
//Ваш вариант
|"+?(ПустоеЗначение(СпПартий)=1,"","Условие(Патриот в СпПартий);")+"
mister-x
Цитата
Где Функция в Запросе?
+
Цитата
|без Итогов;
що ви рахуєте то в "итогах"?
Kutuzov
Цитата(Flexy @ 02.12.11, 17:00) необходимо зарегистрироваться для просмотра ссылки
Делал что-то похожее в обработке Прайс-лист
У меня вот как-то так...
//Ваш вариант
|"+?(ПустоеЗначение(СпПартий)=1,"","Условие(Патриот в СпПартий);")+"


Это конечно да если бы список пустой бы был, но н не пустой и имеет данные. Запрос не выдает ошибку он просто не может сравнить список значений с полем
|Патриот = Документ.РасходнаяНакладная.Партия.Док;
Flexy
Цитата(Kutuzov @ 02.12.11, 17:04) необходимо зарегистрироваться для просмотра ссылки
Это конечно да если бы список пустой бы был, но н не пустой и имеет данные.

Это как раз вариант для Не Пустого Списка.
Kutuzov
Цитата(mister-x @ 02.12.11, 17:02) необходимо зарегистрироваться для просмотра ссылки
+ що ви рахуєте то в "итогах"?


Ага.... Функция ушла раньше
привожу более точный запрос
"//{{ЗАПРОС(Сформировать)
    |РасходнаяНакладная = Документ.РасходнаяНакладная.ТекущийДокумент;
    |Фирма = Документ.РасходнаяНакладная.Фирма;
    |Патриот = Документ.РасходнаяНакладная.Партия.Док; // Пытался также получить такую строку Патриот = Документ.РасходнаяНакладная.Партия.Док.НомерДок;
    |ДатаПартии =Документ.РасходнаяНакладная.Партия.Дата_Прих;
//    |Группировка РасходнаяНакладная;
    |Группировка Патриот;
    |Группировка ДатаПартии;    
//    |без Итогов;
    |Условие(Фирма в Фирма);
    |Условие(Патриот в СпПартий);
    |"
Zaval
Добавьте в запрос Функцию.
Kutuzov
Всем Спасибо....

Проблему решил сам.... ну конечно не без вашей помощи.....
Вся проблема в том что я не указал период и он мне выдавал пустой результат.... Я с таким уже сталкивался в прошлый раз когда у меня отрабатывалось на Win Xp А на Win 7 не хотело. вот тут и так
Стрелок
Цитата(Zaval @ 02.12.11, 18:11) необходимо зарегистрироваться для просмотра ссылки
Добавьте в запрос Функцию.


функция нужна только для запросов к регистрам
sava1
функция нужна только для запросов к регистрам

Иногда лучше помолчать...
Kutuzov
Кстати все таки пришлось использовать в запросе строку
 Без Итогов
так как была необходимость сворачивать таблицу, а запрос делал в результат еще итоговые строки но без сумм

Цитата(Стрелок @ 09.12.11, 10:17) необходимо зарегистрироваться для просмотра ссылки
функция нужна только для запросов к регистрам


faceoff.gif
Домовик
примеры приведите.... лбы они закрывают smile.gif.
функции нужны для обработки полученных данных внутри запроса. при этом фомируется новое поле таблицы. Стрелок, вы имели ввиду частный случай- чтение значения ресурсов.
g789
Цитата(Домовик @ 09.12.11, 16:17) необходимо зарегистрироваться для просмотра ссылки
примеры приведите.... лбы они закрывают smile.gif.
функции нужны для обработки полученных данных внутри запроса. при этом фомируется новое поле таблицы. Стрелок, вы имели ввиду частный случай- чтение значения ресурсов.

ЖКК -
Операторы функций в запросе можно опускать, тогда запрос просто не бу­дет ничего вычислять, а просто во временный набор данных заносятся записи со значениями Группировок. Однако это справедливо только для работы запро­сов по справочникам и по документам. При работе запроса по регистрам следу­ет помнить, что в этом случае обязательно наличие Функций, причем только в том случае, когда их вычисленные значения отличны от нуля (хотя бы одной из заданных Функций), найденные объекты включаются во временный набор данных, формируемый запросом. Если при работе запроса по регистрам в тек­сте запроса операторы функций опущены, то программа не выдаст никакого сообщения об ошибке, добросовестно пройдет по всем Группировкам, не вы­числит никаких значений Функций и, значит, ничего не запишет во временном файле
Домовик
Да, но это Операторы. (Сумма,Минимум,Максимум, количество).


Нам сейчас тему закроют. )
Kutuzov
Цитата(Домовик @ 09.12.11, 16:17) необходимо зарегистрироваться для просмотра ссылки
примеры приведите.... лбы они закрывают smile.gif.
функции нужны для обработки полученных данных внутри запроса. при этом фомируется новое поле таблицы. Стрелок, вы имели ввиду частный случай- чтение значения ресурсов.


Тут было ключевое слово Только
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.