Имя: Пароль:
1C
1С v8
выбор номенклатуры по значению реквизита родителя
,
0 AlexxJ
 
23.12.14
15:42
т.е. есть справочник, у группы есть реквизит "А". Нужно выбрать всю номенклатуру значения реквизита "А" у первого родителя которых = 4.
1 asady
 
23.12.14
15:43
(0) запросом
2 AlexxJ
 
23.12.14
15:43
(1) 5 баллов!!! развиваем мысли. А текст какой?
3 asady
 
23.12.14
15:45
(2) ты это .. как помягше выразиться
хочешь нас своими задачками удивить или признаться в неспособности написать запрос?
4 AlexxJ
 
23.12.14
15:45
даже интересует какое условие задать. Использовать ВЫБОР КОГДА....  очевидное решение, но как то не красиво
5 AlexxJ
 
23.12.14
15:46
(3) да не, запрос уже есть но "не красивый", возник спор с коллегами можно ли его оптимизировать
6 asady
 
23.12.14
15:48
(5) ну тогда запрос в студию - а потом тебе может быть что-то и посоветуют
7 AlexxJ
 
23.12.14
15:49
ВЫБРАТЬ
    ЧекККМТовары.Ссылка,
    ЧекККМТовары.Ссылка.ВПК,
    ЧекККМТовары.Номенклатура,
    ЧекККМТовары.Сумма / ЧекККМТовары.Ссылка.СуммаДокумента КАК Процент,
    ЧекККМТовары.Ссылка.Комментарий,
    ВЫБОР
        КОГДА ЧекККМТовары.Номенклатура.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
            ТОГДА ЧекККМТовары.Номенклатура.Родитель.ОтветственныйПоЗакупке
        ИНАЧЕ ВЫБОР
                КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                    ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.ОтветственныйПоЗакупке
                ИНАЧЕ ВЫБОР
                        КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                            ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                        ИНАЧЕ ВЫБОР
                                КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                    ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                ИНАЧЕ ВЫБОР
                                        КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                            ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                        ИНАЧЕ ВЫБОР
                                                КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                                    ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                                ИНАЧЕ ВЫБОР
                                                        КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                                            ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                                        ИНАЧЕ ВЫБОР
                                                                КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                                                    ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                                                ИНАЧЕ ВЫБОР
                                                                        КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                                                            ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                                                        ИНАЧЕ ВЫБОР
                                                                                КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                                                                    ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                                                                ИНАЧЕ ВЫБОР
                                                                                        КОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке <> &ПустойОтветственный
                                                                                            ТОГДА ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                                                                        ИНАЧЕ ЧекККМТовары.Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.ОтветственныйПоЗакупке
                                                                                    КОНЕЦ
                                                                            КОНЕЦ
                                                                    КОНЕЦ
                                                            КОНЕЦ
                                                    КОНЕЦ
                                            КОНЕЦ
                                    КОНЕЦ
                            КОНЕЦ
                    КОНЕЦ
            КОНЕЦ
    КОНЕЦ КАК ОтветственныйПоЗакупке
ИЗ
    Документ.ЧекККМ.Товары КАК ЧекККМТовары
ГДЕ
    (ЧекККМТовары.Ссылка.Комментарий ПОДОБНО "%ВПК%"
            ИЛИ ЧекККМТовары.Ссылка.ВПК > 0)
    И ЧекККМТовары.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
    И ЧекККМТовары.Ссылка.Проведен
8 AlexxJ
 
23.12.14
15:49
вот такой вот ужас
9 Бубка Гоп
 
23.12.14
15:53
(7) ну почему же некрасивый, если быстро проматывать как на горках катаешься, прикольно че
10 anatoly
 
23.12.14
15:53
убейся об стену.
поместить в ВТ всех родителей (это же папки?) у кого есть ответственный.
выбрать ГДЕ родитель В ВТ.
11 AlexxJ
 
23.12.14
15:54
(9) перфекционист во мне рыдает
12 vicof
 
23.12.14
15:54
Ответственного за закупки сделай у номенклатуры, а не у группы.
13 AlexxJ
 
23.12.14
15:55
(10) у родителя 1го уровня ответственный может быть один, а у родителя 3го уровня другой
14 AlexxJ
 
23.12.14
15:59
(12) не, не тру. товары могут из группы в группу летать, ответственные меняться. Велик шанс ошибки, в общем
15 vicof
 
23.12.14
16:02
(14) Передзаписью, смотри родителя и перезаписывай ответственного, 1 строчка кода.
16 asady
 
23.12.14
16:02
(13)
Налицо ошибка архитектора

1. Если ответственный меняется что тогда?  вносить изменения в справочник - а как же инфа про старого ответсвенного - история должна быть чтобы народ знал кого за яйца вешать при разборах.
2. В конкретных строках товаров в конкретных доках лучше фиксировать ответственного на тот момент когда этот док заполнялся - опять же для порядку
Ответсвенного можно заполнять в ТЧ дока уже в событии при изменении номенклатуры например.

- в этом случае косяков станет ещё меньше и твоя задача уйдёт в прошлое.
17 Бубка Гоп
 
23.12.14
16:04
(7)
Поднимем тост за родителей...
18 AlexxJ
 
23.12.14
16:05
(15) (16) будем считать это начальными условиями которые менять нельзя. За этот блок отвечаю не я и ничего менять не могу ))
19 Бубка Гоп
 
23.12.14
16:08
(18) Если интересует красота запроса, то ответственного можно определять рекурсией в коде... однако опасаюсь за быстродействие :)
20 Бубка Гоп
 
23.12.14
16:10
Получается что то вроде "мне надо пройти через лес, да я знаю можно идти по дороге вон там, но я хочу именно через лес!"
21 vicof
 
23.12.14
16:15
(18) Отмазки, пни того, кто может менять.
22 AlexxJ
 
23.12.14
16:23
(20) так и есть. именно через лес и  обязательно на одноколесном велосипеде )))
(21) того кто может менять и этот запрос устраивает

Подытожим :  подобные задачи запросами не решаются!!
23 Бубка Гоп
 
23.12.14
16:24
Если не заполняешь значение реквизита у самой номенклатуры, можно что то типа того попробовать:

Выбрать
Номенклатура.Родитель.Ответственный
Из
Справочник.Номенклатура
Где
Номенклатура.Ссылка В (&Ном)
И Номенклатура.Ответственнный = &ПустойОтветственный
И Номенклатура.Родитель.Ответственный <> ПустойОтветственный
24 AlexxJ
 
23.12.14
16:27
(23) это в рекурсии запустить?
25 vicof
 
23.12.14
16:28
(24) для начала в консоли запусти
26 Бубка Гоп
 
23.12.14
16:28
(24)
нет, зачем же. Если у листьев дерева этот реквизит всегда пустой, а у узлов - когда как, то такой запрос по идее найдет ответственного самого близкого к листу узла
27 alle68
 
23.12.14
16:36
(0) А что такое "1-й родитель"?
28 AlexxJ
 
23.12.14
16:37
(27) группа с которая находится "глубже"
29 vicof
 
23.12.14
16:38
(28) Не глубже, а выше
30 alle68
 
23.12.14
16:48
(28) Где заветная 4-ка в этих пяти вариантах?
Г         -  4  1  4  4
ГГ        4  -  4  1  4
Элемент
31 Бубка Гоп
 
23.12.14
16:51
(30)
гг г гг г гг
32 AlexxJ
 
23.12.14
16:56
(30) скорее так:
Г         1
ГГ        4
ГГГ       -

Элемент

заветная ГГ
а если
Г         1
ГГ        4
ГГГ       -
ГГГГ      4
Элемент

тогда ГГГГ
33 Бубка Гоп
 
23.12.14
16:58
(32) так запрос из (23) спас отца русской демократии или нет?
34 AlexxJ
 
23.12.14
17:03
(33) всегда пустой результат (
35 AlexxJ
 
23.12.14
17:04
(33) только до 2го уровня работает
36 Бубка Гоп
 
23.12.14
17:05
(34) у элементов нижнего уровня реквизит заполняете или нет?
37 alle68
 
23.12.14
17:06
(35) А на количество уровней есть ограничение?
38 Бубка Гоп
 
23.12.14
17:13
понял свою ошибку, в условии стоит
Номенклатура.Ссылка В (&Ном)
поэтому и работает только для 2 уровня
39 AlexxJ
 
23.12.14
17:13
(36) по любому может быть.
(37) нет
40 olegves
 
23.12.14
17:14
(7) я бы сделал ч/з левое соединение с родителями и функцию ИзНулл
41 AlexxJ
 
23.12.14
17:48
(40) элемент может принадлежать N-группам. У некоторых групп свой ответственный, нужно найти самую "глубокую" группу и от туда взять ответственного(не пустого)
42 AlexxJ
 
23.12.14
17:48
(41) где N стремится к бесконечности
43 _KaA
 
23.12.14
17:57
(0)

Коллега, ну вы же сами понимаете, что условия задачи (архитектура) некорректны.

Попробуйте все таки сразу решить вопрос с метаданными, а потом уже с выборкой данных.
44 AlexxJ
 
23.12.14
18:03
(43) согласен, но академический интерес присутствует, да азарт
45 Жан Пердежон
 
23.12.14
18:07
(44) 100 раз уже обсуждалось, на ис даже статья есть (и не одна)
http://infostart.ru/public/160707/
Независимо от того, куда вы едете — это в гору и против ветра!