Имя: Пароль:
1C
1С v8
Справочник, произвольный запрос, проверка на вхождение
0 ixilimuse
 
14.06.13
13:41
Всем доброго времени суток.
Использую 1С 8.2, Управляемые формы, тонкий клиент.

Есть справочник. В нем есть форма списка. В ней список формируется Произвольным запросом.
Изначально запрос был таковым:
ВЫБРАТЬ
   СправочникДВК_МоеОкружение.Ссылка,
   СправочникДВК_МоеОкружение.ВерсияДанных,
   СправочникДВК_МоеОкружение.ПометкаУдаления,
   СправочникДВК_МоеОкружение.Предопределенный,
   СправочникДВК_МоеОкружение.Код,
   СправочникДВК_МоеОкружение.Наименование,
   СправочникДВК_МоеОкружение.ДатаРождения,
   СправочникДВК_МоеОкружение.Визитка,
   СправочникДВК_МоеОкружение.Комментарий,
   МЕСЯЦ(СправочникДВК_МоеОкружение.ДатаРождения) КАК МесяцРождения,
   ДЕНЬ(СправочникДВК_МоеОкружение.ДатаРождения) КАК ДеньРождения,
   ГОД(СправочникДВК_МоеОкружение.ДатаРождения) КАК ГодРождения
ИЗ
   Справочник.ДВК_МоеОкружение КАК СправочникДВК_МоеОкружение
ГДЕ
   СправочникДВК_МоеОкружение.Визитка = &Визитка

На форме есть галочка, с помощью которой я фильтровал визитки и не визитки. И это прекрасно работало!

Затем я решил ещё сделать фильтры по категориям. Для этого у меня у каждого элемента справочника есть Табличная часть Категории. В неё входят категории к которым относятся элементы.

В общем формирую я список категорий для фильтрации. Передаю в параметр запроса списка.
Запрос переписал вот таким образом:
ВЫБРАТЬ
   СправочникДВК_МоеОкружение.Ссылка,
   СправочникДВК_МоеОкружение.ВерсияДанных,
   СправочникДВК_МоеОкружение.ПометкаУдаления,
   СправочникДВК_МоеОкружение.Предопределенный,
   СправочникДВК_МоеОкружение.Код,
   СправочникДВК_МоеОкружение.Наименование,
   СправочникДВК_МоеОкружение.ДатаРождения,
   СправочникДВК_МоеОкружение.Визитка,
   СправочникДВК_МоеОкружение.Комментарий,
   МЕСЯЦ(СправочникДВК_МоеОкружение.ДатаРождения) КАК МесяцРождения,
   ДЕНЬ(СправочникДВК_МоеОкружение.ДатаРождения) КАК ДеньРождения,
   ГОД(СправочникДВК_МоеОкружение.ДатаРождения) КАК ГодРождения
ИЗ
   Справочник.ДВК_МоеОкружение КАК СправочникДВК_МоеОкружение
ГДЕ
   СправочникДВК_МоеОкружение.Визитка = &Визитка
   И
   ВЫБОР
       КОГДА &ОтборПоКатегориям
           ТОГДА
               СправочникДВК_МоеОкружение.Ссылка В
               (
                   ВЫБРАТЬ РАЗЛИЧНЫЕ
                       ПодзапросКатегории.Ссылка
                   ИЗ
                       Справочник.ДВК_МоеОкружение.Категории КАК ПодзапросКатегории
                   ГДЕ
                       ПодзапросКатегории.Категория В (&Категории)
               )
       ИНАЧЕ
           ИСТИНА
   КОНЕЦ

В идеале когда мы в фильтрах отмечаем все категории, у нас должны вывестись все записи справочника так как в каждой записи по одной категории да отмечено (Факт).
Тем не менее, у меня отображается в таком случае только тот элемент, у которого в категориях есть первая категория из фильтров. Остальные отсеиваются..
Причем, такой же запрос выполняю в консоли запросов - и она отрабатывает на славу.

Ладно, переклинило меня, я подумал может платформа самостоятельно выбирает мне табличную часть по конкретному элементу. Почему бы нет?

Снова модифицирую запрос на такой вариант:

ВЫБРАТЬ
   СправочникДВК_МоеОкружение.Ссылка,
   СправочникДВК_МоеОкружение.ВерсияДанных,
   СправочникДВК_МоеОкружение.ПометкаУдаления,
   СправочникДВК_МоеОкружение.Предопределенный,
   СправочникДВК_МоеОкружение.Код,
   СправочникДВК_МоеОкружение.Наименование,
   СправочникДВК_МоеОкружение.ДатаРождения,
   СправочникДВК_МоеОкружение.Визитка,
   СправочникДВК_МоеОкружение.Комментарий,
   МЕСЯЦ(СправочникДВК_МоеОкружение.ДатаРождения) КАК МесяцРождения,
   ДЕНЬ(СправочникДВК_МоеОкружение.ДатаРождения) КАК ДеньРождения,
   ГОД(СправочникДВК_МоеОкружение.ДатаРождения) КАК ГодРождения
ИЗ
   Справочник.ДВК_МоеОкружение КАК СправочникДВК_МоеОкружение
ГДЕ
   СправочникДВК_МоеОкружение.Визитка = &Визитка
   И
   ВЫБОР
       КОГДА &ОтборПоКатегориям
           ТОГДА СправочникДВК_МоеОкружение.Ссылка В (&Категории)
       ИНАЧЕ ИСТИНА
   КОНЕЦ

Только теперь в параметр "Категории" я вношу список ссылок элементов справочника. Данный список формирую снаружи. Иду в отладку, четко вижу что в параметр передается весь перечень элементов справочника, но в таблицу мне все равно выводится только один элемент. Хотя в консоли запросов опять же этот запрос отрабатывает - идеально.

Вопрос: Чего я не понимаю или не знаю? Где делаю не так? Вразумите добрые люди, благодарен буду)
1 ixilimuse
 
14.06.13
14:01
Вах!!!
Все элементарнее простого оказалось..
Просто надо было походить, чай попить, посмотреть на облака..

Решение: В параметр надо передавать не СписокЗначений, а Массив!
2 ixilimuse
 
14.06.13
14:01
Всем спасибо за участие, и позитивной всем Пятницы :)
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс