Имя: Пароль:
1C
1С v8
В Запросе получить записи, условие Элемент, искать по группам (ща объясню)
0 E-rsh_KUS
 
06.05.16
18:50
Приветствую!

Есть регистр с измерением "Номенклатура" и в нем разрешено выбирать как элементы так и группы. Есть параметр в запросе - элемент справочника Номенклатура (не группа). Как найти все записи в регистре не только Номенклатура = &Номенклатура, но и В Иерархии?

Надеюсь понятно объяснил суть. Подскажите, может кто с таким разбирался?
1 vicof
 
06.05.16
18:53
через ОБЪЕДИНИТЬ
2 vicof
 
06.05.16
18:53
если я правильно прованговал
3 E-rsh_KUS
 
06.05.16
18:54
на примере
спр Номенклатура:
-группа "Наша Продукция"
--элемент "Шампунь"

РС Изменения:
01.01.2016 | "Наша Продукция"

Получить при условии "Шампунь" значение РС
4 Pistol
 
06.05.16
18:54
В иерархии чего?
5 vde69
 
06.05.16
18:55
сначало делаешь временную таблицу по справочнику номенклатура с условием "в иерархии" потом ее джойнишь с регистром (или делаешь условие в (выбрать * вложеный запрос...))
6 Pistol
 
06.05.16
18:57
(3) Самое простое - .Родитель в нужных количествах.
7 E-rsh_KUS
 
06.05.16
18:57
(6) У нас любят иерархии, придется дофига родителей перебирать :(
8 E-rsh_KUS
 
06.05.16
18:59
(5)
ВЫБРАТЬ
Номенклатура.Ссылка
ИЗ
Справочники.Номенклатура
ГДЕ
???
9 Pistol
 
06.05.16
19:00
(7) Перед запросом же. По своему шампуню циклом самого верхнего родителя и потом в иерархии
10 E-rsh_KUS
 
06.05.16
19:02
(9) Хотелось бы в пределах запроса сделать, но если не найдется другого - придется просто перебором
11 ILM
 
гуру
06.05.16
23:57
Попробуй так, но не факт что сработает.

ВЫБРАТЬ ...
ГДЕ Номенклатура В ИЕРАРХИИ(ВЫРАЗИТЬ(&Номенклатура КАК Справочник.Номенклатура).Родитель))
12 youalex
 
07.05.16
01:02
(0) но и в Иерархии ? Без нои.
13 Ildarovich
 
07.05.16
01:09
Вот тут http://catalog.mista.ru/public/158512/ показано, как решить эту задачу исключительно запросом: сначала нужно найти всех родителей "шампуня".
14 youalex
 
07.05.16
01:10
Или в ИЛИ (постановка совершенно непонятно, мюсли какие-то)
То есть ГДЕ Ссылкка  в ИЕРАРХИИ (&СписокГрупп, &СписокЭлементов)

зы. В Иерархии - можно передавать параметрами несколько списков.
15 Ildarovich
 
07.05.16
01:11
+(13) не всех родителей, а всех "предков"
16 youalex
 
07.05.16
01:12
(13) побойтесь бога.
17 youalex
 
07.05.16
01:13
(16) а если кому-то придется ( обязательно придется) за вами это разгребать
18 Ildarovich
 
10.05.16
15:00
(16) Если понять принцип, ничего особенно сложного и недоступного пониманию в решении такой задачи предложенным в (13) способе нет. Вот запрос, который вернет всех предков номенклатуры, расположенной в иерархии не глубже 16-го уровня:
ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Родитель КАК Предок
ПОМЕСТИТЬ Шаг1
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь1.Ссылка,
    Связь2.Предок
ПОМЕСТИТЬ Шаг2
ИЗ
    Шаг1 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг1 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь1.Ссылка,
    Связь2.Предок
ПОМЕСТИТЬ Шаг3
ИЗ
    Шаг2 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг2 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь1.Ссылка,
    Связь2.Предок
ПОМЕСТИТЬ Шаг4
ИЗ
    Шаг3 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг3 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь2.Предок
ИЗ
    Шаг4 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг2 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
ГДЕ
    Связь1.Ссылка = &Номенклатура
19 Ildarovich
 
10.05.16
15:03
+(18) в последнем запросе была небольшая неточность. Вот правильный вариант:ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Родитель КАК Предок
ПОМЕСТИТЬ Шаг1
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь1.Ссылка,
    Связь2.Предок
ПОМЕСТИТЬ Шаг2
ИЗ
    Шаг1 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг1 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь1.Ссылка,
    Связь2.Предок
ПОМЕСТИТЬ Шаг3
ИЗ
    Шаг2 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг2 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь1.Ссылка,
    Связь2.Предок
ПОМЕСТИТЬ Шаг4
ИЗ
    Шаг3 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг3 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    Связь2.Предок
ИЗ
    Шаг4 КАК Связь1
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Шаг4 КАК Связь2
        ПО Связь1.Предок = Связь2.Ссылка
ГДЕ
    Связь1.Ссылка = &Номенклатура
20 E-rsh_KUS
 
13.05.16
11:31
(17) соглашусь, глядя на (19). Я то думал можно как-то по проще. Сделаю тупо через перебор нескольких родителей.
Всем Большое спасибо