Печать значения осуществляется просто:
печтз = СоздатьОбъект("КПечатьТЗ");
печтз.Печать(данные, заголовок);
Результат выводится в объект Таблица, никаких модальных окон, что позволяет вывести ее на принтер, делать стандартный поиск значений, а также с помощью расшифровки поддерживается двойной клик по ячейке.
Подключается класс так:
- в файл defcls.prm добавить строчку:
//#include «КПечатьТЗ.defcls.prm» - файл КПечатьТЗ.defcls.prm положить рядом с defcls.prm
- файл КПечатьТЗ.ert положить в ExtFormsClasses
Также есть функция сохранения результриующей таблицы в файл:
Сохранить(данные, имя_файла_без_расширения, добавить_время_в_имя_файла); , где:
имя_файла_без_расширения — только имя без пути, файл будет сохраняться в каталог пользователя, расширение файла будет mxl;
добавить_время_в_имя_файла — если не 0, то к имени файла будет добавлены дата и время формирования таблицы
Скачать вашу разработку и немного переделал, чего и вам советую:
1. Добавьте возможность печатать ТЧ документа;
2. Сделайте авто-ширину столбиков, ибо большая ТЗ смотрится не читабельно (если много пустых столбиков либо значения на пару символов). Я у себя реализовал это просчетом максимальной длинны значения в каждом столбике при выводе значений на печать (дабы дважды не проходить ТЗ). После вывода всех строк, выполнял метод Таб.Область(<?>,<?>,<?>,<?>).ШиринаСтолбца(<?>), передавая в ширину значение длинны в каждому столбику. Получилось довольно таки не плохо.
3. Итоги убрал, они противоречили парадигме второго пункта.
+ Несколько, на мой взгляд, недочетов:
1. При использовании итогов вы создаете все столбики с исходной ТЗ, а нужно создавать только те столбики, которые имеют числовой формат;
2. Использовать расшифровку для простых типов данных нет смысла, они лишь мешают и засоряют результирующую таблицу;
3. Нет необходимости использовать отдельную секцию для вывода данных с отрицательным значением. Достаточно установить контроль ячейки: Красный.
А во всем остальном зачет. Взял себе на вооружение.
Спасибо за отзыв, хорошие идеи.