gifts2017

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

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

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

Подробный пример использования данной обработки в составе отчета по оплатам приведен здесь: http://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");

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

 

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

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сhe Burashka (CheBurator) 08.05.07 04:07
Все - бяки!
100 раз качнули - хоть один бы коммент оставил...
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
Всегда пожалуйста.
Приходите еще.
Заказывайте и спрашивайте про прочие нужные вам "полезности"
8. Алексей (Fox86) 21.09.07 12:32
Спасибо что выложил эту прогу. но боюсь это не совсем то, что мне надо
9. Александр Шишкин (Шёпот теней) 04.10.07 09:10
Господин, Che Burashka... Вы и так впереди планеты всей... и вызываете уважение... УРА!
10. FIXator (Fixator) 04.10.07 11:14
Хоть и не модератор FIDO, но плюс Вам поставлю...
11. Сhe Burashka (CheBurator) 04.10.07 13:38
Спасибо. Начинаю офигевать от собственной офигенности... Качают много всяких моих разработок, но вопросов задают мало... или написал так что все понятно/большинстов устраивает или посмотрели и бросили.. даже ругать не стали... ВАШИ МНЕНИЯ ПО ЭТОМУ ПОВОДУ?
12. Владимир Костецкий (astonvilla) 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) 21.05.09 16:33
25. Игорь Игоревичев (KpeaTuFF) 06.06.09 22:56
Помогла не только разработка, но и автор! Спасибо!
26. Елена Королева (bearcat) 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) 07.08.09 18:17
(27) спокойно! инструкции были даны в личку...
29. Ivan Smirnov (comrad) 13.08.09 10:04
CheBurator вышлите мне пожалуйста инструкцию как для (26)
30. Сергей (Che) Коцюра (CheBurator) 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) 12.11.09 16:58
34. Nick (Dahlia) 13.11.09 11:55
(33) Отправил архив на мыло
35. Олег Валуйский (waol) 09.12.09 12:45
глФРМ неплохо бы вставить в модуль :)
36. Сергей (Che) Коцюра (CheBurator) 09.12.09 14:16
(35) Разрешаю, вставляйте!
37. Олег Валуйский (waol) 09.12.09 15:35
не имею такой возможности; да мне то собственно...
38. DrZombi DrZombi (DrZombi) 06.07.10 11:58
Бывают клиенты "Кнопочники", такие нелюбят много кнопок, а нооборот мечтают об одной кнопке :)
39. Сергей (Che) Коцюра (CheBurator) 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) 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) 27.06.11 21:09
(45) Обработка - универсальная, хотите специфики - перетачивайте самостоятельно ;-)
В общем случае сортировка по измерению (товар, клиент) - всегда имеет смысл, сортировка по количеству в общем случае - смысла лишена: отсортируйте литры с килограммами и сантиметрами...
47. Konstantin _Konstantin (konfed) 28.06.11 10:00
почему же лишена смысла - если все товары имеют одну единицу измерения - то сортировка в числовом измерении дасть больше аналитической информации, чем сортировка по товару, контрагенту.
48. Сергей (Che) Коцюра (CheBurator) 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) 28.04.12 15:39
Не нашел как добавить обычных колонок для доп. информации.
Видимо нужно доработать, чтобы был список колонок кот. следует исключить из группировки.
52. ПодОпытный (mihenius) 28.04.12 16:25
Не нашел как зафиксировать порядок сортировки строк/колонок.
Так же необходимо немного доработать )
53. Сергей (Che) Коцюра (CheBurator) 29.04.12 00:22
(51) этот отчет - в первую очередь группировочный. поэтому вывод дополнительной информаци для уровня группировки - не предусмотрен. Выйти из положения нможно так: если надо вывести в группировке, например номенклатуру с дополнительнйо инфорацией (акртику) - то в ТЗ ДЛЯ ВЫВОДА вместо колонки "номенклатьура", формируем колонку "артикул+номенклатура"
54. Сергей (Che) Коцюра (CheBurator) 29.04.12 00:24
(52) внизу под таблицей группирвоко - есть кнопка "сохранить" и "восстановить". Первая кнопка запоминает под именем (вводится пользователем) текущую настройку вывода колонок/группирвоок, "восстановить2 - позволяет восстановить ее.
55. ПодОпытный (mihenius) 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) 18.12.13 13:09
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа