gifts2017

1С 8.х Вывод информации из MS Word в печатную форму (обычные формы)

Опубликовал Андрей Гердт (AndreyNit) в раздел Программирование - Практика программирования

Пишу данную статью с целью поделиться опытом. Ничего особенного, но, надеюсь, кому-нибудь сэкономит время.

Стояла задача, дословно "В 1С 8.2 в АРМ при нажатии гиперссылки "Расказать об акциях" выводить на экран информацию из файла Word". Информация в файле Word переодически меняется пользователями, а выводить её нужно в 1С.

Принялся за работу и понял, что не всё так просто. Вывод информации через шаблон Word не подходит, так как не решает задачу отображения данных в самой 1С. Попробовал через макет "Табличный документ" путём добавления в нём поля ActiveX, но не смог вывести в это поле информацию из Word. Порылся на просторах интернета, не удалось найти решения по описанной задаче. Немного почитав синтакс-помощник, мне пришло на помощь "ПолеHTMLДокумента" и в результате чего представляю Вам конечный результат. 

Процедура  Печать()
      ПутьКФайлуПисьма = "C:\Акция.docx"; 
      // Здесь можно организовать выбор вайла из диалогового окна
      MSWord = Новый COMОбъект("Word.Application");  
      MSWord.Visible = Ложь;
      MSWord.Documents.Open(ПутьКФайлуПисьма);
      ИмяВременногоHTMLДокумента = ПолучитьИмяВременногоФайла(".html");
      MSWord.ActiveDocument.SaveAs(ИмяВременногоHTMLДокумента, 8);  
      MSWord.ActiveDocument.Close(-1);  
      MSWord.Quit();  
      ФормаОтч = ЭтотОбъект.ПолучитьФорму("Форма");  
      ФормаОтч.ЭлементыФормы.ПолеHTMLДокумента.Перейти(ИмяВременногоHTMLДокумента);
      ФормаОтч.Открыть();  
КонецПроцедуры

Суть: В отчете нужно создать ещё одну форму и разместить на ней единственное поле в формате "ПолеHTMLДокумента", растянув по всей форме. Затем в процедуре "Печать" (вызывается при нажатии гиперссылки "Расказать об акциях") информацию из файла Word помещаем во временное хранилище, далее в созданную форму в поле с форматом "ПолеHTMLДокумента" передаем информацию и открываем форму.

При открытии формы выходит следующее окно (информация произвольная):


Надеюсь, кому-нибудь пригодится. 

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий Тарасов (tarassov) 18.09.15 15:14
"Хорошо, но мало": проблема в том, что сейчас уже Word не так актуален, как OpenOffice Writer.
И по-хорошему аналогичная функциональность нужна и для него.
Понятно, что идея и принцип вывода будут те же самые. Но объекты и методя - другие!
SiAl; alevnev; +2 1 Ответить
2. Игорь Сергеев (Nitols) 19.09.15 06:11
Автору однозначно плюс. У нас вот в крупном холдинге всё ПО лицензионное и нам Word очень даже актуален, в прочем как и тысячам предприятиям.
3. Программулькин (Программулькин) 19.09.15 12:38
Получите плюсик! Люблю такие вещи, считаю такое должно вознаграждаться!
4. Михаил Овчинников (Rupert69) 19.09.15 12:52
Автору +, всегда интересно узнать легкое решение, какой нибудь задачки.
5. Васся (rvassya) 21.09.15 11:19
Познавательно, автору однозначно +
6. Надежда (nvcwert) 21.09.15 12:32
интересно, надо попробовать +
7. Игорь Сергеев (Nitols) 21.09.15 17:34
А мы в холдинге попробовали, пользователи остались довольны.
Спасибо автору.
8. Андрей Гердт (AndreyNit) 21.09.15 17:44
Увы, с OpenOffice не знаком. Загулил, информация по данной теме предостаточно, но что бы проверить нужно его установить, но к сожалению не охота.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа