| 
    
        
     
     | 
    
  | 
Запрос по двум табличным частям документа | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    12:46 
 | 
         
        Подскажите пожалуйста по запросу.
 
        Есть документ. У этого документа есть 2 табличных части. В первой ссылки на другой документ. У которого так же 2 нужные табличные части. Необходимо выбирать номенклатуру второго (другого документа), из одной табличной части, по ссылкам первой части документа и если Грузоотправитель = ПодразделениеЗаказчик, из этого другого документа. Выберет ли это правильно вот этот запрос? нужно делать подобный потом по ПодразделениеИсполнитель, я вот делать решил двумя разными запросами. Интересует выполнится ли условие в И? Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка КАК ДокументСсылка, | ВЫБОР | КОГДА ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | ТОГДА ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Комментарий | ИНАЧЕ ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Номенклатура | КОНЕЦ КАК Номенклатура, | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Количество КАК Количество |ИЗ | Документ.ХХХ_НарядЗадание.ОтгруженоЗаказчиком КАК ХХХ_НарядЗадание_ОтгруженоЗаказчиком |ГДЕ | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка В(&Ссылки) | И ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка.ПодразделениеЗаказчик = &ПодразделениеЗаказчик";  | 
|||
| 
    1
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    12:54 
 | 
         
        Всего у меня получился такой код. Я сделал вот так. Вижу что можно было бы через объединение делать.
 
        Это сработает? Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка КАК ДокументСсылка, | ВЫБОР | КОГДА ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | ТОГДА ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Комментарий | ИНАЧЕ ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Номенклатура | КОНЕЦ КАК Номенклатура, | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Количество КАК Количество |ИЗ | Документ.ХХХ_НарядЗадание.ОтгруженоЗаказчиком КАК ХХХ_НарядЗадание_ОтгруженоЗаказчиком |ГДЕ | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка В(&Ссылки) | И ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка.ПодразделениеЗаказчик = &Грузоотправитель"; Запрос.УстановитьПараметр("Ссылки", Объект.ХХХ_Основание.Выгрузить().ВыгрузитьКолонку("ДокументСсылка")); Запрос.УстановитьПараметр("Грузоотправитель", Объект.Грузоотправитель); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока = Объект.ХХХ_Товары.Добавить(); НоваяСтрока.Номенклатура = Выборка.Номенклатура; НоваяСтрока.Количество = Выборка.Количество; НоваяСтрока.ДокументСсылка = Выборка.ДокументСсылка; КонецЦикла; // Если Грузоотправитель = ПодразделениеИсполнитель, то запрос по Тч.ОтгруженоИсполнителем Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | ХХХ_НарядЗадание_ОтгруженоИсполнителем.Ссылка КАК ДокументСсылка, | ВЫБОР | КОГДА ХХХ_НарядЗадание_ОтгруженоИсполнителем.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | ТОГДА ХХХ_НарядЗадание_ОтгруженоИсполнителем.Комментарий | ИНАЧЕ ХХХ_НарядЗадание_ОтгруженоИсполнителем.Номенклатура | КОНЕЦ КАК Номенклатура, | ХХХ_НарядЗадание_ОтгруженоИсполнителем.Количество КАК Количество |ИЗ | Документ.ХХХ_НарядЗадание.ОтгруженоИсполнителем КАК ХХХ_НарядЗадание_ОтгруженоИсполнителем |ГДЕ | ХХХ_НарядЗадание_ОтгруженоИсполнителем.Ссылка В(&Ссылки) | И ХХХ_НарядЗадание_ОтгруженоИсполнителем.Ссылка.ПодразделениеИсполнитель = &Грузоотправитель"; Запрос.УстановитьПараметр("Ссылки", Объект.ХХХ_Основание.Выгрузить().ВыгрузитьКолонку("ДокументСсылка")); Запрос.УстановитьПараметр("Грузоотправитель", Объект.Грузоотправитель); РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Пока Выборка.Следующий() Цикл НоваяСтрока = Объект.ХХХ_Товары.Добавить(); НоваяСтрока.Номенклатура = Выборка.Номенклатура; НоваяСтрока.Количество = Выборка.Количество; НоваяСтрока.ДокументСсылка = Выборка.ДокументСсылка; КонецЦикла;  | 
|||
| 
    2
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    12:55 
 | 
         
        (1+) верхняя строчка перед первым запросом
 
        // Если Грузоотправитель = ПодразделениеЗаказчик, то запрос по Тч.ОтгруженоЗаказчиком  | 
|||
| 
    3
    
        Kassern    
     26.05.22 
            ✎
    12:56 
 | 
         
        (0) "ХХХ_НарядЗадание" - даже не хочу представлять, что это за наряд такой и какие там задания)     
         | 
|||
| 
    4
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    12:57 
 | 
         
        Сам вопрос в том что, будет ли работать вот это условие?
 
        |ГДЕ | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка В(&Ссылки) | И ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка.ПодразделениеЗаказчик = &Грузоотправитель"; Когда идет выборка документа по ссылкам, из первой табличной части, и ещё по условию на подразделение, одно из  | 
|||
| 
    5
    
        Kassern    
     26.05.22 
            ✎
    12:57 
 | 
         
        не знаете как отработает соединения таблиц - прочитайте про них, протестируйте на простых примерах с минимальным количеством строк     
         | 
|||
| 
    6
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    12:57 
 | 
         
        (3) Да обычный документ, в использовании. Такие вот кто то придумал идентификаторы. А так ничего необычного.     
         | 
|||
| 
    7
    
        Kassern    
     26.05.22 
            ✎
    12:58 
 | 
         
        (4) вы должны понимать, что ГДЕ отрабатывает уже с итоговой таблицей после СВЯЗИ таблиц     
         | 
|||
| 
    8
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    12:58 
 | 
         
        (5) Сейчас вопрос сработает ли запросы в (1) читать ничего нет времени. Это сейчас нужно выяснить. а не читать что то идти.     
         | 
|||
| 
    9
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    13:00 
 | 
         
        (7) Там нет никаких связей, происходит отбор номенклатуры табличной части документа, по переданным в ГДЕ Ссылкам, из первой табличной части другого документа.
 
        Сработает ли это если накладывается ещё условие в И ? | И ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка.ПодразделениеЗаказчик = &Грузоотправитель";  | 
|||
| 
    10
    
        Kassern    
     26.05.22 
            ✎
    13:01 
 | 
         
        (9) значит еще проще для вас, раз нет. Условия с И отработаются, куда они денутся. Вы не знаете как работает И? Отберутся все строчки, которые удовлетворяют обоим условиям.     
         | 
|||
| 
    11
    
        Ryzeman    
     26.05.22 
            ✎
    13:01 
 | 
         
        (7) ТЫ видишь у него связь таблиц?     
         | 
|||
| 
    12
    
        kobzon2    
     26.05.22 
            ✎
    13:02 
 | 
         
        (8) Что значит сработает ли запрос? В (5) правильно написали, заполни документы минимальными данными и тестируй.     
         | 
|||
| 
    13
    
        Kassern    
     26.05.22 
            ✎
    13:04 
 | 
         
        (11) я даже заглядывать не стал) Не ожидал, что будет вопрос по поводу И в условии) Это же блин самые азы     
         | 
|||
| 
    14
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    13:05 
 | 
         
        (13) Для меня вот это как то необычно было
 
        | ХХХ_НарядЗадание_ОтгруженоЗаказчиком.Ссылка В(&Ссылки) И ещё плюс отбор, как то не мог сообразить как это будет.  | 
|||
| 
    15
    
        Kassern    
     26.05.22 
            ✎
    13:08 
 | 
         
        (14) И что тут не обычного? Простое условие на вхождение ссылки в коллекцию. Вот и получается, если ссылка входит в коллекцию и у нее все по жизни хорошо, тогда выводить строчку)     
         | 
|||
| 
    16
    
        Kassern    
     26.05.22 
            ✎
    13:09 
 | 
         
        я одного понять не могу, неужели для вас быстрее написать пост на Мисте, чем просто взять в консоли запросов быстро проверить результат?     
         | 
|||
| 
    17
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    13:15 
 | 
         
        (16) Я открываю консоль сейчас. тут ещё к ней подлезть нужно. И ещё и на тестирование времени может не оказаться.
 
        Я в теории хотел узнать, отрабатывает ли то что я привел в (1). Хоть и таким. не оптимальным образом. Консоль ещё тут только под тонким клиентом может работать. Я хотел спросить и делать.  | 
|||
| 
    18
    
        Kassern    
     26.05.22 
            ✎
    13:17 
 | 
         
        (17) вы так это описываете, как будто целая история - открыть консоль)) Можно же просто через файл->Открыть и все дела. Или же поставить звездочку для быстрого доступа, если прикрутили ее к 1с. Щелк и консоль открылась, туда просто текст запроса вставили и параметры указали. Делов на 2 минуты, вы столько же по времени писали сам пост)     
         | 
|||
| 
    19
    
        NIGHTHUNTER    
     26.05.22 
            ✎
    13:19 
 | 
         
        (18) В голове буря. видимо нет энергии или силы. что бы сидеть самому и рубиться. Может вышла?!
 
        Вчера например. я обнаружил что у меня нет карточки. Мысли подсказали, что я ее оставил в штанах, что нес, перешивать и подшивать другие. А ателье вчера не работало день. От всего, так.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |