Вывод и перенумерация отчета с заранее неизвестным количеством группировок.

07.06.13

Разработка - Работа с интерфейсом

1C v.7.7 Пример вывода отчета с заранее неизвестным количеством группировок, с возможностью изменять уровень вложенности группировок из списка значений на форме, с нумерацией конечного отчета, с выводом структуры вложенности группировок (с помощью внешней компоненты Йоксель - http://yoksel.net.ru/Hotfixes). В приложенном файле показан пример вывода отчета из сформированной таблицы значений. Код я старался закомментировать как можно подробней. Хоть семерка и вымирающая платформа, думаю еще есть люди, которые только начинают ей заниматься, и им это может пригодиться.

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

Наименование Файл Версия Размер
Пример.ert
.ert 215,50Kb
24
.ert 215,50Kb 24 Скачать бесплатно

Написание отчета происходит в два этапа. Сбор данных, и вывод их на экран. И реализация именно вывода группировок отчета из таблицы значений на экран в платформе 7.7 оставляет желать лучшего. Когда я только начинал заниматься программированием в среде 1С 7.7, такая задача чуть ли не ставила в тупик. Потому что своей головы у меня хватало на вывод трех группировок (со вспомогательнгыми ТЗ), и очередность вывода была жестко привязана к коду. Потом однажды я нашел обработку [NotaBene] Универсальный отчет по таблице значений.  Она здорово выручала иногда, но отсутствие нумерации строк отчета, которую очень часто просили, и привязка к оформлению (которое по ряду причин мне на душу не легло) привело к идее написать что-то свое. Кроме всего прочего сама идея использовать внешнюю обработку для таких целей мне тоже не нравилась.

Таким образом, я поставил перед собой задачу придумать алгоритм для вывода отчета, который сможет реализовать следующий функционал:

  • - Возможность пользователя управлять вложенностями и видимостью группировок отчета из формы.
  • - Перенумерация строк конечного отчета
  • - Возможность легко в обработке изменить оформление отчета

Буду рад, если кому пригодиться :)

Добавлено 13.06.2012:

+ Отображение структуры группировок с помощью внешней компоненты Йоксель (качать отсюда: http://yoksel.net.ru/Hotfixes)

+Немного изменил алгоритм перенумерации.

Не очень красиво смотрятся цифры 1.1.1.1.2, я нумерую всегда с количеством уровней нумерации равным 3 (т.е. 1, 1.1, 1.1.1), а если в отчете много группировок - просто не нумерую первую, и пропускаю нумерацию для нижних уровней. Основываюсь только на своем опыте, меня еще ни разу не просили, чтобы в отчете было больше пяти группировок, а с таким условием такая нумерация очень приятно выглядит.

Добавлено 06.06.2013:

+ Вывод секций отчета рекурсивно, с использованием индексированной таблицы (ВК 1С++)

Т.к. уже давно и активно пользуюсь объектом "ИндексированнаяТаблица", решил маленько доработать эту публикацию. Просто при выводе тз с 10000 строк, с использованием ИТЗ уходит всего 3 сек., а с штатным методом этой обработки - 85 сек.

p.s. За веселые названия фирм спасибо сайту www.brendogenerator.ru

См. также

1С:Фото номенклатуры 7.7 - решение для работы с фотографиями номенклатуры в 1С:7.7 (включая формат PNG)

Работа с интерфейсом Логистика, склад и ТМЦ Платформа 1С v7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Решение для разработчика и конечного пользователя для работы с фотографиями номенклатуры: систематизация, хранение, отображение, а также выгрузка на Яндекс-Диск и FTP (кроме версии лайт). Поддерживаются графические форматы: bmp, jpg, gif, tiff, а также png - не поддерживаемый штатными средствами 1С. Выполнено без использования внешних компонент (кроме функции выгрузки на FTP). Поставляется как в виде пустой конфигурации с набором объектов и модулей для работы с фото, так и в виде обновления к 1С:Торговля и склад 7.7. Выполнено в двух версиях: "полная" и "лайт".

5000 руб.

18.10.2022    5164    1    45    

3

WebЦвета для 1с77 FormEx

Инструментарий разработчика Работа с интерфейсом Платформа 1С v7.7 Абонемент ($m)

Обработка с фрагментами кода для программного использования набора цветов из коллекции WebЦвета 1с версии 8+ в 1с версии 77. Требуется предварительное подключение сторонней библиотеки FormEх. Будет полезно программистам 1с 77, 1с 8. Да и вообще при программировании на любом языке при потребности использовать коллекцию цветов WebЦвета.

1 стартмани

30.03.2022    4546    2    igor7777    4    

5

К привязкам элементов форм (1С 7.7, FormEx)

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Публикация имеет цель обратить внимание на возможность улучшения интерфейса.

15.12.2021    4467    62    Cерый    13    

6

Выбор цвета для 1С 7.7

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Простая и удобная внешняя обработка для выбора цвета без применения внешних компонент.

1 стартмани

09.06.2020    7027    3    vap_pig    5    

3

Производственный календарь для 1С 7.7

Учет рабочего времени Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка производственного календаря с возможностью импорта и экспорта xls для 1С 7.7 (7.70.027) без изменения конфигурации.

1 стартмани

18.09.2019    12580    6    Jill    8    

3

Альтернативная обработка "Выбор периода"

Работа с интерфейсом Оперативный учет 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Альтернативная обработка ввода периода для 1С 7.7.

1 стартмани

27.03.2019    6589    3    v.a.n-    11    

2

Несколько табличных частей в 1С:7.7 - это просто

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

При программировании на платформе V7 достаточно часто возникает задача создать несколько табличных частей документа (или справочника). Традиционно эта задача имеет несколько решений..

1 стартмани

01.05.2018    22423    27    Gkmy    11    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. smitti911 21.03.12 13:26 Сейчас в теме
А можно прямую ссылку на Вашу обработку .
P.S. на счету 0.10$m
2. unichkin 1559 21.03.12 13:31 Сейчас в теме
Да, скиньте мыло в личку я отправлю.
3. TrinitronOTV 14 21.03.12 15:34 Сейчас в теме
что-то я не понял разницу в двух сформированных отчетах (цвета естественно мною не учитываются), если можно разъясните пожалуйста мне
4. unichkin 1559 21.03.12 16:23 Сейчас в теме
Если вы посмотрите на скриншоты, и комментарии к ним, увидите - в главном окне: Оформлять конечный отчет - градиентом, или подготовленной таблицей. Разница в том, что на скриншоте, где все такое серенькое для вывода группировок используется одна и та же секция таблицы, просто программно оформляется, в цикле делаю переход от темно-серого к белому. Это, например если много суммовых колонок там для 5 группировок, и неохота каждую разукрашивать, или просто надо быстро сделать. А на втором скриншоте показана заранеее подготовленная таблица (т.е. все секции заранее разукрашены, и оформлены).
5. unichkin 1559 21.03.12 16:48 Сейчас в теме
+ у меня правда такого не было никогда (в смысле отчета, где одновременно надо было бы сформировать более пяти группировок), но если вдруг начальство попросило добавить пару группировок... СРОЧНО) То вывод одной секцией тоже довольно удобен. Останется добавить данные в ТЗ, и в список на форме. Не надо морочится с добавлением секций, и думать каким цветом, и каким шрифтом здесь и здесь ее выделить. Нужно просто с самого начала под себя подпилить немножко оформление, и все)
Но с градиентом есть небольшие проблемы. Видимо 1С7 не все цвета поддерживает, а только те 56, которые можно выбрать из диалога настройки формы в конфигураторе. На скриншоте заметно, что у второй и третьей группировок цвет одинаковый, хотя у первого обл.ЦветФона(75, 75, 75), а у второй - обл.ЦветФона(121, 121, 121) Как это обойти, я не знаю.
Делал такой пример, просто для себя -

Таб = СоздатьОбъект("Таблица");	

Для сч=1 По  255 Цикл
	
	Таб.ВывестиСекцию("Строка");
	Обл = Таб.Область(Таб.ВысотаТаблицы(), 2);
	Обл.ЦветФона(сч*65536 + сч*256 + сч);
	
КонецЦикла;

Таб.Показать();
Показать


И увидел вот такую картину: http://www.imagepost.ru/?v=vyvod_gradienta_v_1s.png
Было бы интересно узнать, как это обороть.
6. TrinitronOTV 14 22.03.12 06:50 Сейчас в теме
(5) большое спасибо за понятные мне разъяснения (разжовано досконально), что-то сам не смог осилить разницу в двух скриншотах
7. GenTay 02.07.12 20:07 Сейчас в теме
Очень интересная обработка. Скачаю, облизательно изучю.
8. nuclon 06.07.12 10:51 Сейчас в теме
А есть ли пример с группами номенклатуры, например, с итогами по каждой из вложенных групп?
9. unichkin 1559 06.07.12 11:56 Сейчас в теме
(8) Вы что-то путаете. Это не пример формирования данных, а пример ВЫВОДА данных на экран. Если вам нужно вывести группировки по групам номенклатуры, создайте тз, типа:

тз = СоздатьОбъект("ТаблицаЗначений");
тз.НоваяКолонка("Номенклатура");
тз.НоваяКолонка("Родитель");
тз.НоваяКолонка("Сумма");


В ПриОткрытии() пропишите

спГруппировок.ДобавитьЗначение("Номенклатура");
спГруппировок.ДобавитьЗначение("Родитель");

И дальше по аналогии с этим отчетом выводите данные на экран.
Хотя выводить отчеты с итогами по родителю порой проще другим алгоритмом, например прямо из выборки запроса.
10. nkure 07.08.12 13:08 Сейчас в теме
Спасибо автору, действительно хорошая обработка. Для себя забрал только кусок с выводом через Йоксель. Как вариант доработки, чем сам воспользовался, можно в процедуру "ВывестиСтруктуруГруппировок" добавить еще один параметр "КоличествоСтрок" и заменить им все "ВремДокумент.ВысотаТаблицы()". Добавил чтобы можно было после сгруппированных строк выводить всякие итоги и подвал.
11. CheBurator 3119 28.11.19 13:49 Сейчас в теме
Сюда бы еще вкрутить, как в NotaBene - вывод какой-то из группировок (задавать такую группировку) в колонках. Тогда получались бы шахматки. И чтобы колонки с числовыми значениями (если таких колонок больше одной) тоже можно было сворачивать. Было бы очень хорошо...
Оставьте свое сообщение