Так сложилось исторически, что в основном занимаюсь я оперативным учётом, как на 8-ке так и на 7-ке, периодически меня озадачивают.
- Хотим, чтобы этот документ заполнялся, как в том отчёте с возможностью тех же фильтров.
- Или я сам озадачиваюсь - надо заполнить какую-нибудь табличку данными "как в том отчёте" + дать возможность отборами рулить пользователю
Приходилось, как правило, или рисовать свой отчёт или копировать типовой дорабатывая напильником. Сегодня с утра меня в очередной раз озадачили задачей
- Надо сделать возможность "перемещения товаров" на основе фильтров используемых отчетом "Ведомость по товарам и ГДТ организации"
Уж зачем и почему - не знаю - просто надо. Поэтому, прикинув в очередной раз что придётся ковыряться в куче кода и собирать запрос по кусочкам - мне стало грустно. Взглянув уныло на реквизиты предлагаемого к надруганию отчёта меня осенило, а что если... воспользоваться механизмом "Внешние обработки заполнения табличных частей" и не просто так, а с выдумкой:
Процедура Инициализировать(_Объект,_ИмяТабличнойЧасти,_ТабличноеПолеОбъекта) Экспорт
// берём нужный отчёт
ОбъектОтчет = Отчеты.ВедомостьТоварыИГТДОрганизаций.Создать();
// получаем форму и отдаём на откуп пользователю настройку всех
ФормаОтчета = ОбъектОтчет.ПолучитьФорму();
ФормаОтчета.ОткрытьМодально();
// теперь у нас после закрытия формы остался объект отчёта
// со всеми настройкам что там начудил юзер
// а универсальный отчёт(на базе которого построено
// большее количество типовых отчётов в УТ) имеет экспортную функцию
// и она с радостью отдаст всё что нажито непосильным трудом
Результат = ОбъектОтчет.УниверсальныйОтчет.ПолучитьРезультат();
// теперь поимеем с результата ТЗ, а уж дальше делаем с ней всё что нам угодно
ТЗ = Результат.Выгрузить();
// посмотрите на результат
ТЗ.ВыбратьСтроку();
// ну а дальше каждый делает в меру своей испорченности.
КонецПроцедуры
Некоторые несложные умозаключения: воспользоваться УниверсальнымОтчетом можно не только через посреднические отчёты, но и напрямую, правда придётся заполнять кучу настроек. Если в каком-либо отчёте не используется УниверсальныйОтчет - наверняка используется Построитель - аналогичный финт ушами сработает. Как быть если отчёты нарисованы на компоновке - я не задумывался, не сложилось у меня с нею.. но сдаётся мне что и там можно сделать аналогично.
Собственно всё. Спасибо за внимание.
Update 2009.11.19 добавил обработку для примера и во избежание непоняток