Об'єднання таблиць запиту 1с, все про програмування на 1с підприємство

Об'єднання таблиць запиту 1с, все про програмування на 1с підприємство
Функціональні особливості конструкцій для мови запитів в 1С

Результатом виконання об'єднання запитів буде злиття двох результатів разом. Тобто дані будуть отримані за обома запитам, але з'єднані в одне. Наприклад, за такими даними

Об'єднання таблиць запиту 1с, все про програмування на 1с підприємство

необхідно обчислити загальний борг по кожному контрагенту. Очевидно, що для цього необхідно скласти по кожному контрагенту витрата, що відповідає відвантаженні товару в сумовому вираженні і відняти прихід, тобто реально надійшла оплату за продукцію. Щоб отримати коректний результат, потрібно застосувати конструкцію мови запитів «ОБ'ЄДНАТИ ВСІ». Як це буде виглядати на практиці:

Об'єднання таблиць запиту 1с, все про програмування на 1с підприємство

Таким чином, ми розрахуємо надходження та витрачання за кожним покупцем, але наша мета отримати суму неоплаченого боргу, для цього потрібен наступний запит:

Об'єднання таблиць запиту 1с, все про програмування на 1с підприємство

Об'єднання таблиць запиту 1с, все про програмування на 1с підприємство

Тепер результатом запиту будуть наступні дані:

Складнощі при об'єднанні запитів

Якщо завдання - об'єднати два запити, то при цьому у них повинно збігатися кількість за показником «Поле». Наприклад, якщо в таблиці Витрата є інформація про знижку, яка не передбачена в таблиці даних Прихід, то це поле в дані таблиці Прихід необхідно додати в формі констант. Надалі знижку потрібно буде відняти, а результати обчислень згрупувати. Не варто нехтувати порядком розташування полів, тому що об'єднання інформації відбувається саме в тій порядкової черговості, в якій поля вказані для секцій ВИБРАТИ в кожному із запитів.

Відмінності в конструкціях

Неправильне застосування конструкцій «ОБ'ЄДНАТИ» і «ОБ'ЄДНАТИ ВСІ» мови запитів призводить до негативних наслідків. Наприклад, якщо виконати запит в наступному вигляді:

Об'єднання таблиць запиту 1с, все про програмування на 1с підприємство

то в отриманій таблиці буде дві однакові рядки. Для даного випадку необхідно ОБ'ЄДНАТИ замінити на - ОБ'ЄДНАТИ ВСІ. У чому ж головна відмінність цих двох конструкцій і чому іноді потрібно ставити «ОБ'ЄДНАТИ», а в інших випадках тільки «ОБ'ЄДНАТИ ВСІ».

Конструкція «ОБ'ЄДНАТИ ВСІ» не виконує угруповання по рядках отриманого результату. Конструкція «ОБ'ЄДНАТИ» виробляє злиття двох результатів і при цьому виконує угруповання повторюваних рядків. У тому випадку, коли заздалегідь відомо, що отримати однакові рядки неможливо, ефективніше використання конструкції «ОБ'ЄДНАТИ ВСІ». Це покращує швидкодію, тому що не доводиться перевіряти результати на ідентичність для їх подальшої угруповання.

Варто розуміти, що операція об'єднання і операція з'єднання абсолютно різні. Для з'єднання потрібно ключ, в той час як для об'єднання наявність або відсутність ключа ролі не грає. Довільний показник за кількістю полів при виконанні запиту з'єднання припустимо, а ось при конструкції об'єднання не тільки має збігтися кількість полів, але і їх послідовність. Тобто сам процес виконання конструкції об'єднання має на увазі роботу по 2-м запитам, а вже результат роботи об'єднується в єдиний формат.