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

Публикация № 121675

Разработка - Практика программирования

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

Написание отчета происходит в два этапа. Сбор данных, и вывод их на экран. И реализация именно вывода группировок отчета из таблицы значений на экран в платформе 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

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

Наименование Файл Версия Размер
Пример.ert

.ert 215,50Kb
06.06.13
21
.ert 215,50Kb 21 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. smitti911 21.03.12 13:26 Сейчас в теме
А можно прямую ссылку на Вашу обработку .
P.S. на счету 0.10$m
2. unichkin 21.03.12 13:31 Сейчас в теме
Да, скиньте мыло в личку я отправлю.
3. TrinitronOTV 6 21.03.12 15:34 Сейчас в теме
что-то я не понял разницу в двух сформированных отчетах (цвета естественно мною не учитываются), если можно разъясните пожалуйста мне
4. unichkin 21.03.12 16:23 Сейчас в теме
Если вы посмотрите на скриншоты, и комментарии к ним, увидите - в главном окне: Оформлять конечный отчет - градиентом, или подготовленной таблицей. Разница в том, что на скриншоте, где все такое серенькое для вывода группировок используется одна и та же секция таблицы, просто программно оформляется, в цикле делаю переход от темно-серого к белому. Это, например если много суммовых колонок там для 5 группировок, и неохота каждую разукрашивать, или просто надо быстро сделать. А на втором скриншоте показана заранеее подготовленная таблица (т.е. все секции заранее разукрашены, и оформлены).
5. unichkin 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 6 22.03.12 06:50 Сейчас в теме
(5) большое спасибо за понятные мне разъяснения (разжовано досконально), что-то сам не смог осилить разницу в двух скриншотах
7. GenTay 02.07.12 20:07 Сейчас в теме
Очень интересная обработка. Скачаю, облизательно изучю.
8. nuclon 06.07.12 10:51 Сейчас в теме
А есть ли пример с группами номенклатуры, например, с итогами по каждой из вложенных групп?
9. unichkin 06.07.12 11:56 Сейчас в теме
(8) Вы что-то путаете. Это не пример формирования данных, а пример ВЫВОДА данных на экран. Если вам нужно вывести группировки по групам номенклатуры, создайте тз, типа:

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


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

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

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

См. также

Пилотный проект ФСС. Заявление, реестр, опись, выгрузка в формате xml версия 1.7.2.

Практика программирования Работа с интерфейсом Зарплата Зарплата v77::Расчет 1С7:ЗиК Россия ФОМС, ПФ, ФСС Абонемент ($m)

Типовые объекты конфигурации не изменены, поэтому подходит для любого релиза ЗиК.

1 стартмани

29.07.2016    11948    21    Cvetic    1    

Загрузка процессора 100% на 1С Предприятие 7.7 или еще один вариант odbc33.dll

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Версия vk_TerminalSleep для работы совместно с "секретным релизом" на Windows 7.

1 стартмани

07.01.2014    11859    16    Ma_X_X    1    

Ошибка в регламентированной отчетности за 2-й квартал (форма-4 ФСС: Титульный лист, релиз 13q2001)

Регламентированная отчетность Практика программирования v77::БУ 1С7:Бух Россия БУ ФОМС, ПФ, ФСС Абонемент ($m)

В регламентированной отчетности за 2-й квартал (форма-4 ФСС: Титульный лист, релиз 13q2001) для конфигурации "Бухгалтерский учет, редакция 4.5" при открытии ранее сохраненного титульного листа дата подписания всегда будет "01.04.2013" независимо от того, какая там была дата при сохранении.

1 стартмани

27.06.2013    13664    0    user77    8    

Класс 1С++ для программного добавления изображений/текста/ШК в таблицу Промо

Работа с интерфейсом openconf v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Необходимо добавить в сформированную таблицу изображения/текста/ШК (81 тип ШК) с прозрачным фоном? Вставить фирменный логотип? Быстро организовать оформление документов в корпоративном стиле? Данная разработка поможет в этом!

1 стартмани

03.06.2012    227976    81    zarius    112    

Групмейкер для таблицы значений.

Инструментарий разработчика Практика программирования Универсальные обработки v7.7 v77::ОУ v77::БУ v77::Расчет 1cv7.md Абонемент ($m)

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

1 стартмани

20.11.2012    24113    4    dusha0020    15    

Класс "ЗаписьXML" для 1С++, аналог одноименного класса из 8.x.

Обмен через XML Практика программирования v7.7 openconf 1cv7.md Абонемент ($m)

Мне понадобилось перенести работающий код выгрузки данных в xml из 1С 8.2 в 7.7. Чтобы минимизировать исправления - написал класс-эмулятор класса ЗаписьXML из 8.2. Теперь при переносе кода из 1С8.2 в 7.7 количество необходимых изменений - минимально.

1 стартмани

26.10.2012    16554    2    curdate    8    

Сравнение и объединение диалогов форм МД файла Промо

Инструментарий разработчика Работа с интерфейсом v77::ОУ v77::БУ v77::Расчет 1cv7.md Абонемент ($m)

Обработка анализирует диалоги форм двух мдшников и показывает изменения в них в удобоваримом виде. Авmop: Peуmoв Дмumpuй, e-mail: dimoff66@mail.ru, icq: 177067865 Автору огромное спасибо!

1 стартмани

09.09.2008    26053    20    WiseSnake    27    

Подготовка сведений для ПФР - исправление некорректного формирования отрицательных сумм взносов с сумм превышения максимального предела. Конфигурация: ЗИК 7.70.328

Практика программирования Зарплата Зарплата v77::Расчет 1С7:ЗиК Россия ФОМС, ПФ, ФСС Абонемент ($m)

Подготовка сведений для ПФР - исправление в формирование сведений персонифицированного учета, при превышении максимального предела

1 стартмани

22.10.2012    19445    0    u_n_k_n_o_w_n    9    

Выгрузка на сайт через EXСEL, с таймером (с повторениями выгрузки через заданный промежуток времени). 7.7 ТиС Украина

Загрузка и выгрузка в Excel Практика программирования WEB v77::ОУ 1С7:ТиС Украина Абонемент ($m)

Данная обработка состоит из двух обработок, т.к. таймер в 1С реализован крайне криво, я старался как мог. Первая обработка запускает таймер, и настройки выгрузки (а точнее вторую обработку, которая выгрузкой и занимается непосредственно). Выгрузка данных в EXСEL осуществляется согласно логу, т.е. выгружаются исключительно те данные, которые редактировали ближайшие два дня. Также обработка автоматически удаляет все экселевские файлы, лежащие в указанной папке более трех дней (можно эту функцию отключить) Подробная инструкция по установке в описании

1 стартмани

03.09.2012    10685    3    serko8547    1    

Группировка данных в таблице значений (1С:7.7)

Работа с интерфейсом Универсальные функции v7.7 v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Надоело каждый раз морочиться с итогами по группам данных в таблице значений при выводе отчета на печать! Вот и накидал простое решение... может и боян - но мне нравится)

1 стартмани

08.08.2012    21938    8    Lancelot-2M    9    

Процесс бар (индикатор состояния выполнения цикла) Промо

Практика программирования v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Полезная "красотулька" в вашем документе. Будет очень полезна для медленных компьютеров, где не всегда понятно, работает-ли обработка или 1с-ка тупо "зависла"

14.04.2008    24787    2    ded00786    38    

Редактор дат периода

Инструментарий разработчика Работа с интерфейсом openconf v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Для того чтобы обозначить (выбрать) период приходиться пользоваться встроенными возможностями 1С или добавлять в диалог дополнительные возможности, кнопочки, описывать в модулях процедуры и функции... С помощью данной обработки Вы можете интегрировать удобства выбора дат периода посредством одной команды-вызова!

1 стартмани

01.08.2012    8944    0    6arop    1    

Корректировка EXCEL–файла. Восстановление «длинных» строк.

Практика программирования Загрузка и выгрузка в Excel Внешние источники данных v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Обработка предназначена для борьбы с обрезанием строк (не более 255 символов) при записи MXL-файла в EXCEL.

1 стартмани

13.07.2012    16449    4    Ягг    1    

Календарь на справочнике

Работа с интерфейсом v77::ОУ v77::БУ 1С7:Бух 1С7:ТиС Россия Абонемент ($m)

Календарь на справочнике

1 стартмани

05.06.2012    6205    0    trama    4    

Небольшое украшение для 1С-Предприятие-7.7 Промо

Работа с интерфейсом v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Поздравляю всех девушек с 8 марта! Желаю им цвесть-расцветать и радовать глаз всех окружающихю По поводу такого случая предлагаю небольшое украшение для 1С-Предприятие-7.7 + тематичекую подборку слайдов.

1 стартмани

28.12.2011    21888    4    yuraos    23    

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

Практика программирования Зарплата Зарплата v77::БУ 1С7:Комплекс Россия БУ Абонемент ($m)

Убираем копейки округления при автоформировании проводок в 1С Комплексная 7.7.

1 стартмани

27.05.2012    12012    0    myobshenie    4    

Интерфейс для удаленного рабочего стола для Планшета 7'

Работа с интерфейсом v77::ОУ 1С7:ТиС Россия Абонемент ($m)

Интерфейс для удаленного рабочего стола для Планшета 7'.

1 стартмани

16.05.2012    8103    2    volsh77    2    

Внешний отчет Книга продаж 2012 для старых релизов Бухгалтерии 7.7 (протестировано на релизе 445 типовой конфигурации).

Практика программирования Анализ учета Учет доходов и расходов Розничная торговля Учет доходов и расходов Розничная торговля v77::БУ 1С7:Бух Россия БУ Абонемент ($m)

Внешний отчет Книга продаж, форма применяемая с 2012 года, для старых релизов Бухгалтерии 7.7 (протестировано на релизе 445 типовой конфигурации).

1 стартмани

29.04.2012    10106    2    ddv68    11    

Гиперссылки в диалогах форм 1С:Предприятие-7.7 Промо

Работа с интерфейсом v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Правдоподобная имитация гиперссылок при двойном клике мышью на надписях в диалогах форм 1С:Предприятие-7.7

1 стартмани

29.12.2011    24322    5    yuraos    16    

Как я создал внешнюю обработку из встроенной

Практика программирования v77::ОУ 1С7:ТиС Россия Абонемент ($m)

Выбранный "сделать не проведенным" работает как провести

1 стартмани

27.04.2012    7668    1    AlexxxMksv    12    

Внешний отчет Книга покупок 2012 для старых релизов Бухгалтерии 7.7

Практика программирования Анализ учета Розничная торговля Розничная торговля v77::БУ 1С7:Бух Россия БУ Абонемент ($m)

Внешний отчет Книга покупок 2012 для старых релизов Бухгалтерии 7.7 (протестировано на релизе 445 типовой конфигурации).

1 стартмани

26.04.2012    11039    1    ddv68    8    

Печать РКО и ПКО за период

Печатные формы документов Практика программирования Кассовые операции Кассовые операции v77::БУ 1С7:Бух 1С7:Комплекс Россия БУ Абонемент ($m)

Пакетная печать приходных и расходных кассовых ордеров за период. Возможность отправить документы на просмотр или сразу на печать

1 стартмани

25.04.2012    7408    1    Leannet    7    

Добавление стран из классификатора сохраненного в таблице значений

Практика программирования v77::ОУ 1С7:ТиС Россия Абонемент ($m)

В связи с тем, что в новой форме счет-фактуры указываются коды стран-производителей товара, столкнулся с ситуацией, когда в классификаторе стран находится много стран-дублей, а коды стран не соответствуют общероссийскому классификатору. Чтобы в дальнейшем, при добавлении стран, ситуация не повторялась решено было реализовать механизм позволяющий только выбирать страну из классификатора (предварительно сохраненного в ТаблицеЗначений).

1 стартмани

23.04.2012    6353    0    noknown    2    

Ошибка при формировании отчета 4-ФСС USN_12q1007_05.04.2012

Регламентированная отчетность Практика программирования Закрытие периода Закрытие периода v77::БУ 1С7:Бух Россия БУ ФОМС, ПФ, ФСС Абонемент ($m)

Исправление ошибки при формировании ФСС раздел 7. Регламентированные отчеты. УСН. 7.7.

1 стартмани

13.04.2012    8769    0    sasha1610    1    

Выбор строки из ТаблицыЗначений

Практика программирования v7.7 openconf 1cv7.md Россия Абонемент ($m)

В 1С 7.7 легко предоставить пользователю выбор из списка значений, или Таблицы значений. Но уважающий себя программист не будет пользоваться методом ТаблицаЗначений.ВыбратьСтроку(), так как стандартный диалог мягко говоря несимпатичен. Предлагаю класс для 1С++, который позволит использовать более удобный диалог выбора строки из таблицы значений.

1 стартмани

11.04.2012    17459    4    curdate    6    

Выяснение ID'а объекта в базе SQL по его внутреннему идентификатору 1С

Практика программирования Универсальные функции openconf v77::БУ 1cv7.md Абонемент ($m)

Обработка позволяет узнать ID в базе SQL конкретного агрегатного объекта конфигурации (метаданных) 1С 7.7.

1 стартмани

27.03.2012    28658    6    born85    41    

Просмотр имен sql реквизитов метаданных 1с 7.7

Практика программирования v7.7 openconf 1cv7.md Россия Абонемент ($m)

Обработка показывает sql имена таблиц и столбцов, а также индексов (для оптимальных запросов) построенных по метаданным 1с 7.7. Удобно при написании прямых sql запросов, или запросов из др. баз данных.

1 стартмани

27.03.2012    13770    5    born85    13    

Проверка и исправление реквизитов контрагентов в соответствии с сайтом STA.GOV.UA

Разное Практика программирования v77::ОУ v77::БУ 1cv7.md Украина Абонемент ($m)

Отчет-Обработка для заполнения в украинской конфигурации реквизиты контрагентов в соответствии с сайтом STA.GOV.UA. Проверку можно осуществлять как по ИНН таки по ЕДРПОУ. Можно сделать только отчет. А если понадобится то установив соответствующие флажки сделать необходимые изменения. Можно делать как для отдельного контрагента (выбрав его в отчете) так и для всех контрагентов сразу (для этого поле контрагента оставить пустым). Сделал Отдельно для "ТиС" и Отдельно для "Бухг учет"- Конфигурации для Украины

1 стартмани

12.03.2012    11188    0    volodya1122    6    

Групповое изменение порядка обхода в диалоге (OpenConf 7.7)

Практика программирования v8 openconf 1cv8.cf Россия Абонемент ($m)

Скрипт для OpenConf, позволяет расположить выделенные элементы диалога в порядке обхода за выбранным элементом.

1 стартмани

21.02.2012    7792    1    panda-34    1    

Прогрессбар для конфигураций 7.7

Работа с интерфейсом Универсальные функции v77::ОУ v77::БУ v77::Расчет 1cv7.md Абонемент ($m)

Простой прогрессбар для конфигураций 7.7. Реализован штатными средствами, работает с любым видом учета

1 стартмани

11.02.2012    7879    0    Gagarick    3    

Исправление ошибки в печати справок 2-НДФЛ в 1С Бухгалтерии 7.7 535 релиз и УСН 189

Справки Практика программирования Зарплата Зарплата v77::БУ 1С7:Бух Россия БУ НДФЛ Абонемент ($m)

При подборе в печати справок возникает ошибка "Если Элемент.ОсновнойЭлемент <> Элемент Тогда {Отчет.СправкиПоНДФЛ.Форма.Модуль(4782)}: Поле агрегатного объекта не обнаружено (ОсновнойЭлемент)"

1 стартмани

30.01.2012    18801    0    Intelligent    21    

Редактирование операции документа

Обработка документов Практика программирования v77::БУ 1С7:БМО 1С7:Бух 1С7:Комплекс 1С7:ПУБ 1С7:ББУ Россия Абонемент ($m)

Обработка для редактирования операции произвольного документа.

1 стартмани

18.01.2012    11332    0    Ягг    3    

Взаимозачет по партиям для регистра "ПартииНаличие"

Практика программирования Анализ учета Учет ТМЦ Учет ТМЦ v77::ОУ 1С7:ТиС Россия БУ Абонемент ($m)

В процессе работы с конфигурацией ТИС, в разрезе одной номенклатуры могут накапливаться как положительные так и отрицательные остатки по различным партиям. Данная обработка содержит модуль проведения регламентного документа, который можно было бы создать в конфигурации и условно назвать "КорректировкаПартий", посредством которого можно провести взаимозачёт таких партий.

1 стартмани

02.01.2012    10562    30    Digo65    19    

Хранение любых файлов в конфигурации бух 4.5 1С77 с привязкой их к справочникам и документам (облегченная)

Практика программирования v77::БУ 1cv7.md Абонемент ($m)

Небольшая доработка типовой конфигурации 1С77 Бухгалтерский учет 4.5. После доработки конфигурация позволяет "крепить" к любым документам и справочнику Договоры любые файлы (картинки, сканы документов, xls файлы расчетов, rtf файлы документов и договоров).

1 стартмани

22.12.2011    7426    1    zspr    8    

Хранение любых файлов в конфигурации бух 4.5 1С77 с привязкой их к справочникам и документам

Практика программирования v77::БУ 1С7:Бух Абонемент ($m)

Небольшая доработка типовой конфигурации 1С77 Бухгалтерский учет 4.5. После доработки конфигурация позволяет "крепить" к любым справочникам и документам любые файлы (картинки, сканы документов, xls файлы расчетов, rtf файлы документов и договоров).

1 стартмани

20.12.2011    8732    1    zspr    30    

Шаблон помощника 7.7.

Работа с интерфейсом v77::ОУ v77::БУ v77::Расчет 1cv7.md Россия Абонемент ($m)

Шаблон (каркас) пошагового исполнения неких действий.

1 стартмани

28.11.2011    17214    1    Арчибальд    24    

Миниклавиатура для ТиС 9.2 7.7

Практика программирования Учет ТМЦ Учет ТМЦ v77::ОУ 1С7:ТиС Россия УУ Абонемент ($m)

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

1 стартмани

22.11.2011    6061    0    volsh77    3