8.х Кажется я схожу с ума

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

  1. TopicStarter Overlay
    fusiok
    Offline

    fusiok Опытный в 1С

    Регистрация:
    30 окт 2013
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Сотни раз уже так делал, но всё же.
    Конфигурация УТ 10.3.
    Есть заказ покупателя и реализация на его основе. Заказано было 4 различных товара а реализован всего 1. Пишу вот такой запрос:
    Код:
    ВЫБРАТЬ
        ЗаказПокупателяТовары.Номенклатура КАК Заказанно,
        РеализацияТоваровУслугТовары.Номенклатура КАК Реализовано
    ИЗ
        Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
            ПО ЗаказПокупателяТовары.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
    ГДЕ
        ЗаказПокупателяТовары.Ссылка = РеализацияТоваровУслугТовары.Ссылка.Сделка
        И РеализацияТоваровУслугТовары.Ссылка = &Ссылка
    
    Но в результате только один реализованный товар. А нужно получить все товары из заказа.
  2. XXL
    Offline

    XXL Опытный в 1С Команда форума

    Регистрация:
    22 янв 2007
    Сообщения:
    1.159
    Симпатии:
    19
    Баллы:
    29
    Частенько с таким встречалась, выручает следующее - во временную таблицу выбираю все из заказа, потом уже из временной выбираю и соединяю. М.б. придётся и из реализации во ВрТ, а потом уже соединять.
  3. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Условия по ссылкам перенесите в связи таблиц.
  4. TopicStarter Overlay
    fusiok
    Offline

    fusiok Опытный в 1С

    Регистрация:
    30 окт 2013
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Не прокатило
    Противоречивая связь #1

    Так если я соединение не использую я из заказа получаю все товары. Но во второй колонке во все строки вписывается товар из реализации. А мне бы хотелось, чтобы он был только один раз а в остальных строках было бы NULL. Левое соединение по-моему для этого и предназначено
    Последнее редактирование: 21 авг 2014
  5. LordMaverick
    Offline

    LordMaverick Профессионал в 1С

    Регистрация:
    17 мар 2014
    Сообщения:
    3.438
    Симпатии:
    373
    Баллы:
    104
  6. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    И РеализацияТоваровУслугТовары.Ссылка = &Ссылка вот это условие надо заменить на
    ЗаказПокупателяТовары.Ссылка = &Ссылка...
    а в параметр дать ссылку на заказ
  7. TopicStarter Overlay
    fusiok
    Offline

    fusiok Опытный в 1С

    Регистрация:
    30 окт 2013
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    И что же тогда, по-вашему, я сделал не так?
    --- Объединение сообщений, 21 авг 2014 ---
    Ничего это не меняет. Да и не в условиях дело. Заказ выбирается именно тот, который и нужен
    Последнее редактирование: 21 авг 2014
  8. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    при левом соединении условие ГДЕ к правой таблице АВТОМАТИЧЕСКИ превращает соединение во ВНУТРЕННЕЕЕЕЕЕЕЕЕ
    --- Объединение сообщений, 21 авг 2014 ---
    ТЫ пробовал или это твое логическое рассуждение ?
  9. TopicStarter Overlay
    fusiok
    Offline

    fusiok Опытный в 1С

    Регистрация:
    30 окт 2013
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Конечно пробовал.
  10. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    Текст запроса покажи
  11. TopicStarter Overlay
    fusiok
    Offline

    fusiok Опытный в 1С

    Регистрация:
    30 окт 2013
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВЫБРАТЬ
        ЗаказПокупателяТовары.Номенклатура КАК Заказано,
        РеализацияТоваровУслугТовары.Номенклатура КАК Реализовано
    ИЗ
        Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
            ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
            ПО ЗаказПокупателяТовары.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
    ГДЕ
        ЗаказПокупателяТовары.Ссылка = &Ссылка
        И РеализацияТоваровУслугТовары.Ссылка.Сделка = ЗаказПокупателяТовары.Ссылка
    
  12. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    И где же тут условие на таблицу реализаций снято ???
  13. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Можете не благодарить.
    Код:
    ВЫБРАТЬ
        ЗаказПокупателяТовары.Ссылка,
        ЗаказПокупателяТовары.Номенклатура,
        СУММА(ЗаказПокупателяТовары.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_ЗаказыПокупателя
    ИЗ
        Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
    ГДЕ
        ЗаказПокупателяТовары.Ссылка = &ЗаказПокупателя
    
    СГРУППИРОВАТЬ ПО
        ЗаказПокупателяТовары.Ссылка,
        ЗаказПокупателяТовары.Номенклатура
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        РеализацияТоваровУслугТовары.Ссылка,
        РеализацияТоваровУслугТовары.ЗаказПокупателя,
        РеализацияТоваровУслугТовары.Номенклатура,
        СУММА(РеализацияТоваровУслугТовары.Количество) КАК Количество
    ПОМЕСТИТЬ ВТ_РеализованныйТовар
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    ГДЕ
        РеализацияТоваровУслугТовары.ЗаказПокупателя = &ЗаказПокупателя
    
    СГРУППИРОВАТЬ ПО
        РеализацияТоваровУслугТовары.ЗаказПокупателя,
        РеализацияТоваровУслугТовары.Ссылка,
        РеализацияТоваровУслугТовары.Номенклатура
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_ЗаказыПокупателя.Ссылка,
        ВТ_ЗаказыПокупателя.Номенклатура,
        ВТ_ЗаказыПокупателя.Количество КАК КоличествоЗаказанного,
        ЕСТЬNULL(ВТ_РеализованныйТовар.Количество, 0) КАК КоличествоРеализованного
    ИЗ
        ВТ_ЗаказыПокупателя КАК ВТ_ЗаказыПокупателя
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_РеализованныйТовар КАК ВТ_РеализованныйТовар
            ПО ВТ_ЗаказыПокупателя.Ссылка = ВТ_РеализованныйТовар.ЗаказПокупателя
                И ВТ_ЗаказыПокупателя.Номенклатура = ВТ_РеализованныйТовар.Номенклатура
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    УНИЧТОЖИТЬ ВТ_ЗаказыПокупателя
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    УНИЧТОЖИТЬ ВТ_РеализованныйТовар
    fusiok и alexburn нравится это.
  14. TopicStarter Overlay
    fusiok
    Offline

    fusiok Опытный в 1С

    Регистрация:
    30 окт 2013
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Но ведь мне нужен документ реализация, созданный на основании выбранного заказа
    Последнее редактирование: 21 авг 2014
  15. alexburn
    Online

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

    Регистрация:
    5 янв 2009
    Сообщения:
    14.772
    Симпатии:
    509
    Баллы:
    204
    Я отблагодарю:D
  16. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Хоть ты не забываешь :D
    В моем запросе просто в последней таблице добавьте необходимые поля и все будет гуд. :)
  17. TopicStarter Overlay
    fusiok
    Offline

    fusiok Опытный в 1С

    Регистрация:
    30 окт 2013
    Сообщения:
    69
    Симпатии:
    0
    Баллы:
    26
    Все же поблагодарю. Большое спасибо!
  18. Dmitriy_76
    Offline

    Dmitriy_76 Опытный в 1С Команда форума

    Регистрация:
    26 мар 2011
    Сообщения:
    2.175
    Симпатии:
    13
    Баллы:
    29
    Ну господа тогда проясните мне.... чем хуже мой вариант запроса (тем что нет 2 вложенных таблиц... и строчек запроса в 3 раза меньше :))) ?
  19. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Dmitriy_76
    1) Все таки лучше свернуть данные табличных частей и по реализации и по заказу, иначе можно в определенных случаях получить не корректные результаты.
    2) Пока кто-нибудь не пояснит необходимость именно в таких запросах мое мнение, что все варианты предложенные в этой теме неважные. РН ЗаказыПокупателей для чего вам?
  20. nbIpKuH_BaH9I
    Offline

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

    Регистрация:
    16 сен 2009
    Сообщения:
    6.984
    Симпатии:
    398
    Баллы:
    104
    Я запрос написал такой как автор просил. Правильность его данных мне без разницы. И да, Дмитрий, лучше используйте временные таблицы. 1) Читаемость запроса возрастает. 2) Под временную таблицу выделяется место в памяти, которое затем можно очистить в нужном месте, тем самым освободив память. 3) При умелом использовании данные из базы берутся единожды. Затем обращении идет к временной таблице. И много чего еще есть.
Похожие темы
  1. tunec
    Ответов:
    2
    Просмотров:
    970
  2. web.num
    Ответов:
    6
    Просмотров:
    498
Загрузка...

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