Создание документа Word 2007

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

Создание документа Word 2007 без установленного Word'а, без внешних компонент, исключительно средствами 1С

Написано в ознакомительных целях.
При желании функционал можно расширить...

Использовать:

  1. Добавляем обработку в конфигурацию.
  2. Пишем код по примеру:

1С 8.х:

Процедура СоздатьДокументWord2007()
    Ворд2007 = Обработки.СозданиеДокументаWord2007.Создать();
	
    Док = "c:\test.docx";
	
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьЗаголовок1("Создание документов Word 2007 в 1С"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Создано Vasil aka Душелов'2008", "Italic"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Обработка, создающая документы, в формате Word 2007.
    |Предустановленный Word не требуется."));
	
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьЗаголовок2("Возможности:"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Заголовок 1"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Заголовок 2"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Заголовок 3"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Параграф"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Полужирный", "Bold"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Курсив", "Italic"));
    Ворд2007.Параграфы.Добавить(Ворд2007.СоздатьПараграф("Подчеркнутый", "Underline"));
	
    НовыйПараграф = Ворд2007.СоздатьПараграф("Текст может поддерживать мультиформаты строки, такие как ");
    НовыйПараграф.СписокСтрок.Добавить(Ворд2007.СоздатьСтрокуДок("полужирный и курсив", "Bold|Italic"));
    НовыйПараграф.СписокСтрок.Добавить(Ворд2007.СоздатьСтрокуДок(" или "));
    НовыйПараграф.СписокСтрок.Добавить(Ворд2007.СоздатьСтрокуДок("курсив и подчеркнутый", "Italic|Underline"));
    НовыйПараграф.СписокСтрок.Добавить(Ворд2007.СоздатьСтрокуДок(" "));
    НовыйПараграф.СписокСтрок.Добавить(Ворд2007.СоздатьСтрокуДок("и т.д., и т.п.", "Bold|Italic|Underline"));
    Ворд2007.Параграфы.Добавить(НовыйПараграф);
	
    Ворд2007.Упаковать(Док);
	
    Сообщить("Создан: " + Док);
КонецПроцедуры

1С 7.7:

Процедура СоздатьДокументWord2007()
    Док = "c:\test.docx";   
    Параграфы = СоздатьОбъект("СписокЗначений");
        
    Параграфы.ДобавитьЗначение(СоздатьЗаголовок1("Создание документов Word 2007 в 1С"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Создано Vasil aka Душелов'2008", "Italic"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Обработка, создающая документы, в формате Word 2007.
    |Предустановленный Word не требуется."));
        
    Параграфы.ДобавитьЗначение(СоздатьЗаголовок2("Возможности:"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Заголовок 1"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Заголовок 2"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Заголовок 3"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Параграф"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Полужирный", "Bold"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Курсив", "Italic"));
    Параграфы.ДобавитьЗначение(СоздатьПараграф("Подчеркнутый", "Underline"));
        
    НовыйПараграф = СоздатьПараграф("Текст может поддерживать мультиформаты строки, такие как ");
    НовыйПараграф.ДобавитьЗначение(СоздатьСтрокуДок("полужирный и курсив", "Bold|Italic"));
    НовыйПараграф.ДобавитьЗначение(СоздатьСтрокуДок(" или "));
    НовыйПараграф.ДобавитьЗначение(СоздатьСтрокуДок("курсив и подчеркнутый", "Italic|Underline"));
    НовыйПараграф.ДобавитьЗначение(СоздатьСтрокуДок(" "));
    НовыйПараграф.ДобавитьЗначение(СоздатьСтрокуДок("и т.д., и т.п.", "Bold|Italic|Underline"));
    Параграфы.ДобавитьЗначение(НовыйПараграф);
        
    Упаковать(Док);
        
    Сообщить("Создан: " + Док);
КонецПроцедуры

ИСТОРИЯ:

09.08.2008:

  • добавил пример для 1С 7.7 (не забываем, pkzipc.exe скопировать в каталог "BIN" 1С 7.7)

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

Наименование Файл Версия Размер
-
.1235482409 558,69Kb
25.09.09
356
.1235482409 558,69Kb 356 Бесплатно
Версия для 8.1
.1235498929 16,54Kb
25.09.09
247
.1235498929 16,54Kb 247 Бесплатно

См. также

Комментарии
1. Василий Демидов (Душелов) 3777 09.08.08 04:37 Сейчас в теме
Вообщем, идея, надеюсь, понятна ;)
2. Евгений Мартыненков (JohnyDeath) 291 09.08.08 10:45 Сейчас в теме
Отличная идея!
Kolunya; El_Loco; +2 Ответить
3. Василий Демидов (Душелов) 3777 09.08.08 14:47 Сейчас в теме
Добавил пример для 1С 7.7.
В принципе, можно и класс для 1С++ написать...
4. Оракул Айметдинов (jhfrek) 165 13.08.08 19:58 Сейчас в теме
5. Василий Демидов (Душелов) 3777 14.08.08 01:56 Сейчас в теме
А дальше все понятно. Можно и без документации по формату обойтись - посмотреть, какие теги на размер шрифта, цвет влияют и дополнить код.
Так же, как и добавить картинки, заполнение таблиц и прочее... Шаблон есть, а дальше - простор мысли ;)
6. Яр (shuka) 22.08.08 05:00 Сейчас в теме
я правильно понял, что office ВААБЩЕ не нужен для запуска?
7. Василий Демидов (Душелов) 3777 23.08.08 21:02 Сейчас в теме
Вообще не нужен для формирования файла. Естественно, для его открытия офис нужен :)
8. homutke (homutke) 46 28.08.08 09:42 Сейчас в теме
ММмм. а как же надпись без внешних компонент, если используются внешние упаковщики.
9. Василий Демидов (Душелов) 3777 28.08.08 18:08 Сейчас в теме
(8) Я для 7-ки не планировал делать, попросили.
8-ка пакует сама.
10. Евгений Мартыненков (JohnyDeath) 291 28.08.08 22:32 Сейчас в теме
(8) 1с++ тоже умеет упаковывать/распаковывать ;)
11. Василий Демидов (Душелов) 3777 29.08.08 09:42 Сейчас в теме
(10) но 1с++ - это уже внешняя компонента ;)
12. fantasy2 (fantasy2) 21.12.08 16:50 Сейчас в теме
в 77 нет метода Упаковать() !?
как оно без внешних компонент будет работать?
13. Василий Демидов (Душелов) 3777 21.12.08 17:53 Сейчас в теме
(12) - см. комменты 8-10, можно упаковать винраром через ЗапуститьПриложение()
14. Василий Демидов (Душелов) 3777 13.02.09 19:37 Сейчас в теме
Для получения демо-версии или покупки обращайтесь по контактам, указанным в профиле.
15. Василий Демидов (Душелов) 3777 24.02.09 21:09 Сейчас в теме
16. Maniac (Eugeneer) 25.02.09 09:30 Сейчас в теме
И какой в этой обработке смысл? Какую экономическую выгоды она несет.
17. Василий Демидов (Душелов) 3777 25.02.09 09:36 Сейчас в теме
18. h00m (h00m) 25.02.09 10:27 Сейчас в теме
плохо то, что формат docx не совсем универсален. согласен, есть, конечно плагины для 2003, но формат doc всё же универсальней, хотя docx лучше и удобнее - не спорю
19. Василий Демидов (Душелов) 3777 25.02.09 10:32 Сейчас в теме
(18) Это пока... docx как раз более универсальный за счет OpenXML.
20. Сергей Лосников (Lars Ulrich) 370 25.02.09 11:38 Сейчас в теме
фантастишь :) пилюс нашальника
21. Алексей (uzerdv) 13 27.05.09 02:42 Сейчас в теме
Есть ли возможность приобретения? oip:316615837
22. Alex_Sun (Alex_Sun) 23.06.09 10:34 Сейчас в теме
А можноли с ее помощью вставлять штрих код в документ ворда?
23. dushelov (Душелов) 23.06.09 10:36 Сейчас в теме
(22) Ну не надо в каждую тему-то то спамить...
24. Андрей Куканов (KukA.5) 479 10.09.09 00:50 Сейчас в теме
Василий, ты умница!
...и как ведущий покатушек :)
Спасибо.
25. dushelov (Душелов) 10.09.09 08:12 Сейчас в теме
26. Gen Tay (GenTay) 03.12.09 00:06 Сейчас в теме
Доброго времени суток! Идея хороша, но что-то у меня не вытанцовывается. Или я не понял идею. ввел код, добавил процедуру. Пишет "файл создан", но его нет на компе, есть все кроме него. В чем идея? Где файл?
27. Gen Tay (GenTay) 03.12.09 00:07 Сейчас в теме
Т.е. красоты как на скриншоте я не добился.
28. Dmitiry (ndacoder) 108 01.07.11 17:08 Сейчас в теме
а объединение ячеек корректно обрабатывается ?
29. mark simf (mark-simf) 16.10.11 18:20 Сейчас в теме
Интересная идея!!! Главное все просто и понятно) Давно искал нечто подобное и нашел)))..........
30. Константин Матвеев (koka) 70 18.10.11 14:38 Сейчас в теме
Отлично! Работает на "Ура"!
31. Алексей (ASoft) 02.01.12 10:52 Сейчас в теме
Идея интересная. Спасибо. Использую для создания печатных форм договоров с контрагентами.
32. amatisol amatisol (amatisol) 25.03.12 22:40 Сейчас в теме
Не вижу пользы от этого, бухгалтерия в doc редко работает, а если и работают то просто недоучки и сидят таблицы рисуют
33. Паха (VapPaha) 26.03.12 09:08 Сейчас в теме
не понятно применение, но интересно!
34. Сергей Племянников (Serge_ASB) 16.07.12 14:46 Сейчас в теме
Что входит в обработку
СозданиеДокументаWord2007?
Сам файл не скачивается от отсутствия "баллов", и подробности работы тоже неясны, т.к. нет обработки, на которую процедура ссылается.
35. larissa builova (larisab) 157 16.07.12 15:02 Сейчас в теме
(34) Файлы скачиваются без баллов, все работы Душелова открыты. К несчастью, его уже нет с нами, вечная память...
36. Сергей Племянников (Serge_ASB) 16.07.12 15:35 Сейчас в теме
(35) larisab,
знаком не был, но присоединяюсь к пожеланию вечной памяти.
P.S. посмотрю еще раз.
37. Сергей Племянников (Serge_ASB) 17.07.12 14:47 Сейчас в теме
файл создает, но при попытке открытия ругается что
"Не удается открыть файл из-за ошибок содержимого".
38. rasswet (rasswet) 80 01.03.13 11:11 Сейчас в теме
супер вещь. после небольшого изменения работает под управляемым интерфейсом.
умный человек писал.
39. Кайрат Сапаров (Astrakhan_man) 26.02.14 10:12 Сейчас в теме
Подскажите а как поставить защиту на сформированный документ WORD?
40. skunk (skunk) 02.04.14 08:51 Сейчас в теме
не понял как плюсовать ... но зачет однозначно
41. Александр Зорин (Manticor) 61 08.05.14 16:36 Сейчас в теме
(38) rasswet, скачать cf-ник, попытался загрузитm в чистую конфу - пишет структура конфигурации не совместима с текущей версией программы. Как Вы ее запустили?
42. Алекс Н (Чарик) 2 05.08.15 12:36 Сейчас в теме
Просто класс обработка!