|   |   | 
| 
 | помогите с запросом | ☑ | ||
|---|---|---|---|---|
| 0
    
        yanejsh 04.07.13✎ 08:52 | 
        Есть табличка
  номенклатура реквизит1 реквизит2 есть регистр сведений, измерения 1)номенклатура 2)реквизит1 или реквизит2 ресурс Подразделение Нужно из первой таблицы составить соответствие номенклатура - подразделение условие такое нужно задать: Если есть привязка в РС номенклатуры и реквизит1, то подразделение определяем по ним, если есть привязка в РС номенклатуры и реквизит2, то подразделение определяем по ним. Если не было таких привязок, то подразделение определять только по номенклатуре и пустому второму измерению. Как это сделать в запросе? | |||
| 1
    
        Allexe 04.07.13✎ 09:02 | 
        (0) Первый вложенный запрос с условием Если есть привязка в РС номенклатуры и реквизит1, второй с условием номенклатура и реквизит2. Результаты объединить.     | |||
| 2
    
        Allexe 04.07.13✎ 09:03 | 
        (0) 2)реквизит1 или реквизит2 не понятно что это значит? у тебя два реквизита? или это один реквизит с двумя разными значениями?     | |||
| 3
    
        yanejsh 04.07.13✎ 09:05 | 
        (2) это разные реквизиты     | |||
| 4
    
        yanejsh 04.07.13✎ 09:06 | 
        (1) а если будет две привязки, то результаты не задвоятся при объединении?     | |||
| 5
    
        kosts 04.07.13✎ 09:13 | 
        Напиши какие сведения хочешь хранить.     | |||
| 6
    
        yanejsh 04.07.13✎ 09:18 | 
        это не так важно
  Номенклатура РамкаКартины ЗадникКартины РамкаКартины ЗадникКартины - это отдельные реквизиты не связанные с номенклатурой. | |||
| 7
    
        kosts 04.07.13✎ 09:21 | 
        (6) А подразделение зачем тут?     | |||
| 8
    
        yanejsh 04.07.13✎ 09:24 | 
        (7) нужно привязать номенклатуру к подразделению в зависимости от дополнительных реквизитов     | |||
| 9
    
        kosts 04.07.13✎ 09:30 | 
        (8) Точный, но совершенно бесполезный ответ.     | |||
| 10
    
        yanejsh 04.07.13✎ 09:34 | 
        (9) у тебя такие же вопросы.
  Зачем задавать вопрос, если ответ на него не изменить общую картину? | |||
| 11
    
        hhhh 04.07.13✎ 09:38 | 
        Это старый анекдот про консультанта 1с: 
  Летит человек на воздушном шаре. И вдруг попадает в густой туман. Ничего не видно. Снижается. На земле стоит человек. "Скажите, пожалуйста, где я нахожусь?". Ответ: "Вы находитесь на воздушном шаре, а ваш шар летит в густом тумане". | |||
| 12
    
        Drac0 04.07.13✎ 09:39 | 
        (0) Как обрабатывать ситуацию когда регитсре есть записи?:
  Товар1 Реквизит1 Подразделение1 Товар1 Реквизит2 Подразделение2 | |||
| 13
    
        yanejsh 04.07.13✎ 09:42 | 
        (12) брать запись 
  Товар1 Реквизит1 Подразделение1 то есть реквизит1 первостепенен, на втором месте реквизит2. если нет ни первого ни второго, то искать просто соответствие Товар1 Подразделение1 | |||
| 14
    
        kosts 04.07.13✎ 09:43 | 
        (10) > Зачем задавать вопрос, если ответ на него не изменить общую картину?
  Хочется увидеть картинку целиком, т.к. возможно есть проблема выше уровнем. | |||
| 15
    
        yanejsh 04.07.13✎ 09:44 | 
        (14) тебе просто скучно :)
  подумай пожалуйста только над запросом, не надо залезать выше | |||
| 16
    
        Drac0 04.07.13✎ 09:51 | 
        (0) Тогда самый простой вариант через временные таблицы.
  ВЫБРАТЬ РС.Товар РС.Подразделение ПОМЕСТИТЬ ВТ_Реквизит1 ИЗ РегистрСведений КАК РС ГДЕ РС.Реквизит ССЫЛКА Справочник.РамкаКартины ; ВЫБРАТЬ РС.Товар РС.Подразделение ПОМЕСТИТЬ ВТ_Реквизит1 ИЗ РегистрСведений КАК РС ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Реквизит1 КАК ПО НЕ ВТ_Реквизит1.Товар = РС.Товар ГДЕ РС.Реквизит ССЫЛКА Справочник.ЗадникКартины и для случая с пустым реквизитов, а потом объединить | |||
| 17
    
        kosts 04.07.13✎ 09:51 | 
        (15) Над запросом не думаю пока не увижу вашей (пусть и не очень правильной реализации).
  > не надо залезать выше как скажешь | |||
| 18
    
        hhhh 04.07.13✎ 09:53 | 
        (15) но вообще, согласись, начсчет измерений ты соврал, ну не может быть такого измерения:
  2)реквизит1 или реквизит2 фантастика какая-то. поэтому костс и сомневается. | |||
| 19
    
        yanejsh 04.07.13✎ 09:55 | 
        (18) на основании чего ты решил, что я соврал?
  что не так в реквизит1 ? | |||
| 20
    
        Drac0 04.07.13✎ 10:14 | 
        (18) Что не так с составным типом?     | |||
| 21
    
        yanejsh 04.07.13✎ 11:37 | 
        (16) как-то не так получается
  в первой Вт получится несколько строк, и соединятся со второй ВТ, и произойдет размножение строк второй ВТ на те товары, где НЕ ВТ_Реквизит1.Товар = РС.Товар | |||
| 22
    
        viktor_vv 04.07.13✎ 11:43 | 
        (21) А номенклатуру, которой нет в регистре надо выводить ?     | |||
| 23
    
        yanejsh 04.07.13✎ 11:53 | 
        пока запрос такой     | |||
| 24
    
        yanejsh 04.07.13✎ 11:53 | 
        ВЫБРАТЬ
  ВЫРАЗИТЬ(ТаблицаМатериалов.Номенклатура КАК Справочник.Номенклатура) КАК Номенклатура, ВЫРАЗИТЬ(ТаблицаМатериалов.ЕдИзм КАК Справочник.ЕдиницыИзмерения) КАК ЕдиницаИзмерения, ВЫРАЗИТЬ(ТаблицаМатериалов.РамкаКартины КАК Справочник.РамкиКартины) КАК РамкаКартины, ВЫРАЗИТЬ(ТаблицаМатериалов.ЗадникКартины КАК Справочник.ЗадникиКартины) КАК ЗадникКартины, ТаблицаМатериалов.Количество КАК Количество ПОМЕСТИТЬ ТЗ ИЗ &ТаблМатериалов КАК ТаблицаМатериалов ; /////////////////////////////////////////////////////////// ВЫБРАТЬ МатериалыВПодразделении.Номенклатура, МатериалыВПодразделении.РамкаКартины КАК РамкаКартины, МатериалыВПодразделении.Подразделение ПОМЕСТИТЬ ВТ_РамкаКартины ИЗ РегистрСведений.МатериалыВПодразделении КАК МатериалыВПодразделении ГДЕ МатериалыВПодразделении.РамкаКартины ССЫЛКА Справочник.РамкиКартины ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МатериалыВПодразделении.Номенклатура, МатериалыВПодразделении.РамкаКартины КАК ЗадникКартины, МатериалыВПодразделении.Подразделение ПОМЕСТИТЬ ВТ_ЗадникиКартины ИЗ РегистрСведений.МатериалыВПодразделении КАК МатериалыВПодразделении ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РамкаКартины КАК ВТ_РамкаКартины ПО (НЕ МатериалыВПодразделении.Номенклатура = ВТ_РамкаКартины.Номенклатура) ГДЕ МатериалыВПодразделении.РамкаКартины ССЫЛКА Справочник.ЗадникиКартины ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МатериалыВПодразделении.Номенклатура, МатериалыВПодразделении.Подразделение ПОМЕСТИТЬ ВТ_Общая ИЗ РегистрСведений.МатериалыВПодразделении КАК МатериалыВПодразделении ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_РамкаКартины КАК ВТ_РамкаКартины ПО (НЕ МатериалыВПодразделении.Номенклатура = ВТ_РамкаКартины.Номенклатура) ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЗадникиКартины КАК ВТ_ЗадникиКартины ПО (НЕ МатериалыВПодразделении.Номенклатура = ВТ_ЗадникиКартины.Номенклатура) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_РамкаКартины.Номенклатура, ВТ_РамкаКартины.РамкаКартины, ВТ_РамкаКартины.Подразделение ИЗ ВТ_РамкаКартины КАК ВТ_РамкаКартины ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_ЗадникиКартины.Номенклатура, ВТ_ЗадникиКартины.ЗадникКартины, ВТ_ЗадникиКартины.Подразделение ИЗ ВТ_ЗадникиКартины КАК ВТ_ЗадникиКартины ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВТ_Общая.Номенклатура, NULL, ВТ_Общая.Подразделение ИЗ ВТ_Общая КАК ВТ_Общая | |||
| 25
    
        yanejsh 04.07.13✎ 11:55 | 
        (22) номенклатуру надовывести из первой таблицы, ТаблицаМатериалов
  а к ней определить какое подразделение из РС | |||
| 26
    
        yanejsh 04.07.13✎ 12:10 | 
        хелп, плиз     | |||
| 27
    
        viktor_vv 04.07.13✎ 12:21 | 
        Можно так еще, не уверен везде ли синтаксис правильный. Ну и по скорости вроде должно быть нормально, там ничего сложного, по идее, нет для планировщика.
  И МассивПустыхТипов - это массив типов измерения составного типа. В типовой должна быть функция Функция МассивПустыхЗначений(ОписаниеТипов) Экспорт Описание типов можно через метаданные выдернуть, сразу не вспомню точный синтаксис. ТекстЗапроса = " |Выбрать | СпрНоменклатура.Ссылка КАК Номенклатура, | Выбор | КОГДА Рег1.Номенклатура IS NOT Null Тогда | Рег1.Подразделение | Когда Рег2.Номенклатура IS NOT Null Тогда | Рег2.Подразделение | Иначе | ISNULL(Рег3.Поразделение,Справочник.Подразделения.ПустаяСсылка) | Конец КАК Подразделение |ИЗ | Справочник.Номенклатура КАК СпрНоменклатура | Левое соединение РегистрСведений. КАК Рег1 | ПО Рег1.Номенклатура = СпрНоменклатура.Ссылка | И Рег1.Измерение2 = СпрНоменклатура.Реквизит1 | Левое соединение РегистрСведений. КАК Рег2 | ПО Рег2.Номенклатура = СпрНоменклатура.Ссылка | И Рег2.Измерение2 = СпрНоменклатура.Реквизит2 | Левое соединение РегистрСведений. КАК Рег3 | ПО Рег3.Номенклатура = СпрНоменклатура.Ссылка | И Рег3.Измерение2 в (&МассивПустыхЗначений) | |"; | |||
| 28
    
        viktor_vv 04.07.13✎ 12:22 | 
        * МассивПустыхТипов -> МассивПустыхЗначений     | |||
| 29
    
        viktor_vv 04.07.13✎ 12:35 | 
        МассивПустыхЗначений = ОбщегоНазначения.МассивПустыхЗначений(Метаданные.РегистрыСведений.ТвойРегистр.Измерения.Измерение2.Тип);     | |||
| 30
    
        yanejsh 04.07.13✎ 14:12 | 
        (27) спасибо, вроде похоже на правду результат получается.
  потестирую дальше | |||
| 31
    
        Drac0 04.07.13✎ 14:14 | 
        (21) Не обращай внимание, о чем-то не том думал в это время :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |