0
- 08.12.2013 - 20:12
|
Задача: Есть справочник с табличной частью. Нужно найти все элементы этого справочника, в табличной части которых присутствует несколько задаваемых значений. Эти значения задаются некой другой табличной частью (или таблицей значений или списком значений) - тут не важно, как проще так и будут задаваться. Очень желательно запросом это сделать. Не могу придумать и поиск тоже не находит подобной задачи. Может кто подаст гениальную мысль о том как это можно сделать. | |
1
- 08.12.2013 - 20:14
| Для решения таких задач предназначены критерии отбора | |
2
- 09.12.2013 - 10:08
|
ВЫБРАТЬ РАЗЛИЧНЫЕ КонтрагентыМенеджерыПокупателя.Ссылка ИЗ Справочник.Контрагенты.МенеджерыПокупателя КАК КонтрагентыМенеджерыПокупателя ГДЕ КонтрагентыМенеджерыПокупателя.МенеджерПокупателя В (ВЫБРАТЬ ФизическиеЛица.Ссылка ИЗ Справочник.ФизическиеЛица КАК ФизическиеЛица ГДЕ ФизическиеЛица.Наименование = "ИВАНОВ") Как-то так. | |
3
- 09.12.2013 - 19:10
|
2-Климов Сергей > +МенеджерВременныхТаблиц, тогда таблицу значений в параметры можно запихать 0-Dmitry3U >коллега, вам надо запросы подучить. это же азы. | |
4
- 09.12.2013 - 21:15
|
Коллеги, возможно я не совсем корректно определил задачу. Позвольте на примере: 1) Справочник: Физ.Лица 2) Справочник: Контрагенты 2.1) имеет табл.часть: Менеджеры, типа: Физ.лица 3) в отчете\обработке задается несколько значений типа: Физ.лица (Иванов, Петров, Васечкин) 4) Необходимо найти всех Контрагентов, в табличной части Менеджеров у которых присутствуют все заданные значения (Иванов, Петров, Васечкин). 4.1) Если нет хотя бы одного - пропускаем, если кроме этих трех есть и другие - выбираем. | |
5
- 09.12.2013 - 21:19
| Количество задаваемых значений, понятно, может быть любым. | |
6
- 10.12.2013 - 07:30
| в (2) правильно написано, только названия справочников поправить осталось | |
7
- 10.12.2013 - 08:16
|
(6) конечно нет. ему нужно условие на весь список. | |
8
- 10.12.2013 - 08:21
|
(0) делаешь подзапрос, в нём запрос к табличной части менеджеры на выборку ССылки + левое соединение со списком(помести в табличку) уникальных физ. лиц + группировка по физлицу + подсчет Количество(Табличка.ФизЛицо) как Всего + условие на Имеющие Количество(Табличка.ФизЛицо) = КоличествоФизЛицВТабличкеКотороеМожешьПолучитьВПакетномЗапросе Ну и всё.. делаешь основной запрос + условие, ссылка в (тут подзапрос, что выше) | |
9
- 10.12.2013 - 08:23
|
+8 наврал немного, надо Количество(ССылка) как Всего + условие на Имеющие Количество(ССылка) + сгруппировать ССылка... | |
10
- 10.12.2013 - 08:24
| да, и не левое соединение, а внутреннее в подзапросе. | |
11
- 10.12.2013 - 16:05
| Ёпрст> пытаюсь разобраться в написанном ... сложно ... но кажется улавливаю суть идеи - спасибо ... | |
12
- 10.12.2013 - 16:36
|
(11) На вот, примитивный запрос - покажет, клиентосов, у которых есть 3 договора. Тебе по аналогии - соединение с табличкой твоих физлиц нужно и усё.. ВЫБРАТЬ Контрагенты.Ссылка КАК Контрагент, ДоговорыКонтрагентов.Ссылка КАК Договор ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ПО Контрагенты.Ссылка = ДоговорыКонтрагентов.Владелец ГДЕ Контрагенты.Ссылка В (ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов ПО Контрагенты.Ссылка = ДоговорыКонтрагентов.Владелец СГРУППИРОВАТЬ ПО Контрагенты.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(Контрагенты.Ссылка) = 3) | |
13
- 10.12.2013 - 16:52
|
12-Ёпрст > Даже и без соединений сработает... Выбрать Различные Ссылка, Менеджер Из Контрагенты.Менеджеры ГДЕ Менеджер в (&Список) С дальнейшей группировкой и условием | |
14
- 10.12.2013 - 16:56
|
(13) ^))))))))))0 какая наивность Автору нужно условие на вхождение ВСЕХ кто есть в списке условия, а не кого-то одного из списка.. | |
15
- 10.12.2013 - 16:57
| 14-Ёпрст > С дальнейшей группировкой и условием решает | |
16
- 10.12.2013 - 16:57
| +14 об этом, написано в (4.3 и 4.4) | |
17
- 10.12.2013 - 16:58
|
(15) Как решает ? Пример приведи более конкретный. | |
18
- 10.12.2013 - 16:58
|
СГРУППИРОВАТЬ ПО Контрагенты.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(Контрагенты.Ссылка) = 3) | |
19
- 10.12.2013 - 17:02
| (18) согласен, можно и так. | |
20
- 10.12.2013 - 17:03
| Только, один хрен..подзапрос нужен будет, или Менеджер в максимум оборачивать | |
21
- 10.12.2013 - 17:04
|
для корректной группировки Но.. это детали :) | |
22
- 10.12.2013 - 17:04
| Угу, оборачивать во внешний запрос придётся | |
23
- 11.12.2013 - 12:40
|
Так. Кажется понимаю теперь. Если я все верно понял - обязательным условием должна быть уникальность элементов и в табличной части и в выбранных значениях. Так как мы не конкретные вхождения проверяем, а кол-во вхождений. Идея с проверкой именно кол-ва вхождений - хороша. Есть ли возможность все-таки именно конкретные вхождения проверить ? А то иначе придется условия вешать на заполнение табличной части. | |
24
- 11.12.2013 - 16:23
|
[em]обязательным условием должна быть уникальность[/em]. Совершенно необязательно. Уникальность в выбранных значениях нужна только для облегчения чтения запроса. можно делать не ИМЕЮЩИЕ КОЛИЧЕСТВО(Контрагенты.Ссылка) = 3 а соединение с Выбрать Сумма(1) Из (Выбрать Различные (&Список)) | |
25
- 13.12.2013 - 13:02
| Спасибо всем. Запрос явно уже не уровня новичков, сам бы не разобрался. Буду пробовать. | |
26
- 13.12.2013 - 20:00
| Как-то когда select-запрос на английском то легче понимается, а на русском вообще труба пока что. | |
| Интернет-форум Краснодарского края и Краснодара |