|
Решение задачи (РЕШЕНО) Спор с коллегами о возможности решения в консоли запросов Ø (Фрэнки 23.06.2022 12:35) | ☑ | ||
---|---|---|---|---|
0
Обработка
22.06.22
✎
08:14
|
Коллега кинул в местный наш чат задачу на собеседовании.
Где нужно решить задачу без СКД. Просто Отчет сделать. Он сделал. Но задался сделать чисто в "консоле запросов" - запросами. Я ему сказал что это не возможно! Он все еще не угомонился ради спортивного интереса хочет решить. Вот задача. https://yapx.ru/v/SdjHB или https://ibb.co/K5TkTDs |
|||
1
Обработка
22.06.22
✎
08:16
|
Тут без рекурсии не обойтись. А как можно в запросе рекурсию заюзать?
|
|||
2
Фрэнки
22.06.22
✎
08:29
|
Ну делается такое и в СКД тоже
И никакой рекурсии там (в СКД) не потребуется. Просто выведет отчет, так как нужно. С группировками по иерархии элементов из справочника измерения регистра. Хоть в СКД, хоть без СКД. |
|||
3
luter-89
22.06.22
✎
08:35
|
(0) Никогда не говори, что что-то сделать невозможно.
|
|||
4
RomanYS
22.06.22
✎
08:41
|
(0) для любого конечного уровня вложенности задача решается
|
|||
5
Обработка
22.06.22
✎
08:44
|
Дело в том что уровень вложенности не известно на текущий момент.
Может и 3 может и 10 а может и 99. И нужен перебор или какое-то соединение не обычное. Пока я только догадываюсь как это примерно можно замутить. Но все-таки сложно. |
|||
6
vde69
22.06.22
✎
08:46
|
двумя запросами решается легко, ибо в ВТ нельзя использовать "Иерархия"
одним запросом - с лету не скажу... |
|||
7
Обработка
22.06.22
✎
08:47
|
+
1. "Ограничение количества уровней" - отключена в справочнике Подразделение организации 2. "Вид иерархии" - Иерархия элементов. |
|||
8
Обработка
22.06.22
✎
08:49
|
Вот как я ответил в своем местном чате еще пару часов назад.
"Конечно если сильно захотеть какой-то спец сможет это сделать. Первый шаг просто запросом как-то найти максимальный уровень спр. Запомнив это во временной таблице с помощью нее сделать какой-то вложенный запрос где макс глубина это некий параметр вложенности запроса."... |
|||
9
Chai Nic
22.06.22
✎
08:52
|
(3) Молодой ещё...
Наоборот надо. Всегда сначала говори что это сделать невозможно. А потом постепенно опускай планку, говори "это очень сложная задача, займет уйму времени". Чтобы и у заказчика задача вызрела, и у тебя постепенно сформировалось понимание, как её решать. А работать "с колес" - быстрый путь к переутомлению, а оно вам надо? |
|||
10
Обработка
22.06.22
✎
08:55
|
(9) +1 ))
Ему 32 а мне 51. У него все впереди еще. )) |
|||
11
Фрэнки
22.06.22
✎
08:57
|
(6) Конечно, там в готовом решении будет или пакет запросов или вложенные запросы.
|
|||
12
Обработка
22.06.22
✎
08:59
|
(11) Все это в консоли запросов?
|
|||
13
Фрэнки
22.06.22
✎
09:00
|
(12) да. Такие задачи периодически мелькают. Можно нагуглить решение.
|
|||
14
Фрэнки
22.06.22
✎
09:01
|
тут нужно дозаполнить выборку из регистра сведений строками с подчиненными элементами справочника подразделений
|
|||
15
Ненавижу 1С
гуру
22.06.22
✎
09:20
|
(13) можно нагуглить, а можно и не нагуглить
я конечно понимаю, что вилами по воде можно много начертить, но желательно решение, если считаешь, что оно есть, всё-таки привести |
|||
16
Ненавижу 1С
гуру
22.06.22
✎
09:21
|
Я вот считаю, что без дополнительной структуры и/или пост-обработки решения не получить
|
|||
17
Обработка
22.06.22
✎
09:24
|
В том чате Чувак (ник товарища моего который тут обитает) сказал что он это сделает.
Я сказал сделаешь ставлю 4-5 кружек пива. Пока у него нет времени. Почему-то я был уверен что это невозможно чисто запросом. А сейчас уже засомневался. Кто все-таки все сомнения мои снимет. |
|||
18
ProgAL
22.06.22
✎
09:27
|
Можно через метаданные считать макс уровень иерарахии справочника и наклепать такое же количество соединений по родителю.
|
|||
19
Мимохожий Однако
22.06.22
✎
09:29
|
(10) ОФФ: Вспомнилась фраза из песни "А мужик в 51 снова важный Мандарин" )
|
|||
20
Обработка
22.06.22
✎
09:29
|
(18) Не а не взлетит.
Как раз выше сказал что нет ограничений Иерархий значить можешь создавать сколько угодно уровней. |
|||
21
Мимохожий Однако
22.06.22
✎
09:30
|
Есть еще консоль СКД. Но в условия задачи вставлять способ решения не практично и может завести в тупик или затраты на большие ресурсы.
|
|||
22
ProgAL
22.06.22
✎
09:34
|
(20) Перебрать в цикле все элементы не группы, вызвать каждому метод Уровень() и определить максимальный, так можно? А потом запрос писать.
|
|||
23
Обработка
22.06.22
✎
09:36
|
(22) А разве метод уровень() есть в запросе ???
|
|||
24
Мимохожий Однако
22.06.22
✎
09:38
|
(23) Какая платформа используется? На разных платформах разные возможности языка запросов
|
|||
25
Обработка
22.06.22
✎
09:41
|
(24) Сама задача который получил мой коллега не подразумевала именно решать в консоли. Этот он сам решил попытать счастье. И думаю нет ограничений по поводу платформы.
Получается не в платформе дело. Ну к примеру пусть будет от 16-го по 20-й релиз. |
|||
26
ProgAL
22.06.22
✎
09:58
|
(23) Есть.
|
|||
27
чувак
22.06.22
✎
09:59
|
(26) нет
|
|||
28
Мимохожий Однако
22.06.22
✎
10:00
|
(25) Ясно. "Стоя, в гамаке". Видимо, у него есть достаточно времени и упорства. Можно и пилочкой от ногтей дерево распилить, если жизнь заставит. Помнится в эпоху 1C:Бухгалтерия 3.0 для DOS ваял склад для молочной продукции. Это была песня. )
|
|||
29
slnes
22.06.22
✎
10:20
|
(0) если решат скинь запрос в тему
|
|||
30
RomanYS
22.06.22
✎
10:35
|
Задача сводится к раскручиванию иерархии по уровням. В общем случае для неограниченной длины задача не решается запросом. Но каждый подзапрос позволяет увеличить глубину вдвое, поэтому десятком (однотипных) подзапросов можно обеспечить глубину например 512, что для большинства реальных задач более чем достаточно
|
|||
31
Обработка
22.06.22
✎
10:41
|
(30) Это не решение а приблуда или подпорка.
|
|||
32
RomanYS
22.06.22
✎
10:51
|
(31) Тогда ответ - нет, запросом нельзя.
|
|||
33
butterbean
22.06.22
✎
11:03
|
(0) не проверял, но может сделать Справочник ПОЛНОЕ СОЕДИНЕНИЕ Регистр и поле ВЫБОР с проверкой условий сначала на равенство Спр.Ссылка = Регистр.Ссылка и потом проверка на Спр.Ссылка В ИЕРАРХИИ(Регистр.Ссылка)
|
|||
34
Garykom
гуру
22.06.22
✎
11:12
|
Если выводить надо все подразделения то задача решается
|
|||
35
Ненавижу 1С
гуру
22.06.22
✎
11:15
|
(33) нет, В ИЕРАРХИИ можно делать только с параметрами запроса
|
|||
36
Фрэнки
22.06.22
✎
11:23
|
(34) мне только лень выкладывать текст и собирать этот текст :-)
он и готовый есть, что его нагуглить можно. Но выше в этом сомневаются или им тоже лень гуглить. |
|||
37
RomanYS
22.06.22
✎
11:25
|
(34) Покажи
(36) Не выкладывай текст, ссылку дай)) |
|||
38
Ботаник Гарден Меран
22.06.22
✎
11:56
|
У 1С есть задача - СчетаУчетаНоменклатуры определять по иерархии номенклатуры.
Увы, таблица иерархии в этом случае строится кодом. В статьях Ильдаровича по транзитивным замыканиям - количество уровней иерархии конечное. |
|||
39
Ненавижу 1С
гуру
22.06.22
✎
12:06
|
(36) да что ты такой ленивый, но мне кажется дело не в этом
|
|||
40
Said_We
22.06.22
✎
21:27
|
Если бы 1С поддерживала рекурсивные запросы, то вложенностей всё равно было бы не более 100.
1С разные SQL сервера поддерживает, но обычно ограничение на рекурсию 100. |
|||
41
asady
23.06.22
✎
00:17
|
(0) Постановка задачи спорная.
Я бы рекомендовал избегать иерархию элементов поскоььку это приводит к проблемам с получением данных, проблема в неоптимальности запросов. Намного проще всегда хранить в регистре текущих руководителей, разворачивая иерархию в плоскую таблицу при любых изменениях в справочрике подразделений. |
|||
42
Ненавижу 1С
гуру
23.06.22
✎
00:31
|
(41) если бы 1с дала нам больше...
https://ru.m.wikipedia.org/wiki/Вложенное_множество_(модель) |
|||
43
Обработка
23.06.22
✎
06:55
|
(41) Это абстрактная задача от работодателя к кандидату, который преследует определенную простую цель узнать о способностях кандидата (умение строить рекурсию, умение делать обычную печатную форму макета и в то же время логическое мышление).
Но кандидату пришло в голову идея - сможет ли он это реализовать только одним запросом в косоли. Это чисто его прихоть. Хозяин барин. Пусть хочет. Я выше это не раз озвучил. |
|||
44
Конструктор1С
23.06.22
✎
09:48
|
(0) зачем корячить в запросе то, что проще и быстрее сделать с помощью кода и запросов?
|
|||
45
asady
23.06.22
✎
10:00
|
(43) вспоминается анекдот по найм водителя лимузина - типа ищут водителя и задают тест вот узкая дорога и обрыв - на каком расстоянии от края обрыва сможете проехать.
Первый - 1 метр Второй - 50 см Третий - я вообще там не поеду - боюсь Третьему - вы приняты |
|||
46
Обработка
23.06.22
✎
10:12
|
(44) Он уже сделал в таком режиме.
И тут же захотел испытать себя в этом (Чисто запросом) режиме. |
|||
49
Фрэнки
23.06.22
✎
12:35
|
Ну на "нет" и суда нет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |