Добрый вечер, необходимо сделать отчет такого вида (на рисунке пример отчета).
Данные необходимо получать по регистру остатков.
Структура регистра такая:
Измерения; номенклатура, склад, организация, партия.
Ресурсы; кол-во, сумма.
Реквизиты; корСклад, корНоменклатура.
В отчете в полях приход и расход идет детализация по складам, с каких складов пришел товар и на какие склады товар расходовался.
Получить данные я могу, но не совсем понятно как вывести отчет в таком виде, чтобы если есть количество приход или расход по складу вывести колонку с этим складом, если значение ресурса то колонку не выводить. Т.е. колонки нужно динамически формировать. Подскажите как это сделать и вообще получиться ли это сделать на скд или придется как печатную форму формировать?
СКД. Как объединить заголовки родительских группировок колонок в таблице
// Проверка двух смежных ячеек на идентичночность
Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол)
Ячейка = ТабДок.Область(индСтр, индКол);
ЯчейкаСлед = ТабДок.Область(индСтр, индКол+1);
Если ПустаяСтрока(Ячейка.Текст) Тогда
Возврат ложь
ИначеЕсли
//Проверяем на соответствие заголовка
Ячейка.Текст = ЯчейкаСлед.Текст
// Проверяем на соответствие имени (отсеиваем уже объединенные ячейки)
и Ячейка.Имя = "R"+индСтр+"C"+индКол Тогда
Возврат Истина;
Иначе
Возврат ложь
КонецЕсли;
КонецФункции
// Обработка заголовков таблицы
//
// Параметры
// Табл - < Тип.ТабличныйДокумент> - Табличный документ формы
Процедура ОбработатьЗаголовки(ТабДок)
ОбъединяемаяОбласть = Неопределено;
//Для оптимизации здесь нужно будет ограничить высоту таблицы
Для индСтр=1 По ТабДок.ВысотаТаблицы Цикл
НачальнаяКолонка = 0;
Для индКол=1 По ТабДок.ШиринаТаблицы Цикл
// определяем начало объединения
Если ОбъединятьЯчейки(ТабДок, индСтр, индКол) Тогда
Если не НачальнаяКолонка Тогда
НачальнаяКолонка = индКол;
КонецЕсли;
ИначеЕсли НачальнаяКолонка Тогда
// завершаем объединение
ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст;
ОбъединяемаяОбласть = ТабДок.Область(индСтр, НачальнаяКолонка, индСтр, индКол);
ОбъединяемаяОбласть.Объединить();
ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
ОбъединяемаяОбласть.Текст = ТекстЗаголовка;
НачальнаяКолонка = 0;
Иначе
НачальнаяКолонка = 0;
КонецЕсли;
КонецЦикла;
// Если нашли в строке области для объединения то прекращаем дальнейшие поиски
Если не ОбъединяемаяОбласть = Неопределено Тогда
возврат;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Сначала обыкновенный отчет по складам. Потом детализация с иерархией по складам и расходу и приходу. А потом код приведенный в ответах 1 и 2 поможет вам скомпоновать колонки нужным образом.