Написание отчета происходит в два этапа. Сбор данных, и вывод их на экран. И реализация именно вывода группировок отчета из таблицы значений на экран в платформе 7.7 оставляет желать лучшего. Когда я только начинал заниматься программированием в среде 1С 7.7, такая задача чуть ли не ставила в тупик. Потому что своей головы у меня хватало на вывод трех группировок (со вспомогательнгыми ТЗ), и очередность вывода была жестко привязана к коду. Потом однажды я нашел обработку [NotaBene] Универсальный отчет по таблице значений. Она здорово выручала иногда, но отсутствие нумерации строк отчета, которую очень часто просили, и привязка к оформлению (которое по ряду причин мне на душу не легло) привело к идее написать что-то свое. Кроме всего прочего сама идея использовать внешнюю обработку для таких целей мне тоже не нравилась.
Таким образом, я поставил перед собой задачу придумать алгоритм для вывода отчета, который сможет реализовать следующий функционал:
- - Возможность пользователя управлять вложенностями и видимостью группировок отчета из формы.
- - Перенумерация строк конечного отчета
- - Возможность легко в обработке изменить оформление отчета
Буду рад, если кому пригодиться :)
Добавлено 13.06.2012:
+ Отображение структуры группировок с помощью внешней компоненты Йоксель (качать отсюда: http://yoksel.net.ru/Hotfixes)
+Немного изменил алгоритм перенумерации.
Не очень красиво смотрятся цифры 1.1.1.1.2, я нумерую всегда с количеством уровней нумерации равным 3 (т.е. 1, 1.1, 1.1.1), а если в отчете много группировок - просто не нумерую первую, и пропускаю нумерацию для нижних уровней. Основываюсь только на своем опыте, меня еще ни разу не просили, чтобы в отчете было больше пяти группировок, а с таким условием такая нумерация очень приятно выглядит.
Добавлено 06.06.2013:
+ Вывод секций отчета рекурсивно, с использованием индексированной таблицы (ВК 1С++)
Т.к. уже давно и активно пользуюсь объектом "ИндексированнаяТаблица", решил маленько доработать эту публикацию. Просто при выводе тз с 10000 строк, с использованием ИТЗ уходит всего 3 сек., а с штатным методом этой обработки - 85 сек.
p.s. За веселые названия фирм спасибо сайту www.brendogenerator.ru