|   |   | 
| 
 | Дополнительные реквииты не могу придумать запрос | ☑ | ||
|---|---|---|---|---|
| 0
    
        НичегоНе Понятно 08.07.19✎ 18:15 | 
        Всем привет! Есть задача отобрать номенклатуру с определенными значениями дополнительных реквизитов. ДопРевизиы хранятся в ТЧ справочника номенклатура. Дополнительных реквизитов в районе 6штук. Но не могу придумать как построить условие вот такой запрос не работает по очевидным причинам:
 ВЫБРАТЬ РАЗЛИЧНЫЕ
Нужно искать пары свойство - значение. Как это сделать красиво? | |||
| 1
    
        Кодер 08.07.19✎ 18:17 | 
        Где Имя = Зинка
 И Имя = Танька | |||
| 2
    
        palsergeich 08.07.19✎ 18:17 | 
        Красиво не выйдет.
 Будет 6 кондовых соединений по ссылке, и свойству | |||
| 3
    
        НичегоНе Понятно 08.07.19✎ 18:21 | 
        (1)Тогда он отберет и номенклатуру с допреквизитами:
 Свойство = Значение Свойство1 = Значение1 //правильно и также Свойство = Значение1 Свойство1 = Значение //неправильно то есть просто проверит, что в тч есть такие свойства, ну и значениия тоже есть, а где они стоят, не так уж важно | |||
| 4
    
        НичегоНе Понятно 08.07.19✎ 18:23 | 
        (2)Давайте попробуем некрасиво. Какие нужны соединения и где?     | |||
| 5
    
        VladZ 08.07.19✎ 18:26 | 
        ВЫБРАТЬ РАЗЛИЧНЫЕ
 НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство1 И НоменклатураДополнительныеРеквизиты.Значение = &Значение1 объединить ВЫБРАТЬ РАЗЛИЧНЫЕ НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ГДЕ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство2 И НоменклатураДополнительныеРеквизиты.Значение = &Значение2 и т.д. | |||
| 6
    
        SleepyHead гуру 08.07.19✎ 18:33 | 
        Есть методы БСП для чтения доп реквизитов. Пишу с телефона, подробнее не могу, используй как подсказку.     | |||
| 7
    
        НичегоНе Понятно 08.07.19✎ 18:34 | 
        (5)В резульутат запроса попадут те ссылки у которых есть только Свойство1 = Значение1 а надо и  Свойство2 = Значение2. Так же в результат запроса могут попасть ссылки у которых Свойство1 = Значение2. Если оба свойства есть у ссылки.     | |||
| 8
    
        SleepyHead гуру 08.07.19✎ 18:35 | 
        (7) нифига, прочитай запрос повнимательнее     | |||
| 9
    
        НичегоНе Понятно 08.07.19✎ 18:38 | 
        (7)Читать как  "а надо Свойство1 = Значение1  и  Свойство2 = Значение2 одновременно"     | |||
| 10
    
        НичегоНе Понятно 08.07.19✎ 18:39 | 
        (8) Невнятно выразился сорян, см (9)     | |||
| 11
    
        Вафель 08.07.19✎ 18:44 | 
        под каждое свойство нужно ОТДЕЛЬНОЕ соединение     | |||
| 12
    
        singlych 08.07.19✎ 18:46 | 
        выбрать где Свойство1 и Значение1;
 выбрать где Свойство2 и Значение2; соединить внутренне | |||
| 13
    
        НичегоНе Понятно 08.07.19✎ 18:49 | 
        (12)Попадется ему номенклатура где
 Свойство1 = Значение1 Свойство2 = Значение1 Свойство3 = Значение2 И эта ссылка попадет в результат запроса? | |||
| 14
    
        НичегоНе Понятно 08.07.19✎ 18:50 | 
        (13)Очень маловероятно конечно, но возможно     | |||
| 15
    
        Сияющий в темноте 08.07.19✎ 19:11 | 
        А в чем проблема выбрать в отдельную таблицу,где поля РеквизитСсылка и Значение из одной табличной части,ничего не соединяя,а потом из этой таблицы выбрать.     | |||
| 16
    
        НичегоНе Понятно 08.07.19✎ 19:13 | ||||
| 17
    
        singlych 09.07.19✎ 19:01 | 
        (13) отвалится по условию "где Свойство2 и Значение2"     | |||
| 18
    
        maxkras26 10.07.19✎ 05:30 | 
        А так свойство=&Свойство1 и Значение=&Значение1 или свойство=&Свойство2 и Значение=&Значение2 или.....     | |||
| 19
    
        maxkras26 10.07.19✎ 05:32 | 
        НУ если твой запрос
 ГДЕ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство И НоменклатураДополнительныеРеквизиты.Значение = &Значение ИЛИ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство1 И НоменклатураДополнительныеРеквизиты.Значение = &Значение1 ИЛИ НоменклатураДополнительныеРеквизиты.Свойство = &Свойство2 И ..... | |||
| 20
    
        seevkik 10.07.19✎ 05:35 | 
        (19) Читай внимательно (9)     | |||
| 21
    
        seevkik 10.07.19✎ 05:37 | 
        Не пытайся выдумать сильно сложное - отбери сначала по первому условию, потом по второму     | |||
| 22
    
        seevkik 10.07.19✎ 05:41 | 
        Или создай ВТ_ПервоеУсловие и ВТ_ВтороеУсловие и соедини их внутренне     | |||
| 23
    
        ILM гуру 10.07.19✎ 05:54 | 
        ВЫБРАТЬ РАЗЛИЧНЫЕ
 НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты ВНУТРЕННЕЕ СОЕДИНЕНИЕ(ВЫБРАТЬ &Свойство КАК Свойство, &Значение КАК Значение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство1, &Значение1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство2, &Значение2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство3, &Значение3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство4, &Значение4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство5, &Значение5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ &Свойство6, &Значение6) КАК ТабУсловия ПО НоменклатураДополнительныеРеквизиты.Свойство = ТабУсловия.Свойство И НоменклатураДополнительныеРеквизиты.Значение = ТабУсловия.Значение | |||
| 24
    
        seevkik 10.07.19✎ 06:15 | 
        (23) Круто, но не соответствует     | |||
| 25
    
        seevkik 10.07.19✎ 06:15 | 
        (24) вот этому (13)     | |||
| 26
    
        Simod 10.07.19✎ 06:26 | 
        (23) Если я правильно понял (0), то необходимо выбрать номенклатуру у которой присутствуют сразу несколько требуемых свойств и значений. Поэтому необходимо добавить группировку и отбор по количеству вхождений (ИМЕЮЩИЕ КОЛИЧЕСТВО(НоменклатураДополнительныеРеквизиты.Ссылка) = 6).     | |||
| 27
    
        seevkik 10.07.19✎ 06:35 | 
        (23) также (13) ?     | |||
| 28
    
        seevkik 10.07.19✎ 06:49 | 
        (22) Или выбери в одну таблицу выбранные свойства, соедини по ссылке, условия по свойствам     | |||
| 29
    
        seevkik 10.07.19✎ 07:05 | 
        Короче тут все хвастаются
 1. Выбрать СправочникДР.Ссылка КАК Ссылка Поместить ВТ_Свойства ИЗ Справочник.Любой.ДополнительныеРеквизиты КАК СправочникДР ГДЕ СправочникДР.Свойство = &Свойство И СправочникДР.Значение = &Значение ; // Выбрать ВТ_Свойства.Ссылка КАК Ссылка ИЗ ВТ_Свойства КАК ВТ_Свойства Внутреннее соединение Справочник.Любой.ДополнительныеРеквизиты КАК СправочникДР2 ПО ВТ_Свойства.Ссылка = СправочникДР2.Ссылка ГДЕ СправочникДР2.Свойство = &Свойство2 И СправочникДР2.Значение = &Значение2 2. Выбрать СправочникДР.Ссылка Поместить ВТ_Свойства Из Справочник.любой.ДополнительныеРеквизиты КАК Справочник ДР Где СправочникДР.Свойство = &Свойство И СпправочникДР.Значение = &Значение ; // Выбрать СправочникДР.Ссылка Поместить ВТ_Свойства2 Из Справочник.любой.ДополнительныеРеквизиты КАК Справочник ДР Где СправочникДР.Свойство = &Свойство2 И СпправочникДР.Значение = &Значение2 ; // Выбрать ВТ_Свойства.Ссылка Из ВТ_Свойства Внутреннее соединение ВТ_Свойства2 ПО ВТ_Свойства.Ссылка = ВТ_Свойства2.Ссылка 3. Выбрать СправочникДР.Ссылка Поместить ВТ_Свойства ИЗ Справочник.Любой.Дополнительныереквизиты КАК СправочникДР Где СправочникДР.Свойство В(&МассивСвойств) ; // Выбрать ВТ_Свойства.Ссылка Из ВТ_Свойства Внутреннее соединение Вт_Свойства Как Вт_Свойства2 По Вт_Свойства.Ссылка = Вт_Свойства2.Ссылка Где Вт_Свойства.Свойство = &Свойство И Вт_Свойства2.Свойство = &Свойство2 И Вт_Свойства.Зачение = &Зачение И Вт_Свойства2.Зачение = &Зачение2 Кто что думает по скорости?) | |||
| 30
    
        Simod 10.07.19✎ 07:42 | 
        (29) Никто не хвастается. Задача элементарная и имеет несколько решений. "Красота" вторична. Имеет значение скорость выполнения и она будет зависеть от типов данных полей условия отбора или соединения, наличия индексов, размера таблиц и т.д.
 А автор (0) просто не умеет писать запросы. Могу рекомендовать: http://www.sql-ex.ru/ | |||
| 31
    
        seevkik 10.07.19✎ 08:03 | 
        (30) ну так предлагают же соединения с сформированной в запросе таблицей, счетчики вхождения и тд - по моему мнению слишком редкое исполнение, как бы "нетиповое". Это я посчитал хвастовством     | |||
| 32
    
        seevkik 10.07.19✎ 08:05 | 
        и да, (26) не правильное решение     | |||
| 33
    
        ILM гуру 10.07.19✎ 08:52 | 
        (25) Да ладно? Вы серьёзно?     | |||
| 34
    
        VS-1976 10.07.19✎ 09:31 | 
        Отбор за 1 раз + группировка (Количество)     | |||
| 35
    
        seevkik 10.07.19✎ 09:39 | 
        (34) А если у них общий список значений и попадется
 Свойство1 = Значение6 Свойство2 = Значение5 Свойство3 = Значение4 Свойство4 = Значение3 Свойство5 = Значение2 Свойство6 = Значение1 ? Те свойства? Те. Те значения? Те) | |||
| 36
    
        unregistered 10.07.19✎ 09:54 | 
        В (23) верное решение.
 Что-то вы тут уже перемудрили с какими-то счетчиками и прочими сомнениями типа (35). | |||
| 37
    
        seevkik 10.07.19✎ 10:39 | 
        (36) искать отдельно вхождения и отдельно свойств это верное решение, ага     | |||
| 38
    
        seevkik 10.07.19✎ 10:40 | 
        (37) опечатался - вхождения отдельно свойств и отдельно значений     | |||
| 39
    
        ILM гуру 10.07.19✎ 11:52 | 
        Если нужны свойства или значения, то используется таблица селектор
 ВЫБРАТЬ 1 как селектор Объединить все Выбрать 2. Потом если 1 то проверяйте "свойства", если 2 то "значения". А если добавить 3, то сможете и пары "свойство+значение" находить. | |||
| 40
    
        leonidk 10.07.19✎ 12:11 | 
        (0) Красиво  - механизмом характеристик в СКД     | |||
| 41
    
        DrZombi гуру 10.07.19✎ 12:16 | 
        (0) Запомни главное, одно аксиома, Доп реквизит в табличной части всегда один, т.е. физически реквизитов можно туда понадобавлять хоть 999 999 шт, одного и того же свойство, но это чистой воды ошибка и требует вмешательства техю поддержки :)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |