Имя: Пароль:
1C
 
Изменение docx как XML в 1С КА
☑
0 K1RSAN
 
13.10.26
✎
12:11
В общем появилась задача заполнить параметры в документе Word данными из 1С.
Решил попробовать решить НЕ ЧЕРЕЗ Ком объект, вдруг на сервере не будет офиса.
Нашел вариант, что можно распаковать docx и получить внутри файл XML и обработать его.
Для заполнения обычных параметров всё понятно (хотя деление на XML порой неадекватно по полям).
Но надо ещё заполнить таблицу с товарами, количество строк может меняться.
И возник вопрос, как это реализовать.
Кто-нибудь пробовал? Где можно посмотреть?
1 RomanYS
 
13.10.26
✎
12:21
(0) БСП же, в демо базе всё есть
2 Garykom
 
гуру
13.10.26
✎
12:53
(0) Было, делал такое
В ДО 2.1 требовалось, даже целый модуль в итоге наваял
Поищу
3 Garykom
 
гуру
13.10.26
✎
13:13
(2)+ Нашел, но код не могу выкладывать

Суть все делалось да методом xml-инъекции
https://infostart.ru/1c/articles/590918/
Только не своя работа с файлом docx (по сути архива zip где внутри xml)

А через методы конфы, внедрение в них с доработкой ДО 2.1 взятой из комментов
https://infostart.ru/1c/articles/259510/

И допом наваял свой общий модуль, где функции/процедуры
Для удобного создания нужной xml-инъекции для таблицы с нужным числом колонок, установкой текста шапки с указанием шрифтов, размеров и т.д.
И добавлением строк в эту таблицу так же заполнением нужными данными с нужными стилями, форматами
На выходе готовая строка - кусок xml для передачи в БСП
4 Garykom
 
гуру
13.10.26
✎
13:11
(3)+ Для выяснения "что вставлять" банально создавал пустой файлик word, делал как надо, записывал
И затем изучал что внутри docx
Конечно word сильно замудренно сам добавляет, много лишнего, можно упрощать xml и сильно
5 K1RSAN
 
13.10.26
✎
13:19
(3) Примерно так и пытаюсь, только вот ХЗ, как таблицу сделать, там все колонки разной ширины и т.д.
Плюс внизу итоговые строки, которые есть объединение нескольких колонок.
6 K1RSAN
 
13.10.26
✎
13:20
Пробовал продублировать уже существующую строну, но там же надо найти место куда вставить, не находит
7 Garykom
 
гуру
13.10.26
✎
13:25
(5) (6) Я ж написал
Создай пустой файлик ворда, сделай нужную табличку в нем в самом ворде, сохрани
Затем добавь еще строчку, снова сохрани
И сравни между файликами что поменялось

Не надо искать нужное место для вставки одной строки таблицы
Надо готовить и вставлять целиком таблицу, вместо параметра/метки в шаблоне docx
8 K1RSAN
 
13.10.26
✎
13:25
(7) Теперь понял, спасибо
9 K1RSAN
 
13.10.26
✎
14:17
(7) Спасибо, получилось