Из Word в табличный документ

18.08.21

Разработка - Универсальные функции

Быстро и просто: текст, списки, таблицы. Готовый код

Началось с того, что возникла задача сделать средствами mxl вывод документа, который предоставили в виде MS Word. Поскольку перекидывать в макет всё это было нудно, и была вероятность ошибиться, я слегка автоматизировал процесс. Именно слегка, т.к. всё равно ещё надо разбить на секции, сделать для таблиц вывод содержимого вместо пустых ячеек, подставить конкретику в нужных абзацах, итд. Но трудоёмкость стала в разы меньше.

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

Сам механизм использует СОМ, в режиме чтения вытаскивая из документа самое основное. Получающийся табличный документ единый по разметке ширин областей, т.е. без сюрпризов (хотя, может, наоборот надо бы каждый абзац в свой формат).

Умеет абзацы с минимумом форматирования, простые и нумерованные списки, таблицы.

 
 Весь исполняемый код

 

В коде я также постарался указать потенциально нужные возможности (на будущее, если понадобится) и некоторые нюансы. Пока рассчитано на А4 и документ из одной "колонки", это наиболее частые случаи в практике. Картинки вытаскивать не стал, но при нужде можно докрутить. Возможно, потребуется "пристрелка" секций по высоте.

Работать будет на любых 8.2 и 8.3, и на сервере, и на клиенте. В приведённом примере клиентский код.

Естественно, это БАЯН. Такое наверняка делали, не могли не делать. И, конечно, через OpenXML и прочая. Но я не заморачивался, да и хмл этот временами подкидывает неочевидные сюрпризы...

Кому пригодится, по-быстрому наваять макет по документу, например - вот и хорошо.

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

Word в табличный документ mxl doc макет печатной формы COM-обмен с

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Загрузка и выгрузка в Excel Универсальные функции Программист 1С:Предприятие 8 Россия Бесплатно (free)

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    5391    Abysswalker    11    

47

Универсальные функции Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

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

14.05.2025    9971    DeerCven    15    

64

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    60985    dimanich70    85    

175

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    8401    7    John_d    13    

59

Универсальные функции Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    76552    atdonya    31    

74

Универсальные функции Программист 1С:Предприятие 8 Бесплатно (free)

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

30.11.2023    10578    ke.92@mail.ru    17    

68
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Дмитрий_DGR 20.08.21 11:27 Сейчас в теме
Получилось, большое спасибо, давно ждал такую обработку!
user1741387; +1 Ответить
2. gubanoff 63 23.08.21 13:45 Сейчас в теме
(0) Пожалуйста, добавьте готовую обработочку к статье для удобства
nnafanail; Spacer; unknown181538; +3 Ответить
3. Perfolenta 207 25.08.21 01:25 Сейчас в теме
Спасибо, работает... хотя, я пока только на простых документах проверил, но уже понятно, что полезная штука...
4. ekonoya 05.09.21 13:34 Сейчас в теме
Благодарю, Вы очень выручили
5. fixin 4340 08.02.22 15:10 Сейчас в теме
Спасибо, обернул в обработку, работает.
Правда в УФ пришлось убрать ОбработкаПрерыванияПользователя.
Результат не так уж и много полировать пришлось.
Есть свои артефакты, конечно, но куда ж без них.
6. unknown181538 166 05.10.22 03:02 Сейчас в теме
Падала из-за недопустимых символов XML - добавил замену - все конвертнулось. По первому впечатлению - прилично. Вот код, обернутый в обработку.
Прикрепленные файлы:
КонвертнутьWORD.epf
enthusiast; user2189623; Spacer; Prad2002; kawaietz; baracuda; Breas; Ermigen; vanyek; Светлый ум; Ali_q; KoC_one; citkis; user591389_aska_rabota; graphbuh; assa; +16 Ответить
9. Dima1205 154 19.03.24 09:44 Сейчас в теме
Огромное спасибо
(6) Ради эксперимента конвернул формат не A4 (Закоментил код).По итогу могу сказать - справилась на 3-ку. Этого более чем достаточно.
7. webester 26 28.08.23 05:34 Сейчас в теме
(0)Огромное спасибо тебе. На первый взгляд работает вполне себе прилично.
8. ivprovotorov 67 13.12.23 09:32 Сейчас в теме
Огромное спасибо! Помогло справиться с нудной работой по переводу из формата Word
10. One 04.07.24 13:47 Сейчас в теме
Автору огромное спасибо!!! Столько труда на общую пользу. Ещё раз спасибо!!!
11. andrew_alen 15.08.24 16:16 Сейчас в теме
Вопрос вот как картинки перенести? Т.е. если в вордовском файле есть картинки - они то не переносятся в pdf.
user2189623; +1 Ответить
12. olga10121982 2 19.05.26 10:34 Сейчас в теме
Добрый день!
Может кто-нибудь поделится рабочим конвектором из WORD в MXL?
13. Yashazz 4925 19.05.26 10:54 Сейчас в теме
(12) А этот не годится?
14. olga10121982 2 20.05.26 09:21 Сейчас в теме
(13) Почему-то не сработало.
Можете помочь конвертнуть WORD?
1 документ
Прикрепленные файлы:
ШАБЛОН.docx
15. Yashazz 4925 20.05.26 09:50 Сейчас в теме
(14) Ооой. Могу попробовать на днях поковыряться, но не обещаю... Что именно не сработало-то? Ошибку выдало?
16. olga10121982 2 20.05.26 12:52 Сейчас в теме
(15) ВывестиДокументВордВМоксель, общая ошибка: {ВнешняяОбработка.КонвертнутьWORD.Форма.Форма.Форма(155)}: Ошибка при вызове конструктора (COMОбъект): -2147221005(0x800401F3): Invalid class string

Значение не является значением объектного типа (Показать)
{ВнешняяОбработка.КонвертнутьWORD.Форма.Форма.Форма(327)}:ТабДок.Показать();

[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]
17. olga10121982 2 20.05.26 15:00 Сейчас в теме
(15) это ошибка на серверной базе.
Запустила в файловом варианте уже час крутит, и ничего)
18. Yashazz 4925 21.05.26 07:11 Сейчас в теме
(14) Так это вам не ко мне. К вашим сисадминам. С самим созданием СОМ-объекта Ворда проблема. Либо его тупо нет, либо криво зарегистрирован, либо прав недостаточно.
19. olga10121982 2 26.05.26 12:01 Сейчас в теме
(18) Word установили.
Теперь такая ошибка:
ВывестиДокументВордВМоксель, общая ошибка: {ВнешняяОбработка.КонвертнутьWORD.Форма.Форма.Форма(161)}: Значение не является значением объектного типа (PageSetup)
20. Yashazz 4925 26.05.26 12:22 Сейчас в теме
(19) Посмотрите отладчиком. Скорее всего, всё равно криво создаётся экземпляр СОМа. Значение переменной "комДокумент" проверьте.
Для отправки сообщения требуется регистрация/авторизация