|   |   | 
| 
 | Спецы по запросам, к вам челОм бью | ☑ | ||
|---|---|---|---|---|
| 0
    
        Alex33 27.09.11✎ 16:12 | 
        Есть справочник "Контрагенты". Есть справочник "Коэффициенты" с реквизитами "ГруппаКонтрагентов" (куда выбирается группа контрагентов) и "Коэффициент". Можно ли в запросом получить табличку соответствий "Контрагент-Коэффициент", где контрагенты входят в группы из справочника "Коэффициенты" ? Несколько сумбурно обьясняюсь, но, надеюсь, поймете. Вставить коэффициент непосредственно в справочник Контрагенты - не предлагать. Заранее спасибо.     | |||
| 1
    
        shuhard 27.09.11✎ 16:12 | 
        (0) да     | |||
| 2
    
        aleks-id 27.09.11✎ 16:13 | 
        пицот рублей     | |||
| 3
    
        Gesperid10 27.09.11✎ 16:14 | 
        499 =)     | |||
| 4
    
        acsent 27.09.11✎ 16:14 | 
        только если ограничена иерархия     | |||
| 5
    
        DrShad 27.09.11✎ 16:14 | 
        я в принципе не имею ничего против, делай     | |||
| 6
    
        Alex33 27.09.11✎ 16:14 | 
        (1) - а пример нельзя показать?     | |||
| 7
    
        Alex33 27.09.11✎ 16:14 | 
        (4) - иерархия, к сожалению, не ограничена     | |||
| 8
    
        catena 27.09.11✎ 16:14 | 
        соединение по контрагенты.владелец=Коэффициенты.ГруппаКонтрагентов, если правильно поняла...     | |||
| 9
    
        catena 27.09.11✎ 16:15 | 
        (7)А, о, сложнее :)     | |||
| 10
    
        butterbean 27.09.11✎ 16:18 | 
        (7) красиво запросом не получится, нужно вычислять максимальный уровень вложенности     | |||
| 11
    
        Alex33 27.09.11✎ 16:19 | 
        (10) - вот и меня такие же мысли, и грустно от этого...     | |||
| 12
    
        Maxus43 27.09.11✎ 16:26 | 
        запросом можно получить всех родителей конкретного контрагента, но не красиво... а ещё потом соединять с непойми чем... в коде обработать проще будет, там есть ПринадлежитЭлементу() и т.д.     | |||
| 13
    
        Alex33 27.09.11✎ 16:28 | 
        (12) - согласен, что в коде обработать проще, но хотелось, чтобы было красиво...     | |||
| 14
    
        Maxus43 27.09.11✎ 16:28 | 
        запросом красиво не получится. понятней будет в коде     | |||
| 15
    
        hhhh 27.09.11✎ 16:29 | 
        (13) как-то так
  ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Коэффициенты КАК Коэффициенты ПО Контрагенты.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов ИЛИ ... | |||
| 16
    
        Alex33 27.09.11✎ 16:35 | 
        (15) - да, такая конструкция приходила в голову, но уж больно оно некрасиво. Я всё вымучиваю: ну а вдруг можно как-нибудь хитро и универсально запросить...     | |||
| 17
    
        IKSparrow 27.09.11✎ 16:37 | 
        10499.
  по пять штук нам с тобой и 499 тому парню. | |||
| 18
    
        OldFornit 27.09.11✎ 16:42 | 
        В рамках СКД - легко. Голым запросом - заколебешься.     | |||
| 19
    
        VasRogov 27.09.11✎ 17:04 | 
        (15) ИМХО можно просто вот так:
  ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Коэффициенты КАК Коэффициенты Контрагенты.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = Коэффициенты.ГруппаКонтрагентов | |||
| 20
    
        hhhh 27.09.11✎ 17:07 | 
        (19) не получается, к сожалению.     | |||
| 21
    
        Steelvan 27.09.11✎ 17:40 | 
        Можно идти от обратного. Сначала разложить Коэфф. - Группа до таблицы, где будут все группы с из Коэфф.     | |||
| 22
    
        Steelvan 27.09.11✎ 17:42 | 
        Делать тз, потом эту тз пихать во временную таблицу и в запросе делать соединение с этой таблицей.     | |||
| 23
    
        sda553 27.09.11✎ 17:52 | 
        В два запроса, 
  - первым считаем максимальный уровень вложенности на тек. момент - Второй запрос строится в зависимости от результатов первого по типу как в (15) | |||
| 24
    
        Ochkarito 27.09.11✎ 18:00 | 
        (0)Попробуй так (за оптимальность работы запроса не ручаюсь):
  ВЫБРАТЬ Контрагенты.Ссылка, Коэффициенты.Коэффициент ИЗ Справочник.Контрагенты КАК Контрагенты ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Коэффициенты КАК Коэффициенты ПО (Контрагенты.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ Коэффициенты.ГруппаКонтрагентов ИЗ Справочник.Коэффициенты КАК Коэффициенты)) ГДЕ Контрагенты.ЭтоГруппа = ЛОЖЬ | |||
| 25
    
        Alex33 27.09.11✎ 18:09 | 
        (24) - Данный запрос выберет все сочетания Контрагентов и Коэффициентов     | |||
| 26
    
        Alex33 27.09.11✎ 18:27 | 
        В качестве решения выбрал следующее, подсказанное на другом форуме:
  ВЫБРАТЬ Коэффициенты.Коэффициент, Контрагенты.Ссылка ИЗ Справочники.Коэффициенты КАК Коэффициенты Левое соединение Справочник.Контрагенты КАК Контрагенты ПО Коэффициенты.ГруппаКонтрагентов=Контрагенты.Родитель ГДЕ Контрагенты.ЭтоГруппа=ЛОЖЬ Не будет работать с вложенными группами, но в остальном под мои цели подходит. Всем спасибо за помощь. Удачи вам. | |||
| 27
    
        sda553 28.09.11✎ 07:47 | 
        (24) Пора бы тебе уже открыть тайну что (В ИЕРАРХИИ) не работает если ставить его в условие соединения
  СОЕДИНЕНИЕ ПО | |||
| 28
    
        Ochkarito 28.09.11✎ 09:32 | 
        (26),(27) Хотя бы проверили как запрос отрабатывает, прежде чем что-то утверждать =)     | |||
| 29
    
        Gesperid10 28.09.11✎ 09:56 | 
        (28) сам-то проверил?     | |||
| 30
    
        Ochkarito 28.09.11✎ 09:58 | 
        (29) А что не так?     | |||
| 31
    
        Gesperid10 28.09.11✎ 10:00 | 
 вернёт все группы, а не текущей строки Коэффициенты, как ты ожидаешь | |||
| 32
    
        Segate 28.09.11✎ 10:02 | 
        Рекурсией, не проще?     | |||
| 33
    
        Ochkarito 28.09.11✎ 10:04 | 
        (31) Ага, все. Поэтому в (24) про оптимальность написал, если нужно по конкретной группе, то добавить условие
  Коэффициенты.ГруппаКонтрагентов = &ГруппаКонтрагентов. Только в данном случае это подзапрос, проверяющий вхождение Контрагенты.Ссылка. | |||
| 34
    
        Gesperid10 28.09.11✎ 10:11 | 
        (33) тут дело не в оптимальности, у тебя каждый контрагент получит все коэффициенты     | |||
| 35
    
        Ochkarito 28.09.11✎ 10:16 | 
        (34)Ок     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |