Печать объекта Дерево+Таблица внешней компоненты FormEx

Опубликовал Александр Венгер (venger) в раздел Программирование - Внешние компоненты

Внешний отчет/обработка - печатает объект "Дерево+Таблица" в древовидной форме, используя внешнюю компоненту Yoksel. Выводит столбцы с учетом параметров колонок "ТаблицыЗначений" (заголовка, форматной строки, положения). Благодаря использованию внешней компоненты Yoksel, выводит на печать с учетом вложенности узлов, создавая соответствующие группировки в печатной форме, которые сохраняются и при сохранении в Excel.

Если Вы не знаете, что такое "Дерево+Таблица" и с чем его едят, познакомиться можно тут: //infostart.ru/public/74192/

Если уже знаете, то продолжим. Скачайте внешнюю компоненту Yoksel с сайта http://yoksel.net.ru.  Последнюю стабильную сборку можно взять тут: http://yoksel.net.ru/Hotfixes. Из скачанного архива нужно распаковать файл «SpreadSheet.dll» в папку конфигурации или в папку «Bin» платформы 1С 7.7. После чего, эту внешнюю обработку «ПечатьДерева.ert» положите в подпапку «ExtForms» папки конфигурации.

Теперь в коде любой обработки, отчета, справочника и т.д. Вашей кофигурации, где есть объект Дерево+Таблица, создайте кнопку «Печать», в формуле этой кнопки укажите процедуру «Печать()» и в процедуре «Печать()» в модуле формы обработки, отчета, справочника и т.д. напишите такой код (исключая комментарии, конечно):

Процедура Печать()
// Список параметров печати
СпПарам = СоздатьОбъект("СписокЗначений");
// ТЗ - "ТаблицаЗначений", которая является объектом "Дерево+Таблица"
СпПарам.ДобавитьЗначение(ТЗ, "Дерево");
// "Йоксель: Дерево+Таблица" - необязательный параметр, можно задать
// строку заголовка печатной формы
СпПарам.ДобавитьЗначение("Йоксель: Дерево+Таблица", "Заголовок");
// "ИдКолонки,ИдКолонки,ИдКолонки" - необязательный параметр, список
// идентификаторов колонок "ТаблицыЗначений" через запятую, которые
// нужно вывести, кроме служебных. Служебные - "Ветка","Значек","ИмяВетки".
// Если не задан или пустая строка - то выводит все колонки, кроме
// служебных, но "ИмяВетки" выводится всегда.
СпПарам.ДобавитьЗначение("ИдКолонки,ИдКолонки,ИдКолонки", "Колонки");
// Флаг выводить узлы свернутыми или нет. Если =1, то все развернуты.
// Если =0, то все свернуты. Необязательный параметр, по умолчанию =0.
СпПарам.ДобавитьЗначение(1, "Развернуть");
// Собственно вывод на печать
ОткрытьФорму("Отчет", СпПарам, КаталогИБ()+"ExtForms\ПечатьДерева.ert");
КонецПроцедуры
// Печать

И теперь при нажатии на нашу кнопку «Печать» - откроется печатная форма с нашим деревом. Щелкая мышкой по плюсикам/минусикам (слева), можно разворачивать и сворачивать узлы, наслаждаясь полученным эффектом.

 

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

Наименование Файл Версия Размер
ПечатьДерева.zip
.zip 7,64Kb
17.08.10
168
.zip 7,64Kb 168 Скачать

См. также

Комментарии
1. Алексей Плутенко (Noy) 1054 25.08.10 14:27 Сейчас в теме
А зачем
Служебные - "Ветка","Значек","ИмяВетки".


из-за этого никакой универсальности нет. в готовую конфу это не прикрутишь
:(
2. Александр Венгер (venger) 2034 27.08.10 14:04 Сейчас в теме
(1) Да, надо будет по номерам сделать
3. Николай Карнейчик (mikolamail) 05.09.10 15:22 Сейчас в теме
В процедуре "ПечатьДеревоПлюсТаблица(Дерево,Колонки,Таблица,ГруппыСтрок,СтрокаДерева="",Счетчик=0,НижниеУровни=0) "

надо объявить переменную:

Перем Сч;

Иначе происходит зацикливание процедуры, когда количество элементов на разных уровнях разное!
4. Иваныч Иванов (Иваныч) 23 22.11.13 15:17 Сейчас в теме
(1) Noy, Чего Вы так пессимистично, ведь руки-то у Вас есть. А что неясно, автора спросите и все получится
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа