Отчет на на с детализацией по складам

1. Sakuraso 14.04.20 21:51 Сейчас в теме
Добрый вечер, необходимо сделать отчет такого вида (на рисунке пример отчета).
Данные необходимо получать по регистру остатков.
Структура регистра такая:
Измерения; номенклатура, склад, организация, партия.
Ресурсы; кол-во, сумма.
Реквизиты; корСклад, корНоменклатура.
В отчете в полях приход и расход идет детализация по складам, с каких складов пришел товар и на какие склады товар расходовался.
Получить данные я могу, но не совсем понятно как вывести отчет в таком виде, чтобы если есть количество приход или расход по складу вывести колонку с этим складом, если значение ресурса то колонку не выводить. Т.е. колонки нужно динамически формировать. Подскажите как это сделать и вообще получиться ли это сделать на скд или придется как печатную форму формировать?
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AlexandrSmith 69 14.04.20 22:27 Сейчас в теме
3. AlexandrSmith 69 14.04.20 22:29 Сейчас в теме
Полный ответ
https://infostart.ru/public/77916/
СКД. Как объединить заголовки родительских группировок колонок в таблице
// Проверка двух смежных ячеек на идентичночность
Функция ОбъединятьЯчейки(ТабДок, индСтр, индКол)

 Ячейка = ТабДок.Область(индСтр, индКол);
 ЯчейкаСлед = ТабДок.Область(индСтр, индКол+1);
 Если ПустаяСтрока(Ячейка.Текст) Тогда

 Возврат ложь

 ИначеЕсли
 //Проверяем на соответствие заголовка
 Ячейка.Текст = ЯчейкаСлед.Текст
        // Проверяем на соответствие имени (отсеиваем уже объединенные ячейки)
 и Ячейка.Имя = "R"+индСтр+"C"+индКол Тогда

 Возврат Истина;

 Иначе

 Возврат ложь

 КонецЕсли;

КонецФункции

// Обработка заголовков таблицы
//
// Параметры
// Табл - < Тип.ТабличныйДокумент> - Табличный документ формы
Процедура ОбработатьЗаголовки(ТабДок)

 ОбъединяемаяОбласть = Неопределено;

 //Для оптимизации здесь нужно будет ограничить высоту таблицы
 Для индСтр=1 По ТабДок.ВысотаТаблицы Цикл

 НачальнаяКолонка = 0;
 Для индКол=1 По ТабДок.ШиринаТаблицы Цикл

 // определяем начало объединения
 Если ОбъединятьЯчейки(ТабДок, индСтр, индКол) Тогда

 Если не НачальнаяКолонка Тогда

 НачальнаяКолонка = индКол;

 КонецЕсли;

 ИначеЕсли НачальнаяКолонка Тогда
 // завершаем объединение

 ТекстЗаголовка = ТабДок.Область(индСтр, индКол).Текст;
 ОбъединяемаяОбласть = ТабДок.Область(индСтр, НачальнаяКолонка, индСтр, индКол);
 ОбъединяемаяОбласть.Объединить();
 ОбъединяемаяОбласть.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
 ОбъединяемаяОбласть.Текст = ТекстЗаголовка;
 НачальнаяКолонка = 0;

 Иначе

 НачальнаяКолонка = 0;

 КонецЕсли;

 КонецЦикла;

 // Если нашли в строке области для объединения то прекращаем дальнейшие поиски
 Если не ОбъединяемаяОбласть = Неопределено Тогда

 возврат;

 КонецЕсли;

 КонецЦикла;

КонецПроцедуры
Показать
4. AlexandrSmith 69 14.04.20 22:37 Сейчас в теме
Сначала обыкновенный отчет по складам. Потом детализация с иерархией по складам и расходу и приходу. А потом код приведенный в ответах 1 и 2 поможет вам скомпоновать колонки нужным образом.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот