Добрый день, коллеги! Просьба подсказать как сделать на СКД отчет по контрагентам и банковским счетам, так чтобы контрагенты располагались построчно, а счета были от 1 до 10 (или сколько счетов у контрагента) в колонках.
Запрос по счетам контрагентов ниже, применим практически к любой типовой конфигурации.

```1c
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    БанковскиеСчетаКонтрагентов.НомерСчета КАК НомерСчета
    ИЗ
    Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    ПО БанковскиеСчетаКонтрагентов.Владелец = Контрагенты.Ссылка

    СГРУППИРОВАТЬ ПО
    Контрагенты.Ссылка,
    БанковскиеСчетаКонтрагентов.НомерСчета
```
---
вот пример такого отчета, попробуйте сразу у вас должен сработать
там правда ограничений добавлено,
потом посмотрите, поправите
---
Вот здесь показано как это делается: https://youtu.be/Xj5MXyq_o3M
---
Один из простых вариантов, как получить порядковый номер в запросе:

```1c
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    БанковскиеСчета.Ссылка КАК БанковскийСчет,
    КОЛИЧЕСТВО(БанковскиеСчетаПредыдущие.Ссылка) + 1 КАК ПорядковыйНомерСчета
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчета
    ПО Контрагенты.Ссылка = БанковскиеСчета.Владелец
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчета КАК БанковскиеСчетаПредыдущие
    ПО Контрагенты.Ссылка = БанковскиеСчетаПредыдущие.Владелец
    И БанковскиеСчета.Ссылка > БанковскиеСчетаПредыдущие.Ссылка

    СГРУППИРОВАТЬ ПО
    Контрагенты.Ссылка,
    БанковскиеСчета.Ссылка
```

Ну и настройки в СКД.
---
А результат данного решения есть? Просьба прикрепить картинку.
---
Пожалуйста. Здесь еще отключены общие итоги.
---
если у 10 контрагентов будет по 10 счетов, то колонок должно быть 100?!
---
(2)Можно сделать индексацию полей счетов

```1c
    ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    ЕСТЬNULL(БанковскиеСчетаКонтрагентов1.НомерСчета, ") КАК НомерСчета1
    ЕСТЬNULL(БанковскиеСчетаКонтрагентов2.НомерСчета, ") КАК НомерСчета2
    ИЗ
    Справочник.Контрагенты КАК Контрагенты
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов1
    ПО БанковскиеСчетаКонтрагентов1.Владелец = Контрагенты.Ссылка
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов2
    ПО БанковскиеСчетаКонтрагентов2.Владелец = Контрагенты.Ссылка
```
---
и будет 10 счетов в каждой колонке. Нужно добавлять проверку уникальности в соединениях, чтоб счет из БанковскиеСчетаКонтрагентов1 не был в счете БанковскиеСчетаКонтрагентов2
---
Я же не сказал, что это готовый код. Это принципиальный подход. Да нужно будет исключать в каждом следующем поле уже использованное значение.
---
Должно быть количество колонок не более 10 и в зависимости от наличия счетов у контрагента счет должен вставать в колонку нужную колонку от 1 до 10.
---
лучше уж сделать одну колонку "номер счета", в которой через запятую перечислить номера счетов. Добавить вычисляемое поле с ВычислитьВыражениеСГруппировкойВМассив
---
Постановку задачи менять нельзя.
---
Не понял. А в чем проблема? Добавляете в настройках СКД таблицу, контрагента пихаете в группировки строк, счета - в группировки колонок. Если нужен нестандартный порядок счетов, то в настройках полей есть "Выражение упорядочивания" для этого.
Дошло. У каждого контрагента свои счета :)
---
А на пересечении что? :-)
---
Скорее всего автору нужно просто пронумеровать колонки от 1 до N. А в ячейках таблицы уже отображать номера счетов.
---
Да, где N-максимальное число счетов у контрагента из выборки.
---
еще как вариант
в запросе, пронумеруйте договора в разрезе контрагентов
в варианте отчета СКД
добавьте таблицу
строки - Контрагенты
колонки - номер ПП из запроса
а в деталях сам Договор
---
Нужен наглядный пример решения, как (12). Перед тем как написать на форум, я сам, разумеется, искал решение в СКД.
---
Если порядок счетов неважен, то можно так:

```1c
    ВЫБРАТЬ
    "Вася" КАК Контрагент,
    "Вася 36356356" КАК Счет,
    100 КАК Сумма
    ПОМЕСТИТЬ ОстаткиНаСчетах

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

    ВЫБРАТЬ
    "Вася",
    "Вася 65432334",
    10

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

    ВЫБРАТЬ
    "Вася",
    "Вася 435546765",
    70

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

    ВЫБРАТЬ
    "Петя",
    "Петя 24535245",
    1
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    О1.Контрагент,
    О1.Счет,
    КОЛИЧЕСТВО(*) КАК ПорядковыйНомерСчета
    ПОМЕСТИТЬ ПорядковыеНомераСчетов
    ИЗ
    ОстаткиНаСчетах КАК О1
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиНаСчетах КАК О2
    ПО О1.Контрагент = О2.Контрагент
    И О1.Счет <= О2.Счет

    СГРУППИРОВАТЬ ПО
    О1.Контрагент,
    О1.Счет
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ОстаткиНаСчетах.Контрагент,
    ПорядковыеНомераСчетов.ПорядковыйНомерСчета,
    ОстаткиНаСчетах.Счет,
    ОстаткиНаСчетах.Сумма
    ИЗ
    ОстаткиНаСчетах КАК ОстаткиНаСчетах
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПорядковыеНомераСчетов КАК ПорядковыеНомераСчетов
    ПО ОстаткиНаСчетах.Контрагент = ПорядковыеНомераСчетов.Контрагент
    И ОстаткиНаСчетах.Счет = ПорядковыеНомераСчетов.Счет
```

В настройках таблицы Контрагента - в группировки строк, ПорядковыйНомерСчета - в группировки колонок, Сумму и счет - в ресурсы (максимум по счету).
Если порядок счетов важен, то либо ищем к чему привязаться либо задача превращается в другую не менее неудобную задачу "получить порядковый номер строки в запросе".
ЗЫ. Если нумерация элементов счетов идет в пределах подчинения, то можно завязаться на нее и выводить счета контрагентов в том порядке, в котором они создавались для контрагентов. Тогда добавится еще один подзапрос/временная таблица.
---
вот пример такого отчета, попробуйте сразу у вас должен сработать
там правда ограничений добавлено,
потом посмотрите, поправите
---
Вот здесь показано как это делается: https://youtu.be/Xj5MXyq_o3M
---
и (14) Дали верные решения. Вознаграждение будет поделено. Спасибо всем за участие.
---
Жертвую свою долю автору из (13) :-)
---
Отправляем все ему. А Вам, как старшему товарищу, отдельное спасибо за ликбез.
---
Если хотите пройти курс по основам СКД, который я проведу - пишите мне https://t.me/akrynetsky