Пример создания динамической таблицы в шаблоне MS Office Word 2010 и вставка в него картинки

22.06.13

Интеграция - Загрузка и выгрузка в Excel

Обработка с открытым кодом, для формирования в шаблоне MS Office Word 2010  динамической таблицы по результату запроса и вставке в него картинки. Картинка и шаблон - также в макете обработки.

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

Наименование Файл Версия Размер
Обработка
.epf 101,78Kb
76
.epf 101,78Kb 76 Скачать
Пример (все файлы в архиве)
.rar 181,84Kb
58
.rar 181,84Kb 58 Скачать
шаблон ворд
.doc 35,50Kb
27
.doc 35,50Kb 27 Скачать

Обработка с открытым кодом. В обработке имеется шаблон (в виде макета) MS Office Word 2010 с  таблицей, эта таблица в макете имеет одну строку данных и итоговую строку, при обходе результата запроса в эту таблицу добавляются новые строки данных перед итогами. Так же - пример вставки картинки в конец документа.

В шаблоне MS Office Word 2010 использованы ключевые параметры типа #Период#, которые ищутся и заменяются.

 

Вариант 2:

Здесь представлю вариант передачи заменяемых параметров через макрос.

Внимание:

  • при использовании данного варианта необходимо зайти в word включить работу vba (word 2010) см. картинку //infostart.ru/upload/iblock/560/dddd.png.
  • а также у переменной в коде "ТекстДляЗамены" длина не может превышать 255 знаков
Word = Новый COMОбъект("Word.Application");
Doc=Word.Documents.Add(ИмяФайла,0, 0);
Fnd = Word.ActiveDocument.Range().Find;

// Вставляем комментарий в котором укажем номер сделки и печатной формы

Попытка
    ФормаПроцесса.НадписьСостоянияПрогрессора = "Вывод примечания в шаблоне MS Word с информацией по печатной форме";
    ФормаПроцесса.Обновить();
    Документ_актив = Word.ActiveDocument();

    м_Selection = Word.Selection.Range;
    мКоммент = Документ_актив.Comments.Add(м_Selection);
    //мКоммент.ShowTip = Истина;
    мКоммент.Author = "Сысоев Павел";// строка (назначает автора примечанию, чтобы можно было делать отбор примечаний по автору. Автор всегда будет выводится, а здесь задается его представление)
    //мКоммент.Date = ТекущаяДата(); // дата
    мКоммент.Initial = "Сысоев ПС"; // строка (выводит текст в шапке примечания, ограничение 9 знаков)
    мКоммент.Range.Text = НазваниеПечатнойФормы + ДопИнформация;
Исключение

КонецПопытки;

ПримерМакроса = "Sub UPN_FormSdelki()";

 

СтруктураПечатнойФормы = Новый Структура;

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| КурсыВалют.Период КАК Период,
| КурсыВалют.Курс КАК Курс
|ИЗ
| РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
| КурсыВалют.Валюта В(&Валюта)
| И КурсыВалют.Период МЕЖДУ &НачПериод И &КонПериод
|
|УПОРЯДОЧИТЬ ПО
| Период";

МВалюта = Новый Массив;
МВалюта.Добавить(Справочники.Валюты.НайтиПоКоду("840"));
Запрос.УстановитьПараметр("Валюта", МВалюта);
Запрос.УстановитьПараметр("НачПериод", НачалоДня(НачПериода));
Запрос.УстановитьПараметр("КонПериод", КонецДня(КонПериода));

Результат = Запрос.Выполнить().Выбрать();
СумммаИтог = 0;
сч=1;
Пока Результат.Следующий() Цикл
СтруктураПечатнойФормы.Вставить("Период"+сч);
СтруктураПечатнойФормы.Вставить("Курс"+сч);
СтруктураПечатнойФормы.Вставить("КурсПрописью"+сч);
СтруктураПечатнойФормы.Вставить("ИтогКурс");
СтруктураПечатнойФормы.Вставить("ИтогКурсПрописью");


СтруктураПечатнойФормы["Период"+сч] = Формат(Результат.Период,"ДФ=dd.MM.yyyy");
СтруктураПечатнойФормы["Курс"+сч] = Результат.Курс;
СтруктураПечатнойФормы["КурсПрописью"+сч] = ЧислоПрописью(Результат.Курс,?(Результат.Курс=Окр(Результат.Курс),"Л = ru_RU; НД=Ложь ДП=Ложь","Л = ru_RU; ДП=Истина"),"рубль ,рубля,рублей,м,копейка,копейки,копеек,м,2");

КонецЦикла;

 

ПримерМакроса = ПримерМакроса + Символы.ПС +
"
| ' выводим примечание с информацией по сделке и печатной форме
| '
| '
| ActiveWindow.ActivePane.VerticalPercentScrolled = 0
| Selection.Comments.Add Range:=Selection.Range
| Selection.TypeText Text:= """ + "Номер сделки: Сделка " + """

| Selection.TypeParagraph
| Selection.TypeText Text:= """ + "Код печатной формы: 1" + """
| Selection.TypeParagraph
| Selection.TypeText Text:= """ + "Название печатной формы: сделка"  + """
| Selection.TypeParagraph
| Selection.TypeParagraph
| Selection.TypeParagraph
| Selection.TypeText Text:= ""Для того чтобы не печатать это примечание:""
| Selection.TypeParagraph
| Selection.TypeText Text:= ""Просто удалите его (щелкнув на нем правой клавишей мышки и выбрать """"удалить примечание"""")""
| Selection.TypeParagraph
|
| ' перейдем с примечания к тексту
| '
| Selection.EscapeKey
|
|";

 

КолвоПараметров = СтруктураПечатнойФормы.Количество();
ТекНомерПараметра = 0;

 


Для Каждого Реквизит из СтруктураПечатнойФормы Цикл

    ТекНомерПараметра = ТекНомерПараметра + 1;

    Если НЕ ТипЗнч(Реквизит.Значение) = Тип("Картинка") Тогда


        ТекстДляЗамены = СокрЛП(Реквизит.Значение);
        КолВоВхожденийПереносаСтроки = СтрЧислоВхождений(СокрЛП(Реквизит.Значение), Символы.ПС); // обрабатываем текст как (ОАО "СБЕРБАНК РОССИИ")
        Если КолВоВхожденийПереносаСтроки > 0 Тогда
            ТекстДляЗамены = СтрЗаменить(ТексДляЗамены, Символы.ПС, "^p"); //"^l"
        КонецЕсли;

        КолВоВхожденийКавычек = СтрЧислоВхождений(СокрЛП(Реквизит.Значение),""""); // обрабатываем текст как (ОАО "СБЕРБАНК РОССИИ")
        Если КолВоВхожденийКавычек > 0 Тогда
            ТекстДляЗамены = СтрЗаменить(ТекстДляЗамены, """", """""");
        КонецЕсли;


        ПримерМакроса = ПримерМакроса + Символы.ПС +
        "
        |Selection.Find.ClearFormatting
        | Selection.Find.Replacement.ClearFormatting
        | With Selection.Find
        | .Text = """ + "#"+Реквизит.Ключ+"#" + """
        | .Replacement.Text = """ + ТекстДляЗамены + """
        | .Forward = True
        | .Wrap = wdFindContinue
        | .Format = False
        | .MatchCase = False
        | .MatchWholeWord = False
        | .MatchWildcards = False
        | .MatchSoundsLike = False
        | .MatchAllWordForms = False
        | End With
        | Selection.Find.Execute Replace:=wdReplaceAll
        | ";

////КонецЕсли;

    Иначе


        ИмяФайлаКартинки = ПолучитьИмяВременногоФайла();
        Картинка =Реквизит.Значение;
        Картинка.Записать(ИмяФайлаКартинки);
        ПримерМакроса = ПримерМакроса + Символы.ПС +
        "
        |'
        |' Вставяем картинку объекта
        |'
        |'
        |Selection.Find.ClearFormatting
        |With Selection.Find
        | .Text = ""#КартинкаПланОбъекта#""
        | .Replacement.Text = ""
        | .Forward = True
        | .Wrap = wdFindContinue
        | .Format = False
        | .MatchCase = False
        | .MatchWholeWord = False
        | .MatchWildcards = False
        | .MatchSoundsLike = False
        | .MatchAllWordForms = False
        |End With
        |Selection.Find.Execute
        |Selection.InlineShapes.AddPicture FileName:= _
        |""" + ИмяФайлаКартинки + """, LinkToFile:=False, _
        | SaveWithDocument:=True
        |ActiveWindow.ActivePane.HorizontalPercentScrolled = 6
        |
        |";
    КонецЕсли;
КонецЦикла;

 

ТекстМакроса = ПримерМакроса + Символы.ПС + "End Sub";

 

VBComponents = Word.ActiveDocument.VBProject.VBComponents;
Count = VBComponents.Count();
VBComponents.Add(1);
VBComponents.Item(Count + 1).CodeModule.InsertLines(1, ТекстМакроса);
Word.Application.Run("UPN_FormSdelki");

 

Word.Caption = " " + Строка(Сделка) + " - (" + УправлениеСделками.УдалениеЛидирующихНулейВНомере(Сделка.ОбъектСтроительства.МакетыПечатныхФорм.Найти(GUID,"GUID").МодульПечатнойФормы.Код) + ") " + Сделка.ОбъектСтроительства.МакетыПечатныхФорм.Найти(GUID,"GUID").МодульПечатнойФормы.Наименование; //ActiveDocument.FullName

//Word.PrintOut(); // распечатать док

Word.Visible = 1;
Word.Activate();
Word.WindowState = 2; // wdWindowStateMinimize (с) статья _http://forum.foxclub.ru/read.php?32,177182,258927
Word.WindowState = 1; // wdWindowStateMaximize

См. также

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22460    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9217    9    8    

10

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210234    621    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150753    365    375    

501

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

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

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    15088    79    0    

60

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101408    296    173    

312
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. trunix 19.10.11 03:58 Сейчас в теме
2. jko 19.10.11 06:14 Сейчас в теме
Прикольно. Скоро будем делать, что то подобное на 2007 офисе. Спасибо.
3. ARL 313 19.10.11 09:50 Сейчас в теме
Полезный пример. Всегда может пригодиться.
4. koka 87 19.10.11 10:01 Сейчас в теме
Спасибо. Познавательно для создания документов из 1С.
5. galyausik1 19.10.11 10:21 Сейчас в теме
С удовольствием пользуюсь вашим примером. Спасибо, познавательно.
6. ph_1984 20 19.10.11 16:11 Сейчас в теме
А чем ваша разработка отличается от подсистемы печати в библиотеке стандартных подсистем? В ней так же есть функция формирования документа в Word по шаблону.
7. pavel_pss 289 19.10.11 17:38 Сейчас в теме
Guran пишет:
А чем ваша разработка отличается от подсистемы печати в библиотеке стандартных подсистем? В ней так же есть функция формирования документа в Word по шаблону.


Я не знаю, что там за функция, поэтому не знаю их разницу, но у меня была задача формировать word и я ее решил на 1с8,1 так как это сделано в этой обработке. В ней так же было решение именно добавления строки для word 2010, может в 2007 она тоже будет работать (не помню проверял или нет)
8. gr0ck 20.10.11 08:45 Сейчас в теме
Надо будет посмотреть
9. orsprog 20.10.11 09:33 Сейчас в теме
спасибо...обязательно воспользуюсь этим примером...позновательно и полезно...в ближайшем будущем пригодится
10. Ihty 226 21.10.11 13:05 Сейчас в теме
Супер. Мне понравилось.
11. zag2art 23.10.11 19:25 Сейчас в теме
12. igor_1c 17 25.10.11 23:26 Сейчас в теме
я сейчас разрабатываю аналогичную универсальную систему систему печати MSWord из шаблонов. Для этого пришлось сделать справочник шаблонов, и обработку "Печать шаблонов" только у меня вместо # угловые скобки < >. Работает два варианта: переменные в <> и закладки. Как нить выложу свою систему, когда пройдет полный контроль на УПП. С помощью её печатают договора, доп. соглашения с таб. частью, сейчас пошли печатать кадровые документы (очень много заморочек с ними)
13. ann_ver 26.10.11 15:24 Сейчас в теме
14. Zya 21.02.12 22:43 Сейчас в теме
Спасибо большое за обработку

Интересует только еще один момент, в каждой ячейке таблицы после вывода #Переменных#
автоматически к тексту добавляется символ возврат каретки.
Может кто-нибудь знает, как этого избежать? А-то сильно увеличивается размер таблицы и получается неоптимальный расход бумаги..
15. pavel_pss 289 22.02.12 00:12 Сейчас в теме
(14) Zya,
по идее такого быть не должно, если ты сама не передаешь вместе со строкой возврат каретки. Попробуй либо сокрЛП(твойТекст) попробуй отформатировать свой шаблон ворда, тоесть проверить чтобы там небыло возврата каретки. Точнее не скажу как то не обращал внимание и пользователи о подобном не говорили. Завтра при случае просмотрю у себя.
16. Abadonna 3958 23.07.12 06:54 Сейчас в теме
(0) Автор, спасибо, конечно, но: попросил меня один нищеброд скачать, пришлось аж три файла качать :(
Мог бы и в один архив все засунуть.
17. пользователь 27.11.12 12:44
Сообщение было скрыто модератором.
...
18. pavel_pss 289 21.02.13 16:38 Сейчас в теме
не забываем ставить плюсы
Оставьте свое сообщение