Как вывести в СКД две независимые таблицы, объединенные одним полем

06.06.19

Разработка - Работа с интерфейсом

Надо вывести в отчет на СКД 2 таблицы, которые содержат различные данные, объединяемые одним полем. Количество строк в каждой таблице может быть произвольным. Если выводить с помощью обычного соединения таблиц, то мы получим перемножение строк. Чтобы его избежать обычно используются циклы. Но в данной статье мы разберемся как это сделать только средствами СКД.

Скачать файлы

Наименование Файл Версия Размер
Как вывести в СКД две независимые таблицы, объединенных одним полем: пример отчета из статьи
.erf 5,63Kb
1
.erf 5,63Kb 1 Скачать

 

Разбираться будем на упрощенном примере. Исходные таблицы и нужный результат на рисунке

Для начала создадим в СКД 3 таблицы:

1) Контрагенты+Номер. В этой таблице будет дополнительная колонка "Номер", по которой будет в дальнейшем объединение всех таблиц. В моем примере я создам эту таблицу вручную, в реальной жизни можно использовать создание нумерации запросом, с нужной глубиной.

2) Контрагенты+Договоры. Здесь и в следующей таблице нумерация также сделана упрощенно. В реальных запросах нумерацию справочников можно выполнить во временной таблице. Например, как описано в этой статье Нумерация строк в запросе.

3) Контрагенты+Адреса

 

Текст запроса

 

 

ВЫБРАТЬ
    "Контрагент 1" КАК Контрагент,
    1 КАК Номер
ПОМЕСТИТЬ КонтрагентыНомера

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

ВЫБРАТЬ
    "Контрагент 1",
    2

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

ВЫБРАТЬ
    "Контрагент 1",
    3

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

ВЫБРАТЬ
    "Контрагент 1",
    4

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

ВЫБРАТЬ
    "Контрагент 1",
    5

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

ВЫБРАТЬ
    "Контрагент 2",
    1

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

ВЫБРАТЬ
    "Контрагент 2",
    2

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

ВЫБРАТЬ
    "Контрагент 2",
    3

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

ВЫБРАТЬ
    "Контрагент 2",
    4

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

ВЫБРАТЬ
    "Контрагент 2",
    5
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Контрагент 1" КАК Контрагент,
    1 КАК Номер,
    "Договор 1" КАК Договор
ПОМЕСТИТЬ КонтрагентыДоговоры

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

ВЫБРАТЬ
    "Контрагент 1",
    2,
    "Договор 2"

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

ВЫБРАТЬ
    "Контрагент 2",
    1,
    "Договор 1"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    "Контрагент 1" КАК Контрагент,
    1 КАК Номер,
    "Адрес 1" КАК Адрес
ПОМЕСТИТЬ КонтрагентыАдреса

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

ВЫБРАТЬ
    "Контрагент 1",
    2,
    "Адрес 2"

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

ВЫБРАТЬ
    "Контрагент 1",
    3,
    "Адрес 3"
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КонтрагентыНомера.Контрагент КАК Контрагент,
    КонтрагентыДоговоры.Договор КАК Договор,
    КонтрагентыАдреса.Адрес КАК Адрес
ИЗ
    КонтрагентыНомера КАК КонтрагентыНомера
        ЛЕВОЕ СОЕДИНЕНИЕ КонтрагентыДоговоры КАК КонтрагентыДоговоры
        ПО КонтрагентыНомера.Контрагент = КонтрагентыДоговоры.Контрагент
            И КонтрагентыНомера.Номер = КонтрагентыДоговоры.Номер
        ЛЕВОЕ СОЕДИНЕНИЕ КонтрагентыАдреса КАК КонтрагентыАдреса
        ПО КонтрагентыНомера.Контрагент = КонтрагентыАдреса.Контрагент
            И КонтрагентыНомера.Номер = КонтрагентыАдреса.Номер
ГДЕ
    (НЕ КонтрагентыДоговоры.Договор ЕСТЬ NULL
            ИЛИ НЕ КонтрагентыАдреса.Адрес ЕСТЬ NULL)

 

 

Настраиваем схему вывода с помощью детальных записей. В вашем запросе это могут быть любые нужные группировки.

 

И получаем результат

 

Вложил пример отчета с описанной выше схемой СКД.

Система компоновки данных СКД

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61698    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54313    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16623    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10563    745    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    9484    150    acces969    31    

115

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3577    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12010    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. qwinter 671 06.06.19 11:54 Сейчас в теме
Использование функции Массив() было бы логичней для такого случая. И наглядней.
3. swimdog 762 06.06.19 12:36 Сейчас в теме
(1) Так полей может быть много, это у меня в примере по 1 полю. Все через массив выводить?
5. qwinter 671 06.06.19 12:43 Сейчас в теме
(3) а какая разница сколько полей?) Добавить в ресурс и написать Массив(Различные Договор) даже для 30 полей быстрее написания такого запроса)))
8. swimdog 762 06.06.19 12:54 Сейчас в теме
(5) Можете прислать пример этого отчета на СКД на моих данных из статьи? Например, в личку скинуть. Я не очень понимаю, как это должно выглядеть в схеме.
9. qwinter 671 06.06.19 13:00 Сейчас в теме
11. swimdog 762 06.06.19 15:29 Сейчас в теме
(9) Вариант хороший, но есть одна тонкость. Поля в разных колонках могут не совпасть, если есть пустые значения. Например, есть
договор 1, 100 руб.
договор 2, 0 руб.
договор 3, 150 руб.

Если выводить через массив или ТЗ, то СКД выведет примерно так:
Договоры | Суммы
договор 1 | 100 руб.
договор 2 | 150 руб.
договор 3 |

Поэтому я и написал, что когда полей много, то с выводом приходится заморачиваться. Либо я чего-то не знаю))
12. qwinter 671 06.06.19 16:28 Сейчас в теме
(11) Это все решаемые частности)) К тому же прямо противоречат названию темы, все таки это связанные поля))

Прилепил скд с двумя полями.
Прикрепленные файлы:
ТестСвязи УФ.erf
13. swimdog 762 06.06.19 16:43 Сейчас в теме
(12) Это не противоречит теме. В рамках каждой таблицы это связанные данные. Но между двумя таблицами связь по 1-2 полям.
10. qwinter 671 06.06.19 14:52 Сейчас в теме
(8) И чуть более замороченный вариант для управляемых форм с вычисляемыми полями.
Прикрепленные файлы:
ТестСвязи УФ.erf
2. pic-0 24 06.06.19 12:31 Сейчас в теме
Поучительно, спасибо.
4. dhurricane 06.06.19 12:41 Сейчас в теме
Прошу прощения, но на мой взгляд заголовок и описание статьи не соответствуют ее содержанию. По сути вся соль решения заключается в правильной подготовке данных запросом, СКД здесь никоим образом не участвует, а используется лишь для вывода данных. Тот же прием применим как для обычной консоли запросов, таки и для формирования печатной формы - меняется лишь способ вывода результата запроса.

Кажется, что стоило больше заострить внимание на нумерации данных в запросе и привести более "жизненный" пример, а не нумеровать записи "вручную".
6. swimdog 762 06.06.19 12:45 Сейчас в теме
(4) Нумерация хорошо описана в других статьях. В том числе в приведенной по ссылке. Смысл разжевывать то, что уже разжевано?
А пример позволяет, не углубляясь в детали, понять суть.
Да, СКД имеет опосредованное отношение, если смотреть со стороны запроса. А если смотреть со стороны задачи (нужно сделать отчет на СКД), то отношение к СКД будет прямое. Заголовок сделан так, чтобы люди, которым надо нарисовать такой отчет, смогли найти эту статью.
7. dhurricane 06.06.19 12:52 Сейчас в теме
(6) Что ж, идея, лежащая в основе статьи, теперь мне понятно лучше, спасибо. Не считаю в таком случае, что она "тянет" на целую статью, но тут Вы в праве со мной не согласиться.
Оставьте свое сообщение