gifts2017

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

Опубликовал Алексей Л (lalex23) в раздел Обработки - Обработка документов

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

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

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

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

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

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

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер
Пример 182
.epf 6,11Kb
14.09.14
182
.epf 6,11Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Алексей Л (lalex23) 13.11.09 10:22
Как раскрасить код - ненашел :(
2. Андрей Скляров (coder1cv8) 13.11.09 10:25
Неплохо!
Компоновку тоже можно попросить ТЗ вернуть...
3. Александр Медведев (anig99) 13.11.09 14:05
(1) (2) чем я регулярно пользуюсь для СКД (: В частности при использовании СКД для заполнения табличных частей(выкладена тут одна такая). В дерево ещё можно выгрузить.
4. Алексей Л (lalex23) 13.11.09 14:31
(1) задолбался красить код :evil:
(3) это уж куда фантазии хватит туда и сольём
5. Сергей Ожерельев (Поручик) 13.11.09 14:58
(4)
Раскраска программного кода для использования на инфостарте
http://infostart.ru/public/19856/
6. Артур Аюханов (artbear) 15.11.09 17:01
(0) Нормально, сам пользуюсь для аналогичных целей.
yasergeya; +1 Ответить
7. yasergeya sergfed (yasergeya) 19.11.09 07:49
огромное человеческое спасибо
часто приходиться делать все это ручками а тут..... :D
8. Андроид (Андроид) 19.11.09 15:19
А можно узнать куда вставлять эту Процедуру "Инициализировать"?
Мне допусти тоже надо заполнить перемищение соглано отчета..
9. Алексей Л (lalex23) 19.11.09 15:34
(8) цитирую себя любимого:

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


и добавил обработку для примера, пользуется сразу УниверсальныйОтчёт без прослоек.
10. Андроид (Андроид) 19.11.09 17:04
Спасибо.. Все оказалось гениально и просто..
Теперь я знаю как ползоваться механизмом "Внешние обработки заполнения табличных частей"
УРА...
11. Александр Крынецкий (echo77) 20.01.10 19:34
(2)(3) Как "попросить" компоновку ТЗ вернуть? Направьте, на пример, пожалуйста.
Я хочу из стандартного отчета УПП СпискиСотрудниковОрганизаций получить сотрудников
12. rasswet (rasswet) 27.04.10 11:05
в бух КОРП нет этого универсального отчета, но есть другой в котором нет "ПолучитьРезультат"..как там делать?
13. Максим (macana) 09.06.10 15:51
14. Дмитрий Леонов (Psylocibine) 20.08.10 05:56
Кстати, а можно каким либо образом обработать ТЗ результата и выгрузить обратно в отчет?
15. Алексей Л (lalex23) 20.08.10 09:49
(14) как вы это себе представляете? нет, в типовой УТ невозможно, но если вы допилите Универсальный отчёт для передачи в него источником данных ТаблицыЗначений - пожалуйста, правда цель не ясна.
16. Кирилл Гезин (kirillsas) 05.01.12 08:04
А можно узнать куда вставлять эту Процедуру "Инициализировать"?
Мне допусти тоже надо заполнить перемищение соглано отчета..
17. Алексей Л (lalex23) 16.01.12 21:53
(16) kirillsas, прикреплена же обработка заполнения ТЧ, чего ещё надо то?
18. Василий Антонов (khaoos) 19.06.12 05:00
Класс, отдельное спасибо за выложенный пример кода.
19. БИЗНЕС РЕШЕНИЯ (Para_1987) 09.07.12 10:06
неплохо написано, прикольно! +
20. Нурислам Ямбаев (nurislam) 21.05.13 17:23
Нормально.Спасибо автору
21. г. Казань Рустем Гумеров (Rustig) 24.06.15 12:21