Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Массив в параметр запроса

Массив в параметр запроса
Я
   alvenav
 
26.12.12 - 11:16
Всем привет, в простейшем запросе закопался. При передаче массива в качестве параметра результат запроса пуст. Не могу понять что не так.
Вот запрос.
 Запрос = новый Запрос;
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("Проект", Проект);
    Запрос.УстановитьПараметр("Анкета", Анкета);
    Запрос.УстановитьПараметр("Список", МассивКонтрагентов);
    
   //Запрос.МенеджерВременныхТаблиц = МВТ;
 
    Если ТипОтчета = 0 Тогда
        Запрос.Текст = "ВЫБРАТЬ
                       |    CRM_Телемаркетинг.Ссылка,
                       |    CRM_Телемаркетинг.Дата,
                       |    CRM_Телемаркетинг.Проведен,
                       |    CRM_Телемаркетинг.ТиповаяАнкета,
                       |    CRM_Телемаркетинг.Участники.(
                       |        Опрос,
                       |        РезультатОбработкиЗвонка,
                       |        Контрагент,
                       |        КонтактноеЛицо,
                       |        Телефон
                       |    ) Как Участники
                       |   ИЗ
                       |        Документ.CRM_Телемаркетинг КАК CRM_Телемаркетинг
                       |ГДЕ
                       |    CRM_Телемаркетинг.Дата МЕЖДУ &НачПериода И &КонПериода
                       |    И CRM_Телемаркетинг.Проект = &Проект
                       |    И CRM_Телемаркетинг.ТиповаяАнкета = &Анкета
                       |    И CRM_Телемаркетинг.Проведен = ИСТИНА
                       |    И CRM_Телемаркетинг.Участники.Опрос = ЗНАЧЕНИЕ(Документ.Опрос.ПустаяСсылка)
                       |    И CRM_Телемаркетинг.Участники.Контрагент НЕ В(&Список)
                       |    И CRM_Телемаркетинг.Участники.Контрагент НЕ В(ВЫБРАТЬ
                       |                                                        РежимРаботыКонтрагентовСрезПоследних.Контрагент Как контрагент
                       |                                                   ИЗ
                       |                                                       РегистрСведений.РежимРаботыКонтрагентов.СрезПоследних КАК РежимРаботыКонтрагентовСрезПоследних
                       |                                                   ГДЕ
                       |                                                        РежимРаботыКонтрагентовСрезПоследних.ДеньНедели = ЗНАЧЕНИЕ(Перечисление.ДниНедели.НеРаботает))"
                       ;
        
        Результат = Запрос.Выполнить().Выгрузить();

 
 
   le_
 
1 - 26.12.12 - 11:19
(0) А нормальный запрос к ТЧ написать нет желания?
   sapphire
 
2 - 26.12.12 - 11:19
(0) Отключи условие массива - проверь запрос.
   sapphire
 
3 - 26.12.12 - 11:20
(1) Не, нонче народ исключительно конструктором галиматью пишут... Думать им не чем, да и не умеют небось.
   alvenav
 
4 - 26.12.12 - 11:22
   alvenav
 
5 - 26.12.12 - 11:22
Ой
   alvenav
 
6 - 26.12.12 - 11:23
Нормальный это какой?
   sapphire
 
7 - 26.12.12 - 11:24
(6) Это который в полях содержит не более одной точки...
   alvenav
 
8 - 26.12.12 - 11:24
Без условия запрос работает.
   alvenav
 
9 - 26.12.12 - 11:26
Думаю, к решению вопроса, "нормальность" запроса к табличной части значения не имеет
   tdm
 
10 - 26.12.12 - 11:27
(8) зачит условие исключает все результаты выборки))
у вас в конце где "не в (&...)" точно скорее всего где то "ИЛИ" вместо "И" нужно
 
 Рекламное место пустует
   tdm
 
11 - 26.12.12 - 11:30
(9) прямое...если сначала продумать запрос а не тупо накидать - обычно такие проблемы и не возникают)
   Starhan
 
12 - 26.12.12 - 11:30
(8) ты тогда определись чего ты хочешь. И адекватно желаемому задай условия в запросе.
   alvenav
 
13 - 26.12.12 - 11:37
Результат пуст, даже если убрать последнее условие
   singlych
 
14 - 26.12.12 - 11:38
видимо, нужно что-то вроде
И НЕ (CRM_Телемаркетинг.Участники.Контрагент В(&Список)
ИЛИ CRM_Телемаркетинг.Участники.Контрагент В(ВЫБРАТЬ...))
   singlych
 
15 - 26.12.12 - 11:51
(14) чето гоню
   hhhh
 
16 - 26.12.12 - 12:04
(13) а все контрагенты из табличной части, они все точно-точно в этом списке? Может там только один контрагент в список входит, а остальные нет?
   alvenav
 
17 - 26.12.12 - 12:08
(16) Как раз все контрагенты табличной части могут в списке и не быть, тех которых нет в списке мы и должны получить в результате.
   hhhh
 
18 - 26.12.12 - 12:11
(17) так нормальное условие напишите. Чего же вы условие поставили, что все контрагенты входят?
   hhhh
 
19 - 26.12.12 - 12:14
(18)+ но лучше конечно вам отбросить эти глупые понты и делать запрос не по документу, а по табличной части, как все нормальные люди, и как советуют в (1).
   БледноЗолотистый
 
20 - 26.12.12 - 12:17
(17) А что же вы в запросе выдергиваете документы, если нужны контрагенты?
   alvenav
 
21 - 26.12.12 - 12:22
(19) я согласен, запрос на скорую руку. К (17) условие верно.
   Classic
 
22 - 26.12.12 - 12:25
Сообщить(ТипЗнч(МассивКонтрагентов));
Сообщить(МассивКонтрагентов.Количество());
   alvenav
 
23 - 26.12.12 - 12:27
Условие с вложенным запросом срабатывает
   m-serg74
 
24 - 26.12.12 - 12:27
(3) это не конструктор, это "ручная работа", конструктор только В может, а НЕ alvenav от себя руками добавил
   Абыр
 
25 - 26.12.12 - 12:28
(0) если в массиве не элементы, а группы, то надо В ИЕРАРХИИ
   sapphire
 
26 - 26.12.12 - 12:33
(19) Запрос к шапке + условие по периоду сокращает выборку коли стоит первым. Т.к. будет обработан первым.
   sapphire
 
27 - 26.12.12 - 12:33
Конструктор - зло, ИМХО.
   alvenav
 
28 - 26.12.12 - 12:39
(22) Значения в массиве есть, Тип - Спр Контрагенты
(25) Групп точно нет
   lapinio
 
29 - 26.12.12 - 12:48
В ТЧ CRM_Телемаркетинг.Участники.Контрагент НЕ В (Выбрать ....) без массива ,а запросом. И ТЧ Лучше отдельно хотя бы вложенным запросом
   alvenav
 
30 - 26.12.12 - 13:00
(27) Согласен, после переработки запроса все заработало
   alvenav
 
31 - 26.12.12 - 13:10
Запрос.Текст = "ВЫБРАТЬ
                       |    CRM_Телемаркетинг.Ссылка,
                       |    CRM_Телемаркетинг.Ссылка.Дата,
                       |    CRM_Телемаркетинг.Ссылка.Проведен,
                       |    CRM_Телемаркетинг.Ссылка.ТиповаяАнкета,
                       |    CRM_Телемаркетинг.Опрос,
                       |    CRM_Телемаркетинг.РезультатОбработкиЗвонка,
                       |    CRM_Телемаркетинг.Контрагент,
                       |    CRM_Телемаркетинг.КонтактноеЛицо,
                       |    CRM_Телемаркетинг.Телефон
                       |ИЗ
                       |        Документ.CRM_Телемаркетинг.Участники КАК CRM_Телемаркетинг
                       |ГДЕ
                       |    CRM_Телемаркетинг.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
                       |    И CRM_Телемаркетинг.Ссылка.Проект = &Проект
                       |    И CRM_Телемаркетинг.Ссылка.ТиповаяАнкета = &Анкета
                       |    И CRM_Телемаркетинг.Ссылка.Проведен = ИСТИНА
                       |    И CRM_Телемаркетинг.Опрос = ЗНАЧЕНИЕ(Документ.Опрос.ПустаяСсылка)
                       |    И (CRM_Телемаркетинг.Контрагент НЕ В(&Список)
                       |    И CRM_Телемаркетинг.Контрагент НЕ В(ВЫБРАТЬ
                       |                                                        РежимРаботыКонтрагентовСрезПоследних.Контрагент Как контрагент
                       |                                                   ИЗ
                       |                                                       РегистрСведений.РежимРаботыКонтрагентов.СрезПоследних КАК РежимРаботыКонтрагентовСрезПоследних
                       |                                                   ГДЕ
                       |                                                        РежимРаботыКонтрагентовСрезПоследних.ДеньНедели = ЗНАЧЕНИЕ(Перечисление.ДниНедели.НеРаботает)))"
                       ;
        
        Результат = Запрос.Выполнить().Выгрузить();
        Результат.ВыбратьСтроку();



Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует