Имя: Пароль:
1C
1С v8
как в запросе выставить флаг для родителя. при условие что флаг стоит у элемента
0 zladenuw
 
27.01.14
19:37
часть запрос такая

Выбрать
Спр1.Ссылка Как Номен,
Спр1.ЭтоГруппа,
Выбор когда ТЗ.Номен Есть Null тогда 1 иначе 0 конец
из оттуда
где
  что то
упорядочить по
Спр1.Код ИЕРАРХИЯ"
1 zladenuw
 
27.01.14
22:19
прописал в соединение с таблицей.
Левое соединение (ТЗ.Номен  = спр1.Ссылка) или
Спр1.ЭтоГруппа и ТЗ.Номен.Родитель  = спр1.Ссылка

но это проверка только 1 уровень иерархии. а вот при попытке написать так пишет что не верно. почему ?
ТЗ.Номен.Родитель в ИЕРРАХИИ (спр1.Ссылка). пишет не верный параметр
2 NcSteel
 
27.01.14
22:46
Ну ответь на вопрос почему не верно сам...
3 zladenuw
 
27.01.14
22:54
(2) да уже понял. делаю через ТЗ.Номен.Родитель в (Выбрать спр1.Ссылка из спр1 где спр1.этогруппа и не спр1.пометкаудаления)

но теперь из за этого под запроса выполняется в 2 раза дольше как оптимизировать
4 zladenuw
 
27.01.14
22:55
было 0,045 стало 0,11. это критично
5 zladenuw
 
27.01.14
22:55
да и еще надо как то придумать когда в группе не у всех отмечены элементы тогда флаг нужно присвоит 2, как это сделать ума не приложу
6 NcSteel
 
27.01.14
23:04
1С настоятельно не рекомендует завязывать бизнесс логику предприятия на Иерархию справочника. Проблем наживешь.

Так что меняй архитектуру.
7 zladenuw
 
27.01.14
23:06
(6) да я рад бы. но нужно только с ней.
8 NcSteel
 
27.01.14
23:08
(7) Тогда довольствуйся (4)
9 zladenuw
 
27.01.14
23:09
(8) поместил во временную таблицу. стало 0,08. куда лучше. но
как сделать (5)
10 zladenuw
 
27.01.14
23:11
надо выставить 2 что бы в дереве флаг был сериньким. если не все элементы выбраны в группе.
11 NcSteel
 
27.01.14
23:13
Сравнивай количество отметок с количеством элементов, если не равно то тебе и 2
12 NcSteel
 
27.01.14
23:14
(9) Прикол в том, что сейчас это 0,08... а завтра будет 1,08, а потом и все 10 секунд, а потом опять 0,08.

В этом и зло подзапроса в условии
13 zladenuw
 
27.01.14
23:16
(12) да прыгает и так от 0,08 до 0,11.
все равно если уберу присвоение по иерархии. перебор так же долго :(. так что 1 к 1
14 zladenuw
 
27.01.14
23:17
(12) а как убрать зло или не как ?
(11) мм, а как.
15 NcSteel
 
27.01.14
23:18
(14)

1. Зло убрать сменой архитектуры.
2. Выбрать Количество(Ссылка), Количество(Отметок) Из таблица
16 zladenuw
 
27.01.14
23:19
(11) где именно прописывать условие. что то не приложу ума
17 zladenuw
 
27.01.14
23:19
(15) пробую. спасиб
18 zladenuw
 
27.01.14
23:21
что то не пойму где именно
ВЫБРАТЬ
    АмбулаторныйТарификатор.Ссылка
ПОМЕСТИТЬ ВТРодитель
ИЗ
    Справочник.АмбулаторныйТарификатор КАК АмбулаторныйТарификатор
ГДЕ
    АмбулаторныйТарификатор.ЭтоГруппа
    И НЕ АмбулаторныйТарификатор.ПометкаУдаления
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    АккредитацияКДПРеестрУслуг.ВидУслуг,
    АккредитацияКДПРеестрУслуг.ВидУслуг.Родитель КАК Родитель,
    АккредитацияКДПРеестрУслуг.Лимит КАК Количество
ПОМЕСТИТЬ ВТТаблица
ИЗ
    Документ.АккредитацияКДП.РеестрУслуг КАК АккредитацияКДПРеестрУслуг
ГДЕ
    АккредитацияКДПРеестрУслуг.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    АмбулаторныйТарификатор.Ссылка КАК Номенклатура,
    АмбулаторныйТарификатор.ЭтоГруппа,
    ЕСТЬNULL(ВТТаблица.Количество, 0) КАК Количество,
    ВЫБОР
        КОГДА АмбулаторныйТарификатор.ЭтоГруппа
            ТОГДА 0
        ИНАЧЕ 2
    КОНЕЦ КАК Картинка,
    ВЫБОР
        КОГДА ВТТаблица.ВидУслуг ЕСТЬ NULL
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ КАК Флаг
ИЗ
    Справочник.АмбулаторныйТарификатор КАК АмбулаторныйТарификатор
        ЛЕВОЕ СОЕДИНЕНИЕ ВТТаблица КАК ВТТаблица
        ПО (АмбулаторныйТарификатор.Ссылка = ВТТаблица.ВидУслуг
                ИЛИ ВЫБОР
                    КОГДА АмбулаторныйТарификатор.ЭтоГруппа
                        ТОГДА ВТТаблица.Родитель В
                                (ВЫБРАТЬ
                                    ВТРодитель.Ссылка
                                ИЗ
                                    ВТРодитель КАК ВТРодитель)
                    ИНАЧЕ ЛОЖЬ
                КОНЕЦ)
ГДЕ
    НЕ АмбулаторныйТарификатор.ПометкаУдаления
Программист всегда исправляет последнюю ошибку.