Передача параметров в вложенную схему не составляет проблем. После того, как создали вложенную схему заходим в настройки и заполняем значения параметров из параметров данных владельца.
После этого в настройке варианта отчета добавляем вложенный отчет. Параметры заполняются автоматически настройками, выполненными на предыдущем шаге.
С помощью этого механизма можно настраивать контекстно-зависимые отчеты, если в значение параметра выбрать реквизит родительского отчета.
Можно сразу здесь настраивать значения параметров без предварительной настройки.
С передачей отбора сложнее и так не получиться. Я решил задачу с помощью процедуры ПриКомпоновкеРезультата()
Часто бывает, что при печати таблицы многострочная ячейка разбивается на 2 листа, если целиком не влезла. Особенно коряво получается, когда в одном из соседних столбцов 2 строки, а в другом одна объединенная строка, тогда лист оканчивается посередине объединенной ячейке и буквы рвутся по горизонтали.
Чтобы этого избежать в макете табличного документа в свойствах строки устанавливаем свойство "ВместеСоСледующим" В этом случае, если эта строка и следующая не влезают на 1 лист, то они обе переносятся на другой.
Независимо от того, какой запрос написан в наборе данных, СКД исключает из результирующего запроса поля, не участвующие в настройках отчета. Это может приводить к тому, что в результате суммы по оборотам могут быть либо больше, либо меньше реальных.
Например, делаем запрос по сумме проданной номенклатуры. В запросе указываем день, номенклатуру, сумму, покупателя, регистратор. Допустим у нас один и тот же покупатель купил 3 раза одну и туже номенклатуру в один и тот же день по одной и той же цене (100 руб.).
Регистратор1, Номенклатура, Покупатель, 100
Регистратор2, Номенклатура, Покупатель, 100
Регистратор3, Номенклатура, Покупатель, 100
Если в настройках отчета укажем все поля запроса то получим верные данные. Если укажем только номенклатуру, покупателя и сумму, то рискуем получить меньший оборот, если у нас не будет детальных записей. В этом случае СКД сгруппирует все данные и вместо 3 строк по 100 руб, у нас появится 1 строка по 100 руб. Так как все 3 покупки будут различаться только регистраторами, который мы не включили, то в результате данные сгруппируются до 1 строки: Номенклатура, Покупатель, 100
Чтобы такого не случилось (мало ли как будут настраивать отчет пользователи), надо поставить в Роли поля "Регистратор" галку "Обязательное"
В этом случае, какая бы не была настройка отчета, поле Регистратор всегда будет участвовать в запросе СКД
Для отображения нескольких строк (значений) в одной ячейке надо использовать агрегатный функции Массив([Различные] Выражение) и СоединитьСтроки (Значение, РазделительЭлементов, РазделителиКолонок).
Так же есть агрегатная функция ТаблицаЗначений([Различные] Выражение1 [КАК ИмяКолонки1][, Выражение2 [КАК ИмяКолонки2],...]), но при её использовании не получиться вывести таблицу внутри ячейки.
Если возможностей встроенных функций не достаточно, то можно написать свою функцию в общем модуле и использовать её, для формирования массива или многострочной строки.
Если требуется выводить только количество в итогах, а в детальных записях ничего не выводить, тогда в настройках выбираем ветку <Детальные записи>, на вкладке "Выбранные поля", разворачиваем <Авто> и убираем галку с того поля, которое не должно отображаться.
Если надо чтобы в группировке выходила не сумма всех записей, а только одно значение (например когда есть общий остаток по абоненту и остатки в разрезе услуг в 2 разных столбцах), то в выражении ресурса можно использовать формулу типа: Сумма(ВычислитьВыражениеСГруппировкойМассив("Максимум(ТекущийОстаток)", "Абонент"))
Если надо в СКД отбирать записи по значениям группировок, то это реализуется следующим образом:
1. Настройка в конфигураторе:
Открываем настройки варианта, выбираем группировку, по которой надо установить отбор, внизу переходим из настроек отчета в настройку группировки, переходим на вкладку Отбор и добавляем нужное условие
2. Если надо отобрать на клиенте в отчете, в котором такой отбор не предусмотрен, то нажимаем "Изменить вариант", Выбираем ветку с группировкой, переходим на вкладку «Отбор». Ставим там галку «Текущий уровень имеет собственный отбор» и добавляем в отбор нужное условие.