8.х [РЕШЕНО]Проблемка с запросом. Наверное простая, но чёт я застрял.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Sert, 23 июл 2014.

  1. TopicStarter Overlay
    Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Нужно запросом получить список документов и данные из первой попавшейся строки соответствующей условию.
    Грубо говоря есть два запроса, нужно их как-то слепить.
    Первый получает параметры из самого документа:
    Код:
    //----
    ВЫБРАТЬ
        БланкЗаказа.ДокументОснование.Контрагент КАК Контрагент,
        БланкЗаказа.ДокументОснование.ДатаОтгрузки КАК ДатаСдачи
    ИЗ
        Документ.БланкЗаказа КАК БланкЗаказа
    ГДЕ
        БланкЗаказа.Ссылка В(&МассивДокументов)
    Второй получает данные из табличной части
    //-----
    ВЫБРАТЬ
        БланкЗаказаКомпоненты.Компонент,
        БланкЗаказаКомпоненты.Подразделение,
        БланкЗаказаКомпоненты.Исполнитель
    ИЗ
        Документ.БланкЗаказа.Компоненты КАК БланкЗаказаКомпоненты
    ГДЕ
        БланкЗаказаКомпоненты.Ссылка В(&МассивДокументов)
        И НЕ БланкЗаказаКомпоненты.Выполнено
    УПОРЯДОЧИТЬ ПО
        БланкЗаказаКомпоненты.НомерСтроки
    Вот. И нужно чтоб выдались все документы из массива с одной строчкой документа.
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Из теперешнего описания: первый запрос не нужен. Во второй запрос добавьте условие БланкЗаказаКомпоненты.НомерСтроки = 1 если нужна одна строка (поскольку больше условий на отбор компонентов не вижу), и данные документа основания также получайте во втором запросе (через БланкЗаказаКомпоненты.Ссылка).

    Если это не то что нужно тогда задачу подробнее и с примером.
  3. TopicStarter Overlay
    Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Не. Нужна не первая строка, а первая в которой выполняется условие "НЕ БланкЗаказаКомпоненты.Выполнено"
    --- Объединение сообщений, 23 июл 2014 ---
    Есть док БланкЗаказа
    в доке есть строки со всякими параметрами и галочкой Выполнено.
    Вот нужно по всем документам из массива выдать первую строку (данные из неё "Компонент,Подразделение,Исполнитель" ) в которой эта галочка не установлена, ну и некоторые данные из шапки документа (клиент например)
  4. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Выбрать первые 1


    Отправлено из моего iPhone используя Tapatalk
  5. TopicStarter Overlay
    Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Со строками понятно, что выбрать первые. Но только если второй запрос так сделать, то выдасца одна единственная строка по одному документу, а нужно из скаждого по одной.
  6. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.977
    Симпатии:
    397
    Баллы:
    104
    Значит формулируйте нормально свой вопрос


    Отправлено из моего iPhone используя Tapatalk
  7. TopicStarter Overlay
    Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Даже вот этого "Нужно запросом получить список документов и данные из первой попавшейся строки" достаточно, что бы понять, что "выбрать первые 1" никак не подошло в обычном виде.
    --- Объединение сообщений, 23 июл 2014 ---
    Нужно запросом получить из каждого документа переданного в массиве первую строку отвечающую определенному условию (А=Б). Не нужны строки не соответствующие этому условию, и не нужны строки которые идут следом за строкой, где условие выполняется.
    Мой второй запрос выводит все строки документа, в которых условие выполняется, так вот по каждому доку нужна только одна строка, самая первая которая попадает в запрос (не вообще первая, а по одному документу первая). Плюс если в документе нет ни одной строки удовлетворяющей условию, то документ всеравно оказывается в списке, т.к. требуется отобразить пару реквизитов из шапки.
    Последнее редактирование: 23 июл 2014
  8. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    люблю хитрые условия :)
    вот такой запрос вернет по одной строке с заданными условиями, строка будет выбрана с минимальным номером

    Код:
    ВЫБРАТЬ
        БланкЗаказаКомпоненты.Ссылка,
        МИНИМУМ(БланкЗаказаКомпоненты.НомерСтроки) КАК НомерСтроки
    ПОМЕСТИТЬ ПервыеСтрокиДокументов
    ИЗ
        Документ.БланкЗаказа.Компоненты КАК БланкЗаказаКомпоненты
    ГДЕ
        БланкЗаказаКомпоненты.Ссылка В(&МассивДокументов)
        И НЕ БланкЗаказаКомпоненты.Выполнено
    СГРУППИРОВАТЬ ПО
        БланкЗаказаКомпоненты.Ссылка
    ;
    
    ВЫБРАТЬ
        БланкЗаказаКомпоненты.Компонент,
        БланкЗаказаКомпоненты.Подразделение,
        БланкЗаказаКомпоненты.Исполнитель
    ИЗ
        ПервыеСтрокиДокументов КАК ПервыеСтрокиДокументов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.БланкЗаказа.Компоненты КАК БланкЗаказаКомпоненты
        ПО ПервыеСтрокиДокументов.Ссылка=БланкЗаказаКомпоненты.Ссылка
            И ПервыеСтрокиДокументов.НомерСтроки=БланкЗаказаКомпоненты.НомерСтроки
    
    --- Объединение сообщений, 23 июл 2014 ---
    если нужны данные из шапки - добавляйте их БланкЗаказаКомпоненты.Ссылка.ДокументОснование...
    Sert нравится это.
  9. TopicStarter Overlay
    Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Спасибо. Всё получилось прям сходу. Ну конечно с шапки добавил реквизиты
    --- Объединение сообщений, 23 июл 2014 ---
    Ах... Есть одна проблемка. Если в доке нет ниодной строки удовлетворяющей условию, то не попадают реквизиты из шапки (и из докоснования)... Ща попробую сам наковырять, но если вдруг у вас быстро выйдет буду благодарен.
  10. TopicStarter Overlay
    Sert
    Offline

    Sert Опытный в 1С

    Регистрация:
    4 фев 2011
    Сообщения:
    365
    Симпатии:
    12
    Баллы:
    29
    Ну в общем навоял... Может конечно и оптимальнее можно. Но на что меня хватило :)

    Код:
    ВЫБРАТЬ
        БланкЗаказаКомпоненты.Ссылка,
        МИНИМУМ(БланкЗаказаКомпоненты.НомерСтроки) КАК НомерСтроки
    ПОМЕСТИТЬ ПервыеСтрокиДокументов
    ИЗ
        Документ.БланкЗаказа.Компоненты КАК БланкЗаказаКомпоненты
    ГДЕ
        БланкЗаказаКомпоненты.Ссылка В(&МассивДокументов)
        И НЕ БланкЗаказаКомпоненты.Выполнено
    
    СГРУППИРОВАТЬ ПО
        БланкЗаказаКомпоненты.Ссылка
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        БланкЗаказаКомпоненты.Ссылка,
        БланкЗаказаКомпоненты.Компонент,
        БланкЗаказаКомпоненты.Подразделение,
        БланкЗаказаКомпоненты.Исполнитель
    ПОМЕСТИТЬ ДанныеСтрок
    ИЗ
        ПервыеСтрокиДокументов КАК ПервыеСтрокиДокументов
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.БланкЗаказа.Компоненты КАК БланкЗаказаКомпоненты
            ПО ПервыеСтрокиДокументов.Ссылка = БланкЗаказаКомпоненты.Ссылка
                И ПервыеСтрокиДокументов.НомерСтроки = БланкЗаказаКомпоненты.НомерСтроки
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        БланкЗаказа.Ссылка,
        БланкЗаказа.ДокументОснование.Контрагент КАК Контрагент,
        БланкЗаказа.ДокументОснование.ДатаОтгрузки КАК ДатаСдачи,
        ДанныеСтрок.Компонент,
        ДанныеСтрок.Подразделение,
        ДанныеСтрок.Исполнитель
    ИЗ
        Документ.БланкЗаказа КАК БланкЗаказа
            ЛЕВОЕ СОЕДИНЕНИЕ ДанныеСтрок КАК ДанныеСтрок
            ПО (ДанныеСтрок.Ссылка = БланкЗаказа.Ссылка)
  11. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    если нужны данные шапки всех документов - то да, так как сделали

Поделиться этой страницей