Управление торговлей: Как использовать "Универсальный отчет" в корыстных целях.



Как часто вас просят заполнить документ данными "как в том отчёте"? Как часто для своих разработок приходится расковыривать типовые отчёты и адаптировать для себя? Вам надоело разгребать тонны кода и километры кусочных запросов? Будьте проще — заставьте типовые механизмы предоставить нужную информацию.

Так сложилось исторически, что в основном занимаюсь я оперативным учётом, как на 8-ке так и на 7-ке, периодически меня озадачивают.

  • Хотим, чтобы этот документ заполнялся, как в том отчёте с возможностью тех же фильтров.  
  • Или я сам озадачиваюсь — надо заполнить какую-нибудь табличку данными «как в том отчёте» + дать возможность отборами рулить пользователю

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

  • Надо сделать возможность «перемещения товаров» на основе фильтров используемых отчетом «Ведомость по товарам и ГДТ организации»

Уж зачем и почему — не знаю — просто надо. Поэтому, прикинув в очередной раз что придётся ковыряться в куче кода и собирать запрос по кусочкам — мне стало грустно. Взглянув уныло на реквизиты предлагаемого к надруганию отчёта меня осенило, а что если… воспользоваться механизмом «Внешние обработки заполнения табличных частей» и не просто так, а с выдумкой:

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

Некоторые несложные умозаключения: воспользоваться УниверсальнымОтчетом можно не только через посреднические отчёты, но и напрямую, правда придётся заполнять кучу настроек. Если в каком-либо отчёте не используется УниверсальныйОтчет — наверняка используется Построитель — аналогичный финт ушами сработает. Как быть если отчёты нарисованы на компоновке — я не задумывался, не сложилось у меня с нею.. но сдаётся мне что и там можно сделать аналогично.

Собственно всё. Спасибо за внимание.

Update 2009.11.19 добавил обработку для примера и во избежание непоняток

21 Comments

  1. lalex23

    Как раскрасить код — ненашел 🙁

    Reply ↓
  2. coder1cv8

    Неплохо!

    Компоновку тоже можно попросить ТЗ вернуть…

    Reply ↓
  3. anig99

    (1) (2) чем я регулярно пользуюсь для СКД (: В частности при использовании СКД для заполнения табличных частей(выкладена тут одна такая). В дерево ещё можно выгрузить.

    Reply ↓
  4. lalex23

    (1) задолбался красить код 👿

    (3) это уж куда фантазии хватит туда и сольём

    Reply ↓
  5. Поручик

    (4)

    Раскраска программного кода для использования на инфостарте

    http://infostart.ru/public/19856/

    Reply ↓
  6. artbear

    (0) Нормально, сам пользуюсь для аналогичных целей.

    Reply ↓
  7. yasergeya

    огромное человеческое спасибо

    часто приходиться делать все это ручками а тут….. 😀

    Reply ↓
  8. Андроид

    А можно узнать куда вставлять эту Процедуру «Инициализировать»?

    Мне допусти тоже надо заполнить перемищение соглано отчета..

    Reply ↓
  9. lalex23

    (8) цитирую себя любимого:

    воспользоваться механизмом «Внешние обработки заполнения табличных частей»

    и добавил обработку для примера, пользуется сразу УниверсальныйОтчёт без прослоек.

    Reply ↓
  10. Андроид

    Спасибо.. Все оказалось гениально и просто..

    Теперь я знаю как ползоваться механизмом «Внешние обработки заполнения табличных частей»

    УРА…

    Reply ↓
  11. echo77

    (2)(3) Как «попросить» компоновку ТЗ вернуть? Направьте, на пример, пожалуйста.

    Я хочу из стандартного отчета УПП СпискиСотрудниковОрганизаций получить сотрудников

    Reply ↓
  12. rasswet

    в бух КОРП нет этого универсального отчета, но есть другой в котором нет «ПолучитьРезультат»..как там делать?

    Reply ↓
  13. macana

    + За подход

    Reply ↓
  14. Psylocibine

    Кстати, а можно каким либо образом обработать ТЗ результата и выгрузить обратно в отчет?

    Reply ↓
  15. lalex23

    (14) как вы это себе представляете? нет, в типовой УТ невозможно, но если вы допилите Универсальный отчёт для передачи в него источником данных ТаблицыЗначений — пожалуйста, правда цель не ясна.

    Reply ↓
  16. kirillsas

    А можно узнать куда вставлять эту Процедуру «Инициализировать»?

    Мне допусти тоже надо заполнить перемищение соглано отчета..

    Reply ↓
  17. lalex23

    (16) kirillsas, прикреплена же обработка заполнения ТЧ, чего ещё надо то?

    Reply ↓
  18. khaoos

    Класс, отдельное спасибо за выложенный пример кода.

    Reply ↓
  19. Para_1987

    неплохо написано, прикольно! +

    Reply ↓
  20. nurislam

    Нормально.Спасибо автору

    Reply ↓
  21. Rustig

    за идею плюс ))

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *