Настраиваемая распечатка таблицы значений в 1С:7.7

23.02.23

Разработка - Инструментарий разработчика

Предлагаемая обработка играет роль внешнего процессора вывода для любой таблицы значений. Может быть полезна при необходимости быстро настроить вывод в печатном/просматриваемом виде таблиц значений.

Скачать исходный код

Наименование Файл Версия Размер
обработка вывода таблицы значений
.ert 76,00Kb
2
.ert 76,00Kb 2 Скачать
(недо)шаблон-заготовка отчета, которые использует обработку
.ert 224,00Kb
0
.ert 224,00Kb Скачать

Прикладываются 2 файла: собственно обработка по выводу ТЗ и шаблон-заготовка отчета, которая использует эту обработку. Шаблон отчета приводится исключительно для рекомендации и копипасты, т.к. он содержит в себе неудачные решения, появившиеся от неопытности разработчика, но так и оставшиеся )).

Группировки могут быть только горизонтальные.

Логика работы - итоги рассчитываются путем последовательного свертывания  по измерениям с использованием промежуточных таблиц значений итогов всех уровней. Минус такого подхода – на больших таблицах значений может отнимать значительное время. Например, при большом отчете на практике возникали исходные таблицы по 200 тысяч строк (когда нельзя было уменьшить детализацию, т.к. для промежуточных расчетов нужно требовались детальные данные, которые потом все равно сворачивались) и весь процесс (выборка из DBF, расчет итогов, вывод в таблицу) мог занимать до 20 минут.

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

В начале текста модуля приведен подробный комментарий с описанием принимаемых параметров.

Если применять обработку для вывода результатов  отчетов, получается такая общая схема:

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

2. Обработать данные, например наложить дополнительные фильтры (которые по какой-то причине не удалось наложить в запросе – например из-за ограниченных возможностей родных запросов 77). – предлагается просто помечать в специальной колонке строку как «удаленную» (это быстрее чем удалять из ТЗ). Тут же можно применить такую функцию как глЗаполнитьКатегорииПоРодителямСпр – создадутся отдельные колонки по уровням иерархии нужных справочников для иерархического вывода. Можно выводить только иерархию и произвольное сочетание уровней иерархии. (например только родителей верхнего и третьего уровней). Иногда такая специфика нужна (например когда в иерархической структуре предприятия сквозным уровням придается какой-то дополнительный смысл). Или просто не нужно лезть на всю глубину иерархии и вывести только первые 2-3.

3. Сформировать описание вывода в таблицу. В том числе передать макет (по определенному шаблону приготовленный) либо использовать встроенный,  описать вычисляемые поля (удобно для неаддитивных ресурсов, например % рентабельности который надо рассчитывать как отношение маржи к себестоимости а не как сумму детальных записей).

Есть и другие возможности но думаю в настоящее время они уже мало актуальны-  едва ли кто захочет вникать именно в мои особенности построения отчетов на 77 (DBF без 1с++) – главное что если есть потребность быстренько вывести ТЗ в отчет с группировками, итогами, подписями-надписями, вычисляемыми колонками и нумерациями, то надеюсь моя обработка Вам поможет.

Ну и собственно вкратце как вызвать-то )

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

	СЗПараметров.ДобавитьЗначение(ТЗДанных);
	СЗПараметров.ДобавитьЗначение(СписКолИзм);
	СЗПараметров.ДобавитьЗначение(СписКолСумм);
	СЗПараметров.ДобавитьЗначение(СписКолРекв);
	СЗПараметров.ДобавитьЗначение(СписНадписей);
	СЗПараметров.ДобавитьЗначение(Табл);
	СЗПараметров.ДобавитьЗначение(ТЗДопПар); 
	СЗПараметров.ДобавитьЗначение(СЗВычКол);
	ОткрытьФорму("Обработка.ВывестиНаПечатьТЗ", СЗПараметров);  
 

Где все списки – это строки с разделенными запятыми именами полей.

Например

СписКолСумм = "Оборот";
СписКолИзм  = "Агент, Клиент";
СписКолРекв = "НомНаценка";
СписНадписей= "Агент/Клиент, Наценка, Оборот";

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

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

отчеты печатные формы вывод таблицы значений

См. также

Консоль запросов

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

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    21646    54    Gvozdod    8    

15

StartManager 1.4 - Развитие альтернативного стартера

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

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    166119    1868    Alexoniq    1596    

496

Tray Informer

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

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    32954    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

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

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21268    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

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

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18068    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

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

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36134    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

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

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    35025    248    adhocprog    51    

70
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 3119 03.07.16 18:28 Сейчас в теме
мутное описание какое-то

я пользуюсь http://infostart.ru/public/14794/

//здесь имеем ТЗ с нужными для вывода данными	
//...
//положим в список значений "счетные" колонки ТЗ
//(суммы, количества, себестоимости и прочее всякое что можно складывать...)
СЗПоказателей = СоздатьОбъект("СписокЗначений");
СЗПоказателей.ДобавитьЗначение("СуммаПродСт","Сумма");
СЗПоказателей.ДобавитьЗначение("СуммаКоличество","Кол-во");
//...
//вызовем универсальный отчет по ТЗ
//в списке значений передадим 2 параметра
// - список "счетных" колонок
// - саму таблицу значений для вывода
КонтекстВызова = СоздатьОбъект("СписокЗначений");
КонтекстВызова.ДобавитьЗначение(ТЗ,"ТаблицаЗначений");
КонтекстВызова.ДобавитьЗначение(СЗПоказателей,"СписокПоказателей");
//...
ПутьОбработки = ""; ИмяОбработки = "";
РасположениеФайла(ПутьОбработки, ИмяОбработки);
ОткрытьФорму("Отчет", КонтекстВызова, ПутьОбработки+"ОтчетПоТЗ.ert");
Показать
2. Vodoley 1 03.07.16 22:25 Сейчас в теме
ну чебуратор кажется крутой чувак ) думаю у него хорошая обработка (интересно насколько производительно делает шахматку и вообще вертикальные группировки). Моя обработка шахматку не выведет, но зато умеет нумеровать и вычисляемые поля (типа ресурс3 = ресурс2/(ресурс1-ресурс0) ) что вычисляется и для детальных записей и для всех уровней итогов. Описание попробую подправить, чтоб стало менее мутным, впрочем не думаю что в наше время кто-то станет ее использоваться как я в своей конфе - как единый процессор вывода всех табличных данных, а вот как простой инструмент вывода ТЗ может кому-то и пригодится. Тем более что в самом просто виде вызов это 3-4 строчки текста

СЗПараметров.ДобавитьЗначение(ТЗДанных);
    СЗПараметров.ДобавитьЗначение("Клиент, Товар");
    СЗПараметров.ДобавитьЗначение("Сумма, Количество");
    ОткрытьФорму("Обработка.ВывестиНаПечатьТЗ", СЗПараметров);  
3. Vodoley 1 03.07.16 22:26 Сейчас в теме
упс ) это Вы мне и написали )) а я в третьем лице - не сочтите за шизофрению ))
Оставьте свое сообщение