8.х Левое соединение с выбором условия связи

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем X-Man, 27 июл 2016.

  1. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    439
    Симпатии:
    3
    Баллы:
    29
    Всем здравствуйте. Помогите с запросом. В рамках решения глобальной задачи выравнивания регистров в УТ возникла следующая подзадача. Есть 2 таблицы. Первая: Склад, Номенклатура, Показатель1, Показатель2, ...ПоказательN Вторая: Склад, Номенклатура, Показатель1, Показатель2
    ...ПоказательК

    Нужно к первой таблице левым соединением добавить записи из второй, но таким образом, чтобы те записи, по которым есть полное соответствие(И по Складу И по номенклатуре) присоединились по Складу и номенклатуре, А остальные-ТОЛЬКО по номенклатуре. Как это сделать запросом?

    Если я пропишу это в операторе в секции
    ГДЕ
    ВЫБОР КОГДА
    Таблица1.Склад = Таблица2.Склад И Таблица1.Номенклатура = Таблица2.Номенклатура ТОГДА
    Таблица1.Склад = Таблица2.Склад И Таблица1.Номенклатура = Таблица2.Номенклатура
    ИНАЧЕ Таблица1.Номенклатура = Таблица2.Номенклатура
    КОНЕЦ

    в этом случае записи, удовлетворяющие условию Таблица1.Склад = Таблица2.Склад И Таблица1.Номенклатура = Таблица2 .Номенклатура2 не присоединятся ли повторно по условию
    Таблица1.Номенклатура = Таблица2 .Номенклатура2?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Проще сделать так:

    Выбрать все по соединению Таблица1.Склад = Таблица2.Склад И Таблица1.Номенклатура = Таблица2.Номенклатура во ВременнуюТаблицу1.

    Выбрать все, что не входит во ВременнуюТаблицу1, поместить во ВременнуюТаблицу2.

    Сделать объединение ВременныхТаблиц.
    Последнее редактирование: 27 июл 2016
  3. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    439
    Симпатии:
    3
    Баллы:
    29
    Спасибо, что откликнулись. У меня была такая мысль, но лень-матушка поборола:) А все-таки выбор не отработает так, как мне нужно, как думаете?
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Чтобы отработал выбор необходимо выполнить соединение, посмотреть результат и по результату сделать соединение еще раз или нет :)
  5. Yuriy_Alexandrovich
    Offline

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

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Доброго,
    можно в секции "по" левого соединения написать :
    Код:
    ПО ВЫБОР
               КОГДА Таблица1.Склад = Таблица2.Склад
                        И Таблица1.Номенклатура = Таблица2.Номенклатура
               ТОГДА ИСТИНА
               ИНАЧЕ Таблица1.Номенклатура = Таблица2.Номенклатура
           КОНЕЦ
    
  6. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    439
    Симпатии:
    3
    Баллы:
    29
    Как-то сложновато:) Пойду играться с ВТ
    --- Объединение сообщений, 27 июл 2016 ---
    Может уже прямо в лоб спрошу тогда: у кого-нибудь есть эффективный (с точки зрения производительности) и правильный (с точки зрения методологии учета в УТ 11.2) алгоритм выравнивания регистра ПартииТоваровОрганизаций под остатки регистра ТоварыОрганизаций? Вторую неделю бьюсь, есть рабочие варианты, но всё утыкается в огромный объем данных и ограниченность во времени:(((
    Последнее редактирование: 27 июл 2016

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