Меню Закрыть

1С скд объединить все

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

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

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

Получите 267 видеоуроков по 1С бесплатно:

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

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

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

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

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

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

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

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

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

Цитата из справки 1С:
"По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные РАЗНЫМИ запросами, заменяются одной. Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое слово ВСЕ."

Конструкция ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ объединяет два результата запроса в один.
Пример запроса для вывода всех документов Приход и Расход:
Код 1C v 8.х

Читайте также:  Почему нет в продаже эппл вотч 4

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

Подробнее:
Порядок следования определяется порядком в списке полей в предложении ВЫБРАТЬ.
Количество полей можно изменить добавлением пустого фиктивного поля:
Код 1C v 8.х

До некоторой степени, операции объединения и соединения прямо противоположны: при соединении у источников обязательно должен быть ключ (при объединении наличие ключа абсолютно не имеет значения), при соединении количество полей может быть произвольным (при объединении количество нолей должно совпадать и поля должны следовать в одном и то же порядке), при соединении природа данных в источниках может быть различна (при объединении связываются однотипные данные).

Смысл механизма
При объединении, фактически, выполняются два запроса, а потом их результаты объединяются в один общий. Конструкция ОБЪЕДИНИТЬ ВСЕ оставит в итоговом запросе только неповторяющиеся записи (то есть, результат её действия аналогичен использованию фразы РАЗЛИЧНЫЕ после выполнения объединения).

Назначение псевдонимов, упорядочивание и расчёт итогов выполняются после объединения и действуют на результирующую таблицу.

рубрики: СКД | Дата: 7 Апрель, 2017

Использование системы компоновки данных 1С невозможно без наборов данных. В одной схеме компоновки данных их может быть несколько. И они могут связываться между собой определенным образом. А точнее либо соединяться, либо объединяться. В этой статье рассмотрим объединение наборов данных. Объединение наборов данных в СКД подобно объединению таблиц в языке запросов.

Чтобы объединить два или более набора данных в СКД, необходимо на закладке Наборы данных предварительно создать специальный набор данных — объединение

Получаем вот такую картину

И уже в этот созданный объект добавляем наборы, которые будут непосредственно объединяться. Давайте добавим два набора данных. Один из которых будет запрос, а второй для разнообразия — объект (внешний источник данных). Вот так:

Читайте также:  Что лучше htc vive или oculus rift

В качестве примера рассмотрим объединение наборов данных с остатками товаров.

В том наборе, где будем использовать внешний источник данных, вручную добавляем поля Товар, Количество и прописываем имя объекта, содержащего данные

Для набора данных где используется запрос будем получать данные с использованием виртуальной таблицы остатков вот из такого регистра накопления:

Делаем простейший запрос

Чтобы избавиться от складов, пришлось задействовать в запросе компоновку данных (все, что в фигурных скобках) и отключить внизу флаг автозаполнения. Также в качестве товара был взят не элемент справочника, а его представление, чтобы тип был такой же как и в наборе с внешним источником данных. Чтобы данные из разных наборов попали в одно поле у них должно быть одинаковое наименование в поле Путь. Поэтому для поля Остатки путь был вручную исправлен на Количество, чтобы синхронизировать его со вторым набором данных. На самом деле лучше конечно же использовать нужный псевдоним сразу в запросе. В данном случае умышленно не стал это делать, чтобы заострить внимание на такой особенности.

Теперь обратимся непосредственно к данным
В регистре накопления у меня хранятся следующие остатки товаров

Товар Количество
Карандаш 47
Лампа 15
Ручка 10

а во внешнем источнике данных вот такая картина

Товар Количество
Скотч 5
Лампа 1
Кисточка 15

Выполним настройку схемы компоновки самым примитивным образом.
Поле Количество естественно сделаем ресурсом, а на закладке настройки в структуру просто добавим Детальные записи. Ну и конечно не забудем поместить Товар и Количество в выбранные поля. И для полного счастья сделаем упорядочивание по товару.

В результате выполнения отчета с такими настройками СКД получаем вот такую таблицу

Товар Количество
Карандаш 47
Кисточка 15
Лампа 15
Лампа 1
Ручка 10
Скотч 5
Читайте также:  Репост в контакте как сделать с телефона

Как видим, Лампа, которая есть в обоих наборах данных, представлена в результате запроса двумя строчками. Чтобы свернуть их в одну строку необходимо немного видоизменить структуру в настройках СКД и вместо детальных записей сделать группировку по полю Товар.

И теперь получаем результат без задвоенных строк.

Рекомендуем к прочтению

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

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