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

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

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

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
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 8 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 8 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 3456 28.11.19 13:49 Сейчас в теме
Сюда бы еще вкрутить, как в NotaBene - вывод какой-то из группировок (задавать такую группировку) в колонках. Тогда получались бы шахматки. И чтобы колонки с числовыми значениями (если таких колонок больше одной) тоже можно было сворачивать. Было бы очень хорошо...
Оставьте свое сообщение

См. также

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

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

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

1 стартмани

29.07.2016    13284    21    Cvetic    1    

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

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

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

1 стартмани

07.01.2014    13277    37    Ma_X_X    11    

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

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

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

1 стартмани

27.06.2013    14766    18    user77    8    

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

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

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

1 стартмани

03.06.2012    240673    230    zarius    113    

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

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

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

1 стартмани

20.11.2012    25847    58    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    18025    14    curdate    8    

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

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

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

1 стартмани

09.09.2008    27888    1287    WiseSnake    27    

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

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

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

1 стартмани

22.10.2012    20893    49    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    11652    15    serko8547    1    

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

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

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

1 стартмани

08.08.2012    25455    35    Lancelot-2M    9    

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

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

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

14.04.2008    26654    870    ded00786    38    

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

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

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

1 стартмани

01.08.2012    10214    6    6arop    1    

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

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

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

1 стартмани

13.07.2012    18237    14    Ягг    1    

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

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

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

1 стартмани

05.06.2012    7236    7    trama    4    

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

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

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

1 стартмани

28.12.2011    23590    57    yuraos    23    

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

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

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

1 стартмани

27.05.2012    13474    3    myobshenie    4    

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

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

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

1 стартмани

16.05.2012    9255    29    volsh77    2    

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

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

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

1 стартмани

29.04.2012    11383    161    ddv68    11    

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

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

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

1 стартмани

29.12.2011    25739    33    yuraos    16    

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

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

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

1 стартмани

27.04.2012    8533    9    AlexxxMksv    12    

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

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

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

1 стартмани

26.04.2012    12106    159    ddv68    8    

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

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

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

1 стартмани

25.04.2012    8437    38    Leannet    7    

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

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

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

1 стартмани

23.04.2012    7268    9    noknown    2    

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

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

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

1 стартмани

13.04.2012    9748    2    sasha1610    1    

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

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

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

1 стартмани

11.04.2012    18948    26    curdate    6    

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

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

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

1 стартмани

27.03.2012    30440    15    born85    41    

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

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

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

1 стартмани

27.03.2012    15141    44    born85    13    

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

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

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

1 стартмани

12.03.2012    12228    8    volodya1122    6    

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

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

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

1 стартмани

21.02.2012    8538    13    panda-34    1    

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

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

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

1 стартмани

11.02.2012    9363    33    Gagarick    3    

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

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

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

1 стартмани

30.01.2012    20730    72    Intelligent    21    

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

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

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

1 стартмани

18.01.2012    12237    29    Ягг    3    

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

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

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

1 стартмани

02.01.2012    11815    123    Digo65    19    

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

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

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

1 стартмани

22.12.2011    8463    17    zspr    8    

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

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

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

1 стартмани

20.12.2011    9955    41    zspr    30    

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

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

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

1 стартмани

28.11.2011    18539    29    Арчибальд    24    

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

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

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

1 стартмани

22.11.2011    7039    10    volsh77    3