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

Как видно из шаблона, закладка «Таблица1» является указателем на начало таблицы и служит для позиционирования выделения.
Теперь непосредственно сам способ, для его реализации использовалась внешняя обработка, в модуле формы которой, описана лишь одна процедура «ПриОткрытии(Отказ)»:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//Попытка создать COM объект
Попытка
ОбъектВорд = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;
//Путь к шаблону
ОбъектВорд.Documents.Add("C:\Users\Константин\Desktop\Шаблон.docx");
ШаблонВорд = ОбъектВорд.ActiveDocument;
//Заполняем первую таблицу
Если ШаблонВорд.Bookmarks.Exists("Таблица1") Тогда
//Выделяем обязательную закладку начала таблицы
ШаблонВорд.Bookmarks("Таблица1").Select();
//Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена
ШаблонВорд.Application.Selection.MoveDown();
ШаблонВорд.Application.Selection.SelectRow();
ШаблонВорд.Application.Selection.Copy();
Для Счетчик = 1 По 10 Цикл
//Заменяем значения
ШаблонВорд.Application.Selection.Find.Execute("Номер" ,,,,,,,,,Счетчик,2);
ШаблонВорд.Application.Selection.Find.Execute("ЗначениеКолонки1" ,,,,,,,,,Счетчик+10,2);
//Последний параметр поиска пустой
ШаблонВорд.Application.Selection.Find.Execute("ЗначениеКолонки2" ,,,,,,,,,Счетчик+100,);
//Перемещаемся вниз, вставляем из буфера обмена строку
ШаблонВорд.Application.Selection.MoveDown();
ШаблонВорд.Application.Selection.Paste();
//Перемещаемся вверх и выделяем строку для замены значений
ШаблонВорд.Application.Selection.MoveUp();
ШаблонВорд.Application.Selection.SelectRow();
КонецЦикла;
//Вырезаем лишнюю строку
ШаблонВорд.Application.Selection.Cut();
//Скрываем обязательную закладку начала таблицы
ШаблонВорд.Bookmarks("Таблица1").Select();
ШаблонВорд.Application.Selection.TypeText(" ");
КонецЕсли;
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();
//Закрытие документа
//ОбъектВорд.Application.Quit();
КонецПроцедуры
Как видно из кода процедуры, сначала находим закладку, выделяем и копируем строку таблицы находящуюся ниже, после заменяем текст на значения и вставляем скопированную строку. Результат работы внешней обработки 1С «Заполнение таблиц в шаблоне Word»:
