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

Трюки и уловки при работе с отчетами на базе СКД (часть 1)
Дабы избежать комментариев типа «тоже мне открытие!», оговорюсь сразу: статья рассчитана на неискушённых СКД-разработчиков, тем кто это и так знает не обязательно высказывать своё «фи!», поймите, то что очевидно для вас — не всегда бывает очевидно остальным.
Пример.
В качестве примера я не стал изобретать велосипед, а взял самую обычную оборотно-сальдовую ведомость по счету 60 из демо-версии 1С:Бухгалтерии (я использую ред. 2.0.). Кто не знает, начиная с редакции 2.0 этот отчёт сделан на базе СКД.
Итак, зададим прямо в ней отбор для строк с условием «БУ Дт (оборот)» Равно «БУ Кт (оборот)», а также применим к отчёту условное оформление, подсветив жёлтым цветом ячейки строк, где «БУ Кт (кон. сальдо)» Больше «БУ Кт (оборот)». Если кто не знает, как включить панель «Оформление» — найдите кнопку «Параметры панели настроек» справа от надписи «Панель настроек».
Конечный результат должен получиться примерно таким:
Система компоновки данных (СКД). Часть 2. | — все для начинающих и опытных программистов 1С
Трюк №2. Отбор на группировках.
Пример.
Цель примера: отобразить ОСВ, в которой для взаиморасчетных счетов (60,62,76) показать расшифровку по контрагентам, а для затратных (20,23,25,26) — по статьям затрат.
Сама СКД реализована в виде набора данных, где используется запрос к виртуальной таблице остатков и оборотов регистра бухгалтерии «Хозрасчетный».
Размещаем вложенные группировки «Организация» и «Счет». В группировке «Счет» параллельно размещаем 2 группировки «Субконто1» и «Субконто2», для которых задаем соответствующие отборы.
Иллюстрацию настройки привожу в скриншоте:
Если в основных настройках отчёта на закладке «Другие настройки» вы не отключали вывод отборов, то это обязательно нужно будет сделать в «других настройках» наших группировок «Субконто1» и «Субконто2»
В сегодняшней статье хотел бы рассказать о том, как использовать инструмент СКД для выборки данных из разных источников и выводе результата в таблицу значений.

Комментарии
Спасибо огромное за статью и прикреплённый пример. Очень помогло в работе.
Спасибо — просто спасли. Только у меня Период не видит в модуле
положила все в модуль Объекта(база ЗиК 3), в СКД в Параметры добавила «Период» =стандартный период,НачалоПериода=&Период.ДатаНачала ; КонецПериода.. Не видит здесь Период и все..
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) экспорт
СтандартнаяОбработка = Ложь;
//ДанныеПечати = ПолучитьИзВременногоХранилища(Адр);
Запрос = Новый Запрос;
Запрос.Текст ;
Промокоды на Лайм Займ на скидки
//Запрос.УстановитьПараметр(«НачалоПериода», Период.ДатаНачала);
//Запрос.УстановитьПараметр(«КонецПериода», Период.ДатаОкончания);
НачалоПериода=Дата(«01.11.2016 00:00:00»); ;
Запрос.УстановитьПараметр(«НачалоПериода», НачалоПериода);
Запрос.УстановитьПараметр(«КонецПериода», КонецПериода);
Запрос.УстановитьПараметр(«СовмПроф», «Доплата за совм. проф. (4)»);
//Если СовмещСотрудник.Пустой() тогда
// //Сообщить(«В ЭТОЙ ГРУППЕ НЕТ КОНТРАГЕНТОВ » );
//конецесли;
Запрос = Новый Запрос;
Запрос.Текст ;
ффф= Перечисления.ГруппыНачисленияУдержанияВыплаты.Начислено ;
//Запрос.УстановитьПараметр(«НачалоПериода», Период.ДатаНачала);
//Запрос.УстановитьПараметр(«КонецПериода», Период.ДатаОкончания);
Запрос.УстановитьПараметр(«НачалоПериода», НачалоПериода);
Запрос.УстановитьПараметр(«КонецПериода»,КонецПериода);
ПланВидовРЕЗ= РезультатПакета[6].Выгрузить();
ПланВидовРЕЗ.сортировать(«ПланВидовРасчетаНаименование»);
СотрРез = РезультатПакета[9].Выгрузить();
ДанныеПечати = РезультатПакета[10].Выгрузить(); //окончательный итог Сотрудник
//начисл_Сотр_подр = РезультатПакета[9].Выгрузить();
//начисл_Сотр_подр.сортировать(«Группа»);
//РезультатЗапроса.сортировать(«Группа,СпрОтрВБух_ВидДеятельности,ВидДеятельностиНАШ»);
ДанныеПечати.сортировать(«Сотрудник»);
ДанныеПечати.Колонки.Добавить(«ПодразделенияРодитель», Новый ОписаниеТипов(«строка»));
ДанныеПечати.Колонки.Добавить(«ВидДеятельностиНаш», Новый ОписаниеТипов(«строка»));
Если МассивНайденныеСтроки.Количество() > 0 Тогда
Для Каждого Ст Из МассивНайденныеСтроки Цикл
Стр.ВидДеятельностиНаш = Ст.СовмещСпособОтражения;
Если Ст.СовмещПодразделениеКуда = NULL Тогда
Счет =»»;
СубСчет =»»;
ПодразделениеСпрОтр =»»;
ВидДеятельностиСпрОтр =»»;
резЗапр = 0;
//Из схемы возьмем настройки по умолчанию
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
//Помещаем в переменную данные о расшифровке данных
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

//Формируем макет, с помощью компоновщика макета
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
//Передаем в макет компоновки схему, настройки и данные расшифровки
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
PROИТ: 1С 8.3 Как из СКД открыть другой СКД или обработку по щелчку на какой-либо ячейке в отчете
Работа с внешними наборами данных в СКД
Для использования в отчёте на СКД произвольной таблицы значений необходимо настроить соответствующим образом схему компоновки данных и прописать программный вывод отчёта.
1.2. На закладке «Наборы данных» добавляем набор данных — объект.
1.3. Добавляем необходимые поля набора данных (достаточно указать Поле) и указываем Имя объекта, содержащего данные.
1.4. Если в СКД есть другие наборы данных (например, Запрос), то создаём связи наборов данных на закладке «Связи наборов данных».
2.1. В модуле объекта отчёта создаём процедуру-обработчик ПриКомпоновкеРезультата.
2.2. В процедуре ПриКомпоновкеРезультата отключаем стандартную обработку.
2.3. Формируем таблицу значений произвольным образом. Имена колонок таблицы значений должны совпадать с полями набора данных в СКД (п.1.3).
2.6. Помещаем данные о расшифровке в соответствующую переменную.
2.8. Передаём в макет компоновки схему, настройки и данные расшифровки.
2.9. Выполняем компоновку с помощью процессора компоновки. Для этого выполняем метод процессора компоновки данных Инициализировать(). В качестве параметров передаём макет компоновки данных, внешние наборы данных (тип: Структура, ключ структуры должен совпадать с именем объекта в схеме компоновки данных (п.1.3), значение — сформированная таблица значений), данные расшифровки.
Помимо таблиц значений в качестве внешних наборов данных могут использоваться результаты запросов, табличные части.
Тип: Структура.
Ключ структуры соответствует имени внешнего набора данных. Значение структуры — внешнему набору данных.
Тип: ДанныеРасшифровкиКомпоновкиДанных.
Объект, в котором нужно заполнить данные расшифровки. Если не указан, то расшифровка заполняться не будет.
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь.
Выводим результат в табличный документ ПроцессорВывода Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.

Вызов отчета
Это (переопределение типовой процедуры Сформировать) необходимо сделать, т.к. при вызове типовой процедуры формирования отчета на СКД, система вызовет связанную СКД, которая в свою очередь попытается получить информацию в набор из базы данных, и выпадет в ошибку, ведь данные должны быть получены не из базы данных, а из объекта (таблицы значений). Именно так мы указали.
Итак, добавляем процедуру «Сформировать()» в форму обработки, в которой вызываем процедуру формирования исходной таблицы с данными и процедуру Печать(). В форму обработки добавляем кнопку, которая вызывает процедуру Сформировать().
Статья: Работа с внешними наборами данных в СКД | Новичок 1С
- Не каждый разработчик в совершенстве владеет всеми возможностями СКД, т.к. они на самом деле весьма обширны. В этом случае СКД выступает в виде «черного ящика», который у себя внутри делает неизвестно что.
- Существует ряд отчетов, которые не взять одним запросом. Порой требуется написать несколько (до нескольких десятков) запросов и обработать каждый из них по своей особенной схеме, прежде чем получить данные пригодные для отчета. При этом сами выходные формы отчетов достаточно просты. Этим «славятся» отчеты для управленческого персонала, который хочет видеть «все и сразу».
Настройка расшифровки
В листинге процедуры Печать() используется переменная формы отчета «ДанныеРасшифровкиОтчета». Именно в эту переменную компоновка выгрузит таблицу со всей необходимой информацией для расшифровки (именно так сказано в процедуре Печать()).
Не будем заострять внимание, как сделать так, чтобы элемент формы типа Табличный документ имел возможность расшифровки, только приведем листинг процедуры «ОбработкаРасшифровки» и некоторые пояснения к нему.
Итак, процедура «ОбработкаРасшифровки» будет иметь следующий вид:
В следующих нескольких строках определяем список возможных действий расшифровки. В приведенном листинге, пользователю будут доступны все возможные действия:
Микрофинансирование → Микрокредиты → Специальные предложения → Скачать файлы → Обзор Быстроденег → Предмет договора → Ответственность сторон → Отличные наличные→ Экспресс займы