|
Туплю с запросом | ☑ | ||
---|---|---|---|---|
0
Jokero
20.10.14
✎
15:33
|
Пн видимо, никак не соображу чет как сделать несложный запрос.
Имеется РегистрОстатки на складах вида ---------------- | Номенклатура | ---------------- | Количество | ---------------- и Справочник с Ответственными за номенклатуру вида --------------- |Ответственный| ------------------------------------------------------ |ТабЧасть - Группа\элемент номенклатуры включающие | ------------------------------------------------------ |ТабЧасть - Группа\элемент номенклатуры Исключающие | ------------------------------------------------------ Включающие - это список с главными группами, по которым человек ответственен. Исключающие - это подгруппы или отдельная нмклатура, из папок включающие, но по ним человек не ответственен. Нужно получить все остатки по складу и присоединить к ним ответственного. Чет как ни пробую, никак не взлетает. Помогите разобраться. |
|||
1
Fragster
гуру
20.10.14
✎
15:35
|
а нефиг было такую структуру данных придумывать
|
|||
2
User_Agronom
20.10.14
✎
15:35
|
пиши как мутишь запрос.
|
|||
3
User_Agronom
20.10.14
✎
15:35
|
(1) Не факт, что он придумывал. Возможно наследство.
|
|||
4
Нахожусь в оппозиции
20.10.14
✎
15:35
|
тебя ждет соединение по условию типа Номенклатура = НоменклатураОтветственный ИЛИ Номенклатура.Родитель = НоменклатураОтветственный.Родитель ИЛИ Номенклатура.Родитель = НоменклатураОтветственный.Родитель.Родитель ИЛИ Номенклатура.Родитель = НоменклатураОтветственный.Родитель.Родитель.Родитель...
|
|||
5
Ёпрст
20.10.14
✎
15:35
|
Не стесняйся, показывай свой код
|
|||
6
Нахожусь в оппозиции
20.10.14
✎
15:36
|
(3) судя по его веткам - это его
|
|||
7
Fragster
гуру
20.10.14
✎
15:36
|
(4) только еще немного секса с Исключающие, внутри которых есть Включающие внутри которых есть исключающие группы...
|
|||
8
Jokero
20.10.14
✎
15:38
|
(1) Не я виноват в такой структуре), но разгребать мне)
(2) (4) Я так пробовал, только вы не забывайте, что в справочнике табличные части, и если делать по соединению родителя, то исчезнут отдельные строки, не подходящие по условию, а остальные строки с Ссылкой на элемент справочника останутся. |
|||
9
User_Agronom
20.10.14
✎
15:47
|
(8) см (7). Секасу слишком много.
Попробуй поменять структуру данных. Чтобы только включающие были. |
|||
10
Jokero
20.10.14
✎
15:55
|
Ну вот так я получаю список включающих ответственных, теперь надо из него выкинуть тех, у кого исключающие группы
ВЫБРАТЬ ОтветственныйЗаНмнкл.Ссылка КАК Док, ОтветственныйЗаНмнклВкл.Номенклатура КАК НоменклатураВкл, ОтветственныйЗаНмнклИскл.Номенклатура КАК НоменклатураИскл, ОтветственныйЗаНмнкл.Ответственный ПОМЕСТИТЬ Нмкл ИЗ Справочник.ОтветственныйЗаНмнкл КАК ОтветственныйЗаНмнкл ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОтветственныйЗаНмнкл.НоменклатураВкл КАК ОтветственныйЗаНмнклВкл ПО ОтветственныйЗаНмнкл.Ссылка = ОтветственныйЗаНмнклВкл.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ОтветственныйЗаНмнкл.НоменклатураИскл КАК ОтветственныйЗаНмнклИскл ПО ОтветственныйЗаНмнкл.Ссылка = ОтветственныйЗаНмнклИскл.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток, Нмкл.Ответственный, Нмкл.Док, Нмкл.НоменклатураВкл, Нмкл.НоменклатураИскл ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад.Код = "100500") КАК ТоварыНаСкладахОстатки ЛЕВОЕ СОЕДИНЕНИЕ Нмкл КАК Нмкл ПО (ТоварыНаСкладахОстатки.Номенклатура.Родитель = Нмкл.НоменклатураВкл ИЛИ ТоварыНаСкладахОстатки.Номенклатура.Родитель = Нмкл.НоменклатураВкл ИЛИ ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель = Нмкл.НоменклатураВкл ИЛИ ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель.Родитель = Нмкл.НоменклатураВкл ИЛИ ТоварыНаСкладахОстатки.Номенклатура.Родитель.Родитель.Родитель.Родитель = Нмкл.НоменклатураВкл) |
|||
11
Jokero
20.10.14
✎
15:57
|
(9) Печаалль. Нет, структуру данных менять нельзя, этот справочник прекрасно справляется с другими своими делами, ради которых его и задумывали.
А создавать еще один, который почти повторяет существующий не есть хорошо. |
|||
12
dk
20.10.14
✎
15:57
|
имхо составить погруппно соответствие
ответственный1 - группа1 ответственный1 - группа2 ... и потом к основному запросу соединить через группу хотя можно и поэлементно |
|||
13
palpetrovich
20.10.14
✎
16:11
|
мдя, креативный конструктор был :)
может, в порядке бреда, сделать так: 1. Запрос к таблицам справочника Ответсвенные условие Когда (Номенклатура ПринадлежитГруппеВключающие) и ((Номенклатура Не ПринадлежитГруппеИсключающие) или (НЕ Номенклатура = ЭлементуИсключающие)) // получаем ВТ типа Ответсвенный=Номенклатура 2. Запрос по Остаткам с левым соединением к ВТ по Номенклатура |
|||
14
User_Agronom
20.10.14
✎
17:15
|
(13) Как проверять?
В ИЕРАРХИИ не годится, так как (7) точно заметил. Я думаю с такой структурой перекрытий полно должно быть уже. Когда с одного забыли снять, а на другого повесили. Или ответственный уволился. Или ещё какое событие произошло. |
|||
15
palpetrovich
20.10.14
✎
17:31
|
(14) исходя из "Включающие - это список с главными группами" и "Исключающие - это подгруппы или отдельная нмклатура" - можно сделать вывод, что внутри "Исключающих" не может быть "Включающих"
|
|||
16
Fragster
гуру
20.10.14
✎
19:01
|
а потом (0) еще и в RLS запихать
|
|||
17
marvak
20.10.14
✎
19:31
|
(0)
а может быть несколько ответственных за одну номенклатуру? |
|||
18
RomanYS
20.10.14
✎
19:42
|
(10) первая часть запроса - фигня полная, зачем соединять включенные и исключенные в одну ВТ, логичнее объединить, а лучше вкл - отдельно, искл - отдельно
|
|||
19
RomanYS
20.10.14
✎
19:49
|
вариант: готовить таблицу родителей
выбор Спр.Ссылка, Спр.Родитель, 0 как Приоритет поместить Родители объединить все выбор Спр.Ссылка, Спр.Родитель.Родитель, 1 как Приоритет объединить все ... потом соединяем с вкл и искл, группируем по номенклатуре минимум(приоритет), потом еще раз соединяем уже по номенклатуре и приоритету |
|||
20
ilya_i
20.10.14
✎
21:12
|
Сколько ответственных? может забить на дао и сделать запрос в цикле с отбором по каждому. тогда "в иерархии" то что надо.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |