|
|
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Столкнулся с еще одной проблемой ... Есть иерархический справочник по элементам. Как запросом получить список всех родителей заданного элемента? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2010, 19:04 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Ну получили и дальше что? ps Правильный вопрос уже содержит половину ответа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 00:15 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Программист 1с По моему я задал абсолютно правильный вопрос!!! Я задал цель, а вот для чего - разве без этого не понятен вопрос??? Есть документ согласования! Соответсвенно какой-то сотрудник создает документ и все его!!! начальники получают его и ставят свое резюме! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 12:05 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
А у вас "родители" элемента - начальники? А при увольнении (начальника) или перемещении (начальника) вы модифицируете свой иерархический справочник? Ничего не путаете? ps На практике встречал всего ОДИН случай когда требовались родители. И то при переносе между базами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 14:35 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
LogvinovSerj, для 7.7 есть компонента ToySQL у нее есть метод СоздатьИерархию (CreateHierarchy) которая решает твою задачу. Скачай демо версию (так просто не скачивается по моему, надо отправлять запрос автору) и оттрасируй в профайлере, что делает компонента при использовании данного метода и повтори на 8х, либо спроси на форуме 1CSQL.ru как это сделать. Мне как то на собеседовании очень продвинутый 1С нег с которым я собеседовался, сказал, что такое запросом сделать нельзя, только рекурсией, я хотя и помнил про метод ToySQL, но промолчал, т.к. этой задачей на 8х никогда не заморачивался:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 17:23 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 17:54 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
LogvinovSerjСтолкнулся с еще одной проблемой ... Есть иерархический справочник по элементам. Как запросом получить список всех родителей заданного элемента? Для справочника с количеством уровней иерархии, например, 5, запрос будет выглядеть так: Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", КонтрагентСсылка); Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Родитель |ИЗ | (ВЫБРАТЬ | Контрагенты.Родитель КАК Родитель | ИЗ | Справочник.Контрагенты КАК Контрагенты | ГДЕ | Контрагенты.Ссылка = &Ссылка | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Контрагенты.Родитель.Родитель | ИЗ | Справочник.Контрагенты КАК Контрагенты | ГДЕ | Контрагенты.Ссылка = &Ссылка | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Контрагенты.Родитель.Родитель.Родитель | ИЗ | Справочник.Контрагенты КАК Контрагенты | ГДЕ | Контрагенты.Ссылка = &Ссылка | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Контрагенты.Родитель.Родитель.Родитель.Родитель | ИЗ | Справочник.Контрагенты КАК Контрагенты | ГДЕ | Контрагенты.Ссылка = &Ссылка) КАК ВложенныйЗапрос |ГДЕ | ВложенныйЗапрос.Родитель <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)"; Если количество уровней иерархии заранее неизвестно, то текст запроса надо конструировать по частям в цикле, предварительно вытащив это количество из метаданных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 18:21 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
LogvinovSerjСтолкнулся с еще одной проблемой ... Есть иерархический справочник по элементам. Как запросом получить список всех родителей заданного элемента? Иерархия справочников в 1с не предназначена для решения вашей задачи. окститесь пока не поздно. припишите начальников по другому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 19:31 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Считаю данный иерархический справочник структуры подчинения почти идеальный! В основном на фирме и требуется, чтобы начальник знал документы и элементы своих подчиненных! А это элементарно при помощи - в иерархии! По поводу жесткого ограничения уровней иерархии - не катит, сегодня их пять, завтра 10! Я вообще всю жизнь был программером Delphi и SQL Server и данный запрос в старых средах программирования сделал бы за пару минут! А вот в 1с как не крутил - так и не сделал ((( Вот и хотел спросить - может у кого нечто подобное реализовано! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 20:16 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Все! Я понял, что 1с запросом это сделать не сможет! Очень жаль. Тогда сделаю обычной функцией. Примерно так: функция ПоказатьВсехНачальников(Пользователь) Если Пользователь = Неопределено Или Пользователь.Родитель = Неопределено Тогда Возврат Неопределено; КонецЕсли; Результат = Новый ТаблицаЗначений; Результат.Колонки.Добавить("Пользователь"); Начальник = Пользователь.Родитель; Пока НЕ Начальник = Неопределено Цикл Запись = Результат.Добавить(); Запись.Пользователь = Начальник; Начальник = Начальник.Родитель; КонецЦикла; КонецФункции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 20:25 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
LogvinovSerjСчитаю данный иерархический справочник структуры подчинения почти идеальный! В основном на фирме и требуется, чтобы начальник знал документы и элементы своих подчиненных! А это элементарно при помощи - в иерархии! По поводу жесткого ограничения уровней иерархии - не катит, сегодня их пять, завтра 10! Я вообще всю жизнь был программером Delphi и SQL Server и данный запрос в старых средах программирования сделал бы за пару минут! А вот в 1с как не крутил - так и не сделал ((( Вот и хотел спросить - может у кого нечто подобное реализовано!Мдаа. Вот я открыл то что писал полгода назад и вижу ошибки... А у вас сразу идеально - повезло наверное... vitkhv вам хороший ответ привел. А есть еще один хороший вариант. Вы когда выводите остатки с группами - представьте что у вас есть остаток только у вашего "подчиненного" и выводите все также. ps Еще раз подумайте. Вам родители в запросе нужны? Или всетаки в выборке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2010, 22:39 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. в общем мелкие ошибки есть = ищите сами ибо мне лень идея такая хотели одним запросом? ну вот он ... надеюсь код строковый? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 09:37 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
и еще одно условие код уникальный в пределах справочника! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 09:40 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Код: plaintext never say never ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 09:44 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
LogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле. Программист 1С, leaf. А можно глупый вопрос, зачем решать задачу одним запросом? Потому что так рекомендует 1С??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 10:40 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
HoBTIDLogvinovSerjИдея правильная, для такой задачи нужно делать запрос в цикле. Программист 1С, leaf. А можно глупый вопрос, зачем решать задачу одним запросом? Потому что так рекомендует 1С??? Платформа построена так, что один запрос по нескольким таблицам (или несколько обращений в одном запросе к одной таблице, что в данном случае происходит) всегда отрабатывает быстрее, чем несколько запросов каждый по своей таблице. Платформа на сервере преобразует запрос из формата 1С в формат SQL, попутно оптимизируя его. Поэтому, когда Вы строите один большой запрос вместо нескольких маленьких, Вы тем самым отдаете работу по оптимизации запроса в "руки" платформы. Т.е., в данном примере, таблица справочника будет прочитана только один раз (а не по количеству уровней иерархии в нем). Другими словами, получение массива данных большим запросом вместо нескольких маленьких (кстати, запрос в цикле является грубой ошибкой) оптимизирует работу с базой данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 11:18 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Закиров Дамир, только не стоит забывать про особенности оптимизаторов конкретных СУБД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:16 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
на самом деле из метода имеем список значений кодов его и передаем в запрос потом получаем список родителей слишком много ошибок Но на самом деле : "Тому не надо ходить далеко у кого черт за плечами Вакула ..." в полном коде все есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:22 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
leafна самом деле из метода имеем список значений кодов его и передаем в запрос потом получаем список родителей слишком много ошибок Но на самом деле : "Тому не надо ходить далеко у кого черт за плечами Вакула ..." в полном коде все есть Вот, что значит не замыленный взгляд. Как в 1С та живется после foxpro? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:29 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
что значит не замыленный ? я уже 3 года или больше как с фокса соскачил да что я то? Вон piva тут ошивается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:33 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
leafчто значит не замыленный ? я уже 3 года или больше как с фокса соскачил да что я то? Вон piva тут ошивается 3 года для 1С видимо не срок ;), ведь полный код еще в 7.7 был, а данное решение первый раз вижу, отправь в книгу знаний на мисту.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:38 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
думаю найдется кому запатентовать ... а вообще тут главное хелп уметь читать по сравнению с фоксом тут в этом смысле легче ... а насчет того что оно и в 7_7 было ... так я его с 7_7 и знаю ... я и там был за 3-4 года успел везде насчет фокспрошников думаю : если объявить перекличку - счас вылезут просто на фоксе чуть другая отмосфера была ... фоксклуб и т.д. отсутствие хелпа больше старались помочь друг другу что бы среда разработки жила здесь по другому ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:44 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
Закиров ДамирПлатформа построена так, что один запрос по нескольким таблицам (или несколько обращений в одном запросе к одной таблице, что в данном случае происходит) всегда отрабатывает быстрее, чем несколько запросов каждый по своей таблице.Вы это откуда узнали, смотрели планы выполнения запросов и счетчики Reads, Writes, CPU в SQL Server Profiler? Или может быть Вам об этом всего лишь сказали на курсах/прочитали в книге? Закиров ДамирПлатформа на сервере преобразует запрос из формата 1С в формат SQL, попутно оптимизируя его. Поэтому, когда Вы строите один большой запрос вместо нескольких маленьких, Вы тем самым отдаете работу по оптимизации запроса в "руки" платформы. Т.е., в данном примере, таблица справочника будет прочитана только один раз (а не по количеству уровней иерархии в нем). Другими словами, получение массива данных большим запросом вместо нескольких маленьких (кстати, запрос в цикле является грубой ошибкой) оптимизирует работу с базой данных.Вы видели резальтаты этой "ОПТИМИЗАЦИИ" в профайлере SQL? Или же по каким-то причинам просто предполагаете, якобы платформа "оптимизирует" его. P.S. Запрос в цикле является грубой ошибкой для новичков, которые не умеют мыслить в категориях наборов данных, для профессионалов высокого класса, иногда грубая ошибка - запрос без цикла. По ссылке был приведен пример кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:53 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
leafдумаю найдется кому запатентовать ... а вообще тут главное хелп уметь читать по сравнению с фоксом тут в этом смысле легче ... а насчет того что оно и в 7_7 было ... так я его с 7_7 и знаю ... я и там был за 3-4 года успел везде насчет фокспрошников думаю : если объявить перекличку - счас вылезут просто на фоксе чуть другая отмосфера была ... фоксклуб и т.д. отсутствие хелпа больше старались помочь друг другу что бы среда разработки жила здесь по другому На территории 1С в свое время тоже никто в Хелп не отправлял, на том сайте собственно говоря 1С и учился, и атмосфера там была своя, особенная .... эх ностальгия ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:55 |
|
||
|
Как запросом получить список всех родителей зад-го элемента
|
|||
|---|---|---|---|
|
#18+
leaf Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. в общем мелкие ошибки есть = ищите сами ибо мне лень идея такая хотели одним запросом? ну вот он ... надеюсь код строковый?Здесь не мелкие ошибки, а принципиально неверный подход. Так не будет работать, потому что полный код не хранится в базе и к нему нельзя обратиться в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2010, 12:59 |
|
||
|
|

start [/forum/topic.php?fid=28&msg=36598130&tid=1522409]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
199ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 574ms |

| 0 / 0 |
