Печатная форма OpenOffice (ODT) с объединением строк в таблицу

30.03.18

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

Внешняя печатная форма для демонстрации возможности: 1) объединения выводимых строк в единую таблицу (MergeTable). 2) объединения ячеек таблицы используя (MergeCells). В публикации приведен код, расширяющий возможности модуля БСП: УправлениеПечатьюOOWriterКлиент. Тестировалось на платформе 8.3.10, в конфигурациях: ERP 2.0, БП 3.0, БГУ 2.0 и офисных пакетах: LibreOffise 5.3.7, OpenOffice 4.3.1

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Печатная форма OpenOffice (ODT) с объединением строк в таблицу:
.epf 36,56Kb
14 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Причина создания этой публикации в отсутствии в типовом модуле БСП "УправлениеПечатьюOOWriterКлиент" вывода строк объединением в таблицу.
Вот пример, типового кода вывода табличной части:

Область = УправлениеПечатьюКлиент.ОбластьМакета(Макет, Секции[ИмяМакета].СтрокаТаблица1);
УправлениеПечатьюКлиент.ПрисоединитьИЗаполнитьКоллекцию(ПечатнаяФорма, Область, ДанныеОбъекта.МассивТабличнаяЧасть1, Ложь);

Результат будет содержать отдельные строки, каждая из которых считается таблицей. Включить расчет формул или поменять ширину столбцов всей таблицы не получится.
Пример печатной формы Коммерческого предложения из ERP:
  

В предлагаемой обработке содержатся процедуры расширяющие возможности модуля формирования печатных форм OpenOffice Writer.
Процедур всего две:

1) Процедура ПрисоединитьКПредыдущейТаблице присоединяет выведенную при помощи УправлениеПечатьюКлиент.ПрисоединитьОбласть строку к предыдущей строке.

Процедура УправлениеПечатьюOOWriterКлиент_ПрисоединитьКПредыдущейТаблице(Знач ПечатнаяФормаHandler, Знач ОбластьHandler) Экспорт
	oFrame = ПечатнаяФормаHandler.Document.getCurrentController().Frame;
	dispatcher = ПечатнаяФормаHandler.ServiceManager.CreateInstance ("com.sun.star.frame.DispatchHelper");
	oViewCursor = ПечатнаяФормаHandler.Document.getCurrentController().getViewCursor();
	dispatcher.executeDispatch(oFrame, ".uno:GoUp", "", 0, ПолучитьComSafeArray()); 		          //позиционирование на предыдущей строке
	dispatcher.executeDispatch(oFrame, ".uno:MergeTable", "", 0, ПолучитьComSafeArray());             //присоединение таблицы
КонецПроцедуры

Результат:   

2) Процедура ОбъединитьКолонкиТаблицы объединяет перечисленные в массиве НомераКолонок колонки.
При вызове метода EntireColumn (выделить колонку) процессор OpenOffice Writer выделяет всю колонку таблицы. Поэтому для объединения нескольких диапазонов в единую таблицу нужно сначала объединять диапазоны присоединенных строк, а потом таблицы с набором строк присоединять к общей таблице. Пример реализован в прилагаемой обработке.

Процедура УправлениеПечатьюOOWriterКлиент_ОбъединитьКолонкиТаблицы(Знач ПечатнаяФормаHandler, Знач ОбластьHandler, НомераКолонок) Экспорт
	МаксимальныйНомерКолонки = 0;
	Для Каждого м Из НомераКолонок Цикл 
		МаксимальныйНомерКолонки = Макс(м, МаксимальныйНомерКолонки);			
	КонецЦикла;	
	oFrame = ПечатнаяФормаHandler.Document.getCurrentController().Frame;
	dispatcher = ПечатнаяФормаHandler.ServiceManager.CreateInstance("com.sun.star.frame.DispatchHelper");
	oViewCursor = ПечатнаяФормаHandler.Document.getCurrentController().getViewCursor();
	dispatcher.executeDispatch(oFrame, ".uno:GoUp", "", 0, ПолучитьComSafeArray()); 				  //позиционирование на предыдущей строке
	Для НомерКолонки = 0 По МаксимальныйНомерКолонки Цикл 
		ВыполнитьОбъединение = Ложь;
		Для Каждого НомерКолонкиОбъединить Из НомераКолонок Цикл 
			Если НомерКолонки = НомерКолонкиОбъединить Тогда 
				ВыполнитьОбъединение = Истина;
			КонецЕсли;	
		КонецЦикла;	
		Если ВыполнитьОбъединение Тогда 
			dispatcher.executeDispatch(oFrame, ".uno:EntireColumn", "", 0, ПолучитьComSafeArray());   //выделяются ячейки всей колонки (всех присоединенных на данный момент строк)
			dispatcher.executeDispatch(oFrame, ".uno:MergeCells", "", 0, ПолучитьComSafeArray());     //объединение ячеек
		КонецЕсли;
		dispatcher.executeDispatch(oFrame, ".uno:JumpToNextCell", "", 0, ПолучитьComSafeArray());     //переход к следующей ячейке
	КонецЦикла;		
	Для НомерКолонки = 0 По МаксимальныйНомерКолонки Цикл 
		dispatcher.executeDispatch(oFrame, ".uno:JumpToPreviousCell", "", 0, ПолучитьComSafeArray()); //возврат к предыдущей ячейке
	КонецЦикла;		
КонецПроцедуры

Результат: 

Демонстрационная обработка не связана объектами конкретной конфигурации и должна запускаться в любой конфигурации с БСП.

Обработку можно адаптировать под внешнюю печатную форму какого либо документа.

Если в обработке указать путь к временному файлу, то печатная форма будет записана по указанному адресу.

Если в расширении временного файла указать "doc", документ будет конвертирован в формат "MS Word 97".

При использовании OpenOffice 4.3.1 наблюдается баг: виден процесс заполнения документа и шаблон остается открытым - лучше использовать последние версии Офиса.

Вступайте в нашу телеграмм-группу Инфостарт

OpenOffice libreoffice ODT com.sun.star MergeTable MergeCells Макет Объединение УправлениеПечатьюКлиент

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    206407    1133    411    

1030

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    37078    212    111    

199

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

16000 руб.

10.11.2023    16859    73    39    

89

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    24463    65    28    

93

Инструментарий разработчика Программист 1С v8.3 1С:Управление нашей фирмой 3.0 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    35477    129    53    

171

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    2071    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

6000 руб.

07.02.2018    107883    249    100    

313
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Elvina 5 28.12.18 12:30 Сейчас в теме
Спасибо за обработку, очень помогла! А не подскажете как картинки вставлять?
Оставьте свое сообщение