Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Соединение в запросах в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Цитата из справки 1С:
"По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные РАЗНЫМИ запросами, заменяются одной. Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое слово ВСЕ."
Конструкция ОБЪЕДИНИТЬ и ОБЪЕДИНИТЬ ВСЕ объединяет два результата запроса в один.
Пример запроса для вывода всех документов Приход и Расход:
Код 1C v 8.х
Конструкция ОБЪЕДИНИТЬ — соединяет два результата и группирует повторяющие строки,
А конструкция ОБЪЕДИНИТЬ ВСЕ — НЕ группирует автоматически строки результата.
Подробнее:
Порядок следования определяется порядком в списке полей в предложении ВЫБРАТЬ.
Количество полей можно изменить добавлением пустого фиктивного поля:
Код 1C v 8.х
До некоторой степени, операции объединения и соединения прямо противоположны: при соединении у источников обязательно должен быть ключ (при объединении наличие ключа абсолютно не имеет значения), при соединении количество полей может быть произвольным (при объединении количество нолей должно совпадать и поля должны следовать в одном и то же порядке), при соединении природа данных в источниках может быть различна (при объединении связываются однотипные данные).
Смысл механизма
При объединении, фактически, выполняются два запроса, а потом их результаты объединяются в один общий. Конструкция ОБЪЕДИНИТЬ ВСЕ оставит в итоговом запросе только неповторяющиеся записи (то есть, результат её действия аналогичен использованию фразы РАЗЛИЧНЫЕ после выполнения объединения).
Назначение псевдонимов, упорядочивание и расчёт итогов выполняются после объединения и действуют на результирующую таблицу.
Нужно сделать строку из полей: поле1+поле2+поле3. Но тип значений в полях не везде "строка"
Рассмотрим все варианты как соединить строку с другими типами:
1 вариант нужно просто преобразовать число в строку в запросе
используйте Представление(Ваше_числовое_поле) — только это все равно не строка т.к. со строкой не сможете далее объединить.
Плохо то, что все равно дальше объединить со строкой не получится. Всегда будет ошибка.
Почитав немного темы с теми же проблемами не увидел ничего внятного кроме извращений.
И реализовал так:
В запросе вообще не трогаем поля. Для объединения используем раздел вычисляемые поля. Все становится очень просто и понятно.
Вот и все решение. Просто форматируем исходный тип данных в строку, можно даже использовать "Формат" чтобы сделать нужный вид(например убрать разделители как в примере).