Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Использование ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ в языке запросов 1С

Зачастую даже опытные программисты допускают методическую ошибку при использовании конструкций ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ в языке запросов 1С 8. Рассмотрим подробнее, чем различаются эти конструкции и как их правильно использовать.

объединить таблиц в запросе 1с

Конструкции ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ в языке запросов 1С 8.3

Конструкция ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ объединяет два результата запроса в один. Т.е. результат выполнения двух запросов будет «слит» в один, общий.

Пример запроса для вывода всех документов поступлений и реализации:

ВЫБРАТЬ

РеализацияТоваровУслуг.Ссылка

ИЗ

Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

ПоступлениеТоваровУслуг.Ссылка

ИЗ

Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг

Запрос получит данные из двух таблиц и объединит их.

В чем же разница между ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ

Конструкция ОБЪЕДИНИТЬ сливает два результата и группирует повторяющие строки, в отличие от ОБЪЕДИНИТЬ ВСЕ, которая не группирует автоматически строки результата.

Настоятельно рекомендуется использовать ОБЪЕДИНИТЬ ВСЕ в запросах, где заведомо невозможно получения одинаковых строк. Это существенно повышает производительность – система не пытается группировать строки.

Читайте также — описание языка запросов 1С.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 17 на “Использование ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ в языке запросов 1С
  1. Ужас, разочаровывает что в 1С применены созвучные с SQL ключевые слова но их результат не предсказуем.

    Как следствие люди переходят на 1С пишут запросы. Вместо LEFT JOIN у них получается какой-то INNER JOIN.
    Да и сложно так писать запросы. «ОБЪЕДИНИТЬ ВСЕ» — что значит «все» даже не представляю. Теперь UNION называется сочетанием двух слов.

    И ещё весело что целое поколение «программистов» пишущих на 1С никогда не писали на других языках и даже не удивляются подобному странному поведению. Хотя новички вижу до некоторой поры верят что «ЛЕВОЕ СОЕДИНЕНИЕ» реально вернет либо NULL либо одну строку. Видимо приток этих программистов происходит из смежных языков где царит стандартизация.

    Ответить

    • Слово всё «ВСЕ» группирует результат запроса по совпадающим колонкам.

      Сколько людей — столько и мнений 🙂

      Язык запросов 1С — это не T-SQL и никто не говорит что оно одно и тоже.

      Не понял вашего замечания про ЛЕВОЕ СОЕДИНЕНИЕ и LEFT JOIN. Они ничем не отличаются в sql и 1С.

      Ответить

    • Все правильно человек говорит.

      Ответить

    • — «ОБЪЕДИНИТЬ ВСЕ» — что значит «все» даже не представляю.

      UNION ALL

      Ответить

    • Про «Левое соединение» вы написали какой-то бред. Я, конечно, в 1С8 пока ещё новичок и до этого работал с SQL, но пока ещё ни разу при использовании (Левого/Правого) Соединения не получал неожиданного для меня результата. Может дело в том, что вы просто не представляете, что творится в ваших таблицах?

      Ответить

    • а ты поменьше разочаровывайся и займись полезными делами…

      Ответить

    • Жутко навязывать свою логику создателям языка программирования

      Ответить

    • Зачем вы пишите эти глупости.

      Ответить

    • Left Join в скуле работает точно так же, как в 1С.

      В скуле есть аналог ОБЪЕДИНИТЬ ВСЕ — это UNION ALL. Если вы не представляете, что значит «все», то вы не разбираетесь ни в языке запросов 1С, ни в SQL.

      Ответить

    • Alexander !!
      Поздравляю Вас!
      Ваша критика языка 1С — бессодержательна и, как следствие, не конструктивна и являет собой пример отъявленного (но не самопроявленного) снобизма и неуместного высокомерия.

      Ответить

  2. Автор первого комментария

    Ответить

  3. Язык запросов 1С — очень похож на t-sql.
    Left join в t-sql имеет такую же конструкцию и в 1C и называется Левое Соединение, более того, можно его и по английски написать Left join и 1С вас поймет…
    Слово всё «ВСЕ» НЕ группирует результат запроса по совпадающим строкам. А вот ОБЪЕДИНИТЬ — группирует, к тому же и способствует притормаживанию системы, при больших массивах данных.

    Ответить

  4. Левое соединение может задвоить строки результата, если задвоены строки соединяемой таблицы. Вот о чём шла речь выше.

    Ответить

  5. присоединяемой

    Ответить

    • Более того, если по полям соединения есть две и более строк в одной строке, то задвоит, затроит и т.д. записи в итоговой таблицу не только левое соединение, но и внутреннее, и правое, и полное соединение, плотому что это логика реляционных баз данных.

      Ответить

  6. Если бы в среде программирования была возможность заменить любое название ключевого слова на любое другое, все проблемы бы решились. Например, вместо «ОБЪЕДИНИТЬ ВСЕ» Вы бы указали среде «ОБЪЕДИНИТЬ». А вместо «ОБЪЕДИНИТЬ», указали «ОБЪЕДИНИТЬ И СГРУППИРОВАТЬ». Но с возможностью по нажатию одной кнопки привести текст к стандартному виду (и обратно), чтобы Ваш коллега мог прочитать модуль в привычном для него виде. А Вы читаете как Вам удобно. Причем этот принцип можно использовать для любых языков программирования. Как-то так. Ну теперь можно набрасываться на идею кто очень хочет покритиковать. Это же здорово подрывает «великий» англосаксонский принцип доминирования и принуждения всех и везде писать только на англоязычных языках программирования.

    Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.