[NotaBene] Универсальный отчет по таблице значений

Опубликовал Сергей (Che) Коцюра (CheBurator) в раздел Программирование - Практика программирования

1C v.7.7 Готовое решение. Не требует настройки. Не требует допрограммирования. Данная обработка решает часто встречающуюся задачу вывода в "красивом" виде таблицы значений (полученной, например, из запроса). Поддерживается произвольное группирование данных, отключение/включение группировок, в т.ч и создание "шахматок" (типа "продажи понедельно"). Обработка может использоваться как и в отладочных целях (для нормального просмотра ТЗ), так и в составе вполне рабочих отчетов. По крайней мере, я неоднократно клиентам данную обработку ставил вместо того, чтобы каждый раз писать замороченные выводы данных. И клиенты довольны, и мне - проще...

Подробный пример использования данной обработки в составе отчета по оплатам приведен здесь: //infostart.ru/projects/522/?&desc=1&ref=174
Обработка, которая приведена здесь, по сравнению с упомянутой выше ссылкой, расширена: стало лень каждый раз обозначать требуемую раскладку колонок для вывода РАЗНЫХ отчетов - вот и прикрутил сохранение/восстановление раскладки колонок для вывода отчетов. Причем, обработка сама распознает, какой набор/раскладка колонок подходит для полученного на вывода отчета.

От других навороченных обработок аналогичного типа отличается, на мой взгляд, идеальной сбалансированностью функционала и простоты использования.

Мое мнение - удобнейший инструментарий! В копилку программистаааааа!!

Оригинал обработки расположен здесь: http://1c.proclub.ru/modules/mydownloads/personal.php?cid=5&lid=3454 Разрешение от автора на выкладывание доработанной обработки - получено.

Пример использования данной обработки.

//здесь работает внешний отчет, формирующий какие-либо данные
//...
//если ошибка в запросе, то выход из процедуры

Если Запрос.Выполнить(ТекстЗапроса) = 0
Тогда Возврат;
КонецЕсли;

ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ,1,0);

Если ФлагГруппа = 0
Тогда ТЗ.УдалитьКолонку("ГруппаТовара");
КонецЕсли;
ТЗ.УдалитьКолонку("Количество");
ТЗ.УдалитьКолонку("ПродСт");
ТЗ.УдалитьКолонку("ТекДок");

//здесь имеем ТЗ с нужными для вывода данными
//...
//положим в список значений "счетные" колонки ТЗ
//(суммы, количества, себестоимости и прочее всякое что можно складывать...)

СЗПоказателей = СоздатьОбъект("СписокЗначений");
СЗПоказателей.ДобавитьЗначение("СуммаПродСт","Сумма");
СЗПоказателей.ДобавитьЗначение("СуммаКоличество","Кол-во");

//...
//вызовем универсальный отчет по ТЗ
//в списке значений передадим 2 параметра
// - список "счетных" колонок
// - саму таблицу значений для вывода

КонтекстВызова = СоздатьОбъект("СписокЗначений");
КонтекстВызова.ДобавитьЗначение(ТЗ,"ТаблицаЗначений");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокПоказателей");

//...
ПутьОбработки = "";
ИмяОбработки = "";
РасположениеФайла(ПутьОбработки, ИмяОбработки);
ОткрытьФорму("Отчет", КонтекстВызова, ПутьОбработки+"БВК_ОтчетПоТЗ.ert");

КонецПроцедуры
//Сформировать()

 

ВНИМАНИЕ: СПЕЦИАЛЬНО ДЛЯ ТЕХ, КТО НЕ УМЕЕТ ЧИТАТЬ, ПИШУ БОЛЬШИМИ ЖИРНЫМИ КРАСНЫМИ БУКВАМИ: ОБРАБОТКУ СЛЕДУЕТ ВЫЗЫВАТЬ КАК ОПИСАНО ВЫШЕ, ИСПОЛЬЗУЯ ПРОГРАММНЫЙ ОПЕРАТОР  ОткрытьФорму("Отчет",....) - НИКАКИМИ ДРУГИМИ СПОСОБОМИ ДАННУЮ ОБРАБОТКУ ОТКРЫВАТЬ НЕ СЛЕДУЕТ!

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

Наименование Файл Версия Размер
Универсальный отчет по ТЗ
.1178491125 204,50Kb
25.09.09
816
.1178491125 204,50Kb 816 Скачать бесплатно

См. также

Комментарии
1. Сhe Burashka (CheBurator) 08.05.07 04:07 Сейчас в теме
Все - бяки!
100 раз качнули - хоть один бы коммент оставил...
dreadlord; Fox86; +2 Ответить
2. DobroProd (DobroProd) 14.05.07 12:47 Сейчас в теме
в комплексной при открытии
Для сч = 1 По ТЗПолнаяОригинал.КоличествоКолонок() Цикл
{C:\DOCUMENTS AND SETTINGS\ALEX.DOBRO_PROD\РАБОЧИЙ СТОЛ\BVK_OTCHETPOTZ.ERT(325)}: Значение не представляет агрегатный объект (КоличествоКолонок)
3. Сhe Burashka (CheBurator) 14.05.07 13:25 Сейчас в теме
4. Сhe Burashka (CheBurator) 14.05.07 23:35 Сейчас в теме
проблема, скорее всего - в ненадлежащей передаче параметров при вызове обработки - копать в эту сторону.
на досуге придется вставить проверку на прием параметров...
5. soba (soba) 11.07.07 17:16 Сейчас в теме
Очень понравилась :) куча отчетов было таких, что вывод только из таблиц, а тут группировки по ним готовенькие. спасибо :)
6. Сhe Burashka (CheBurator) 11.07.07 17:37 Сейчас в теме
Всегда пожалуйста.
Приходите еще.
Заказывайте и спрашивайте про прочие нужные вам "полезности"
dreadlord; +1 Ответить
7. just (Just) 31.08.07 06:27 Сейчас в теме
8. Алексей (Fox86) 21.09.07 12:32 Сейчас в теме
Спасибо что выложил эту прогу. но боюсь это не совсем то, что мне надо
9. Александр Шишкин (Шёпот теней) 1687 04.10.07 09:10 Сейчас в теме
Господин, Che Burashka... Вы и так впереди планеты всей... и вызываете уважение... УРА!
dreadlord; +1 Ответить
10. FIXator (Fixator) 04.10.07 11:14 Сейчас в теме
Хоть и не модератор FIDO, но плюс Вам поставлю...
11. Сhe Burashka (CheBurator) 04.10.07 13:38 Сейчас в теме
Спасибо. Начинаю офигевать от собственной офигенности... Качают много всяких моих разработок, но вопросов задают мало... или написал так что все понятно/большинстов устраивает или посмотрели и бросили.. даже ругать не стали... ВАШИ МНЕНИЯ ПО ЭТОМУ ПОВОДУ?
dreadlord; +1 Ответить
12. Владимир Костецкий (astonvilla) 225 04.10.07 14:46 Сейчас в теме
Я скачал, нет времени посмотреть. Гляну, обязательно отпишусь и оценю :))
13. Сhe Burashka (CheBurator) 06.02.08 02:15 Сейчас в теме
вот здесь есть достойное продолжение для классоманов http://infostart.ru/projects/1658/
14. Oskar (oskar) 17.06.08 08:54 Сейчас в теме
15. Сhe Burashka (CheBurator) 17.06.08 10:49 Сейчас в теме
(14) А то! То что лежит у мну в профайле - испытано и одобрено лично мною и используется в моей повседневной работе, так что крупных косяков - нет...
16. Алексей (бубух) 29.07.08 16:51 Сейчас в теме
гранаты ваши не моёй системы. моя ругается и ничго делать не хочет. жаль.
17. Сhe Burashka (CheBurator) 29.07.08 17:09 Сейчас в теме
(16) не надо ля-ля.. все работает!
как конкретно ругается?
покажите код, который готовит и передает параметры на вход этой обработки...?
18. Алексей (бубух) 30.07.08 12:46 Сейчас в теме
(17) выдает:
ТЗраб.Сортировать("ИмяГруппировки");
{D:\BASES\БАЗЫ ГЛАВБУХА\КОПИЯ БД БУХ ТЕКУЩАЯ\EXTFORMS\УНИВЕРСАЛЬНЫЙ ОТЧЕТ ПО ТАБЛИЦЕ ЗНАЧЕНИЙ.ERT(994)}: Неверный идентификатор колонки!
Если ТЗНастроекКолонокТекущая.КоличествоСтрок() = 0 Тогда
{D:\BASES\БАЗЫ ГЛАВБУХА\КОПИЯ БД БУХ ТЕКУЩАЯ\EXTFORMS\УНИВЕРСАЛЬНЫЙ ОТЧЕТ ПО ТАБЛИЦЕ ЗНАЧЕНИЙ.ERT(1035)}: Значение не представляет агрегатный объект (КоличествоСтрок)
ТЗПолная.НоваяКолонка(ИмяВертГруппировки,ТипВертГруппировки);
{D:\BASES\БАЗЫ ГЛАВБУХА\КОПИЯ БД БУХ ТЕКУЩАЯ\EXTFORMS\УНИВЕРСАЛЬНЫЙ ОТЧЕТ ПО ТАБЛИЦЕ ЗНАЧЕНИЙ.ERT(753)}: Значение не представляет агрегатный объект (НоваяКолонка)
По поводу кода ничё сказать не могу - я просто булгахтер любопытный.
19. Сhe Burashka (CheBurator) 19.08.08 00:21 Сейчас в теме
отвечено в личку:
- обработка самостоятельно ручками не вызывается! вызывается программным способом с передачей параметров!
20. Avrora (Avrora) 24.10.08 18:24 Сейчас в теме
такое выдает

ТЗИдВерт.УстановитьЗначение(ТЗИдВерт.НомерСтроки, ИмяПоказателя, ТЗВремКопия.ПолучитьЗначение(ТЗВремКопия.НомерСтроки, ИмяПоказателя));
{D:\...\BVK_OTCHETPOTZ.ERT(701)}: Неверный идентификатор колонки!
21. Сhe Burashka (CheBurator) 24.10.08 23:36 Сейчас в теме
(20)
1.Отчет вызывается ТОЛЬКО ПРОГРАММНО!
2. Проверьте чтобы при передаче параметров было
СЗПоказателей.ДобавитьЗначение("ЗдесьИмяКолонкиТЗ","ЗдесьКакэТоНазыватВотчете");
22. Дмитрий (KneZ) 28.02.09 06:44 Сейчас в теме
Спасибо все работает супер! Поначалу правда не запускалось. Достаточно было понять, что в ТЗ должны быть не только группировки, но и их значения
23. rmv (rmv) 20.05.09 15:02 Сейчас в теме
Великий СЕНКС. Весьма облегчило жисть
24. Руслан Латыпов (levran) 193 21.05.09 16:33 Сейчас в теме
25. Игорь Игоревичев (KpeaTuFF) 06.06.09 22:56 Сейчас в теме
Помогла не только разработка, но и автор! Спасибо!
26. Елена Королева (bearcat) 70 20.07.09 01:44 Сейчас в теме
Поместила файл в подкаталог ExtForms в каталоге информационной базы.
Через меню "Сервис" выбрала пункт "Дополнительные возможности".
Добавила этот файл.
Попыталась открыть отчет, пишет - НЕВЕРНЫЕ ПАРАМЕТРЫ ВЫЗОВА, но при этом при нажатии на "ОК" отчет открылся.
при попытке сформировать выдает :
ТЗПолная.НоваяКолонка(ИмяВертГруппировки,ТипВертГруппировки);
{D:\1С - ОПТИМА\БАЗЫ ДАННЫХ (ЛОКАЛЬНЫЕ)\СТ\EXTFORMS\BVK_OTCHETPOTZ.ERT(753)}: Значение не представляет агрегатный объект (НоваяКолонка)
что делать? я не программист, я бухгалтер, который старается облегчить себе жизнь путем использования обработок.
Если сможете подсказать, буду благодарна.
27. vlad kan (truba) 07.08.09 18:11 Сейчас в теме
bearcat, не делайте так.
не надо все в рот тянуть, прям как дети малые
28. Сергей (Che) Коцюра (CheBurator) 3375 07.08.09 18:17 Сейчас в теме
(27) спокойно! инструкции были даны в личку...
29. Ivan Smirnov (comrad) 13.08.09 10:04 Сейчас в теме
CheBurator вышлите мне пожалуйста инструкцию как для (26)
30. Сергей (Che) Коцюра (CheBurator) 3375 13.08.09 12:30 Сейчас в теме
(29) в описании обработки где-нибудь сказано что обработку следует открывать через файл-открыть? сказано открывать каким либо другим способом кроме как вызовом оператора ОткрытьФорму("Отчет", КонтекстВызова, ПутьОбработки+"БВК_ОтчетПоТЗ.ert"); ....????????
- что именно непонятно?
31. Ivan Smirnov (comrad) 13.08.09 15:05 Сейчас в теме
(30) разобралься спасибо.
я пока что нуб так что извиняйте.
32. Nick (Dahlia) 12.11.09 16:45 Сейчас в теме
:cry: Наверно, я чего-то не понимаю, но у меня неправильно работает
Во вложенном файле исходная ТЗ и картинка, чего получается. Самое яркое что в глаза бросается - столбцы по первой номенклатуре - итоги по торговым
Прикрепленные файлы:
ИсходнаяТаблица.rar
33. Сергей (Che) Коцюра (CheBurator) 3375 12.11.09 16:58 Сейчас в теме
34. Nick (Dahlia) 13.11.09 11:55 Сейчас в теме
(33) Отправил архив на мыло
35. Олег Валуйский (waol) 225 09.12.09 12:45 Сейчас в теме
глФРМ неплохо бы вставить в модуль :)
36. Сергей (Che) Коцюра (CheBurator) 3375 09.12.09 14:16 Сейчас в теме
(35) Разрешаю, вставляйте!
37. Олег Валуйский (waol) 225 09.12.09 15:35 Сейчас в теме
не имею такой возможности; да мне то собственно...
38. DrZombi DrZombi (DrZombi) 06.07.10 11:58 Сейчас в теме
Бывают клиенты "Кнопочники", такие нелюбят много кнопок, а нооборот мечтают об одной кнопке :)
39. Сергей (Che) Коцюра (CheBurator) 3375 06.07.10 12:15 Сейчас в теме
(38) вставь "заглушку" - для такого-то набора колонок применить такую-ту раскладку ;-) - т.е. пррограммно прописать то что делается по кнопке восстановить... а еще лепотее - через глРасшифровку закинуть нужный набор параметров
40. zhuravlik (unichkin) 17.03.11 17:27 Сейчас в теме
А глФРМ - это из типовой конфы? У меня база 10 раз переписана, ругается.
глФРМ<<?>>(ЗначениеПоказателя)
Функция не обнаружена (глФРМ)
Может скинете на почту модуль функции?
41. zhuravlik (unichkin) 17.03.11 17:28 Сейчас в теме
Кстати, было бы еще неплохо иметь возможность убирать группировку из вывода таблицы.
42. zhuravlik (unichkin) 17.03.11 18:03 Сейчас в теме
(40) уже разобрался) Крутая штука, очень помогло)
43. Сергей (Che) Коцюра (CheBurator) 3375 18.03.11 21:24 Сейчас в теме
(41) ну.. это простая глПечатьТЗ() - есть такая широко распространенная...
44. zhuravlik (unichkin) 18.03.11 23:03 Сейчас в теме
(43) и это победил, просто кинул на форму кнопку, удаляющую текущую группировку, и сделал сохранение перед этим. Теперь не пойму, почему не работает фиксация строк, и не выводятся заголовки)))
45. Konstantin _Konstantin (konfed) 27.06.11 20:25 Сейчас в теме
Классно работает, но до тех пор пока не нужно выводить посортированное, т.к. обработка производит свою сортировку при выводе.
напр.: группировка 1 = контрагент, группировка 2 = товар, ресурсы - количество и сумма . нужно вывести все посортированное по количеству в
порядке убывания. ТЗ, которая передается Вашей обработке уже так и посортирована, но внутри Вашей обработке сортировка ломается. однозначный плюс автору и
CheBurator за то, что представил (доработки CheBurator не проверял). буду пробовать исправить что-то с сортировкой
46. Сергей (Che) Коцюра (CheBurator) 3375 27.06.11 21:09 Сейчас в теме
(45) Обработка - универсальная, хотите специфики - перетачивайте самостоятельно ;-)
В общем случае сортировка по измерению (товар, клиент) - всегда имеет смысл, сортировка по количеству в общем случае - смысла лишена: отсортируйте литры с килограммами и сантиметрами...
47. Konstantin _Konstantin (konfed) 28.06.11 10:00 Сейчас в теме
почему же лишена смысла - если все товары имеют одну единицу измерения - то сортировка в числовом измерении дасть больше аналитической информации, чем сортировка по товару, контрагенту.
48. Сергей (Che) Коцюра (CheBurator) 3375 28.06.11 10:06 Сейчас в теме
(47) потому что не надо "подгонять данные". Я выше написал: реализован общий случай, в общем случае - товары не имеют одну единицу измерения. А вот "если.. имеют...", "если... весь товар - одна номенклатура но разных серий с разными сроками изготовления" и т.д. - это частные случаи. никто не запрещает подогнать универсальную обработку для общих случаев под свое частное решение...
49. Гость 06.12.11 16:20 Сейчас в теме
Если Запрос.Выполнить(ТекстЗапроса) = 0
Тогда Возврат;
КонецЕсли;

ТЗ = СоздатьОбъект("ТаблицаЗначений");
Запрос.Выгрузить(ТЗ,1,0);

Если ФлагГруппа = 0
Тогда ТЗ.УдалитьКолонку("ГруппаТовара");
КонецЕсли;
ТЗ.УдалитьКолонку("Количество");
ТЗ.УдалитьКолонку("ПродСт");
ТЗ.УдалитьКолонку("ТекДок");

//здесь имеем ТЗ с нужными для вывода данными 
//...
//положим в список значений "счетные" колонки ТЗ
//(суммы, количества, себестоимости и прочее всякое что можно складывать...)
СЗПоказателей = СоздатьОбъект("СписокЗначений");
СЗПоказателей.ДобавитьЗначение("СуммаПродСт","Сумма");
СЗПоказателей.ДобавитьЗначение("СуммаКоличество","Кол-во");
//...
//вызовем универсальный отчет по ТЗ
//в списке значений передадим 2 параметра
// - список "счетных" колонок
// - саму таблицу значений для вывода
КонтекстВызова = СоздатьОбъект("СписокЗначений");
КонтекстВызова.ДобавитьЗначение(ТЗ,"ТаблицаЗначений");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокПоказателей");
//...
ПутьОбработки = ""; 
ИмяОбработки = "";
РасположениеФайла(ПутьОбработки, ИмяОбработки);
ОткрытьФорму("Отчет", КонтекстВызова, ПутьОбработки+"БВК_ОтчетПоТЗ.ert");

КонецПроцедуры //Сформировать()
...Показать Скрыть
50. ARTEM ARTEM (ARTEM123456) 05.03.12 08:24 Сейчас в теме
51. ПодОпытный (mihenius) 86 28.04.12 15:39 Сейчас в теме
Не нашел как добавить обычных колонок для доп. информации.
Видимо нужно доработать, чтобы был список колонок кот. следует исключить из группировки.
52. ПодОпытный (mihenius) 86 28.04.12 16:25 Сейчас в теме
Не нашел как зафиксировать порядок сортировки строк/колонок.
Так же необходимо немного доработать )
53. Сергей (Che) Коцюра (CheBurator) 3375 29.04.12 00:22 Сейчас в теме
(51) этот отчет - в первую очередь группировочный. поэтому вывод дополнительной информаци для уровня группировки - не предусмотрен. Выйти из положения нможно так: если надо вывести в группировке, например номенклатуру с дополнительнйо инфорацией (акртику) - то в ТЗ ДЛЯ ВЫВОДА вместо колонки "номенклатьура", формируем колонку "артикул+номенклатура"
54. Сергей (Che) Коцюра (CheBurator) 3375 29.04.12 00:24 Сейчас в теме
(52) внизу под таблицей группирвоко - есть кнопка "сохранить" и "восстановить". Первая кнопка запоминает под именем (вводится пользователем) текущую настройку вывода колонок/группирвоок, "восстановить2 - позволяет восстановить ее.
55. ПодОпытный (mihenius) 86 02.05.12 07:11 Сейчас в теме
(53,54) Уже переделал под себя )

Пришел к клиентам, а там твоя обработка используется.
56. Антон (Скользящий) 04.12.12 14:01 Сейчас в теме
Очень хорошая обработка, спасибо, очень помогла. Возникла правда, проблема. Отчет чисто группировочный, а иногда надо выводить дополнительную строку с информацией "в т.ч." Привожу пример.
В ТЗ есть колонки Контрагент, Товар, РасходнаяНакладная, Количество, ГруппаКонтрагентов, Группа Товаров. Счетная колонка "Количество"

Этим отчетом удается вывести ГруппаКонтрагентов в столбцах, Группа Товар и Товар в строках, выглядит так
http://gyazo.com/7338e1dfc1ed8c30de7e64212fb6f799
Или можно вывести вот так
http://gyazo.com/12f731587eb4c5fdf114c2decae889bc т.е. без вывода товаров.

А хотелось бы выводить например только группу товаров, и "в т.ч." товар. Вот так
http://gyazo.com/5b3b77d726cd758afd062b4707e86494
Иными словами, чтобы итоги по группе считал, но выводил под названием группы и количеством только определенные товары с количеством по конкретным товарам. Как можно извратиться в рамках существующего отчета? Или только допиливать отчет?
57. Антон (Скользящий) 04.12.12 14:58 Сейчас в теме
Впрочем, вышел из положения, тупил. Просто добавил колонку еще одну группировочную. ) Проблема решена.
58. Сергей (Che) Коцюра (CheBurator) 3375 18.12.13 13:09 Сейчас в теме
Оставьте свое сообщение