Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 01:13

Как программно сформировать и прикрепить к документу впф word

Автор vondbond73, 06 мая 2024, 14:57

0 Пользователей и 1 гость просматривают эту тему.

vondbond73

Всем привет, возникла потребность при записи документа формировать автоматически впф которая печатает word документ, как можно реализовать это?

Максим75

vondbond73, когда-то игрался с выводом документа в фордовский файл.
там принцип вроде был такой - создается макет с типом макета Activ document, туда загружается фордовский файл, но все поля, какие надо заполнить, надо через закладки организовать, потом уже из 1С к эти закладкам обращаться.
Потом сделал в менеджере документа процедуру, и уже ее вызывал для заполнения и вывода фордовского документа.

кидаю пример, может и поможет:

Процедура ПечатьАктив(СсылкаНаДокумент,Макет) экспорт

//Сообщить("ку-ку");

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходнаяНакладная.Номер КАК Номер,
| ПриходнаяНакладная.Дата КАК Дата,
| ПриходнаяНакладная.СуммаДокумента КАК СуммаДокумента,
| ПриходнаяНакладная.Поставщик.Наименование КАК Поставщик
|ИЗ
| Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
|ГДЕ
| ПриходнаяНакладная.Ссылка = &СсылкаНаДокумент
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПриходнаяНакладнаяТМЦ.НомерСтроки КАК НомерСтроки,
| ПриходнаяНакладнаяТМЦ.Товар.Наименование КАК Товар,
| ПриходнаяНакладнаяТМЦ.Колво КАК Колво,
| ПриходнаяНакладнаяТМЦ.Цена КАК Цена,
| ПриходнаяНакладнаяТМЦ.Сумма КАК Сумма
|ИЗ
| Документ.ПриходнаяНакладная.ТМЦ КАК ПриходнаяНакладнаяТМЦ
|ГДЕ
| ПриходнаяНакладнаяТМЦ.Ссылка = &СсылкаНаДокумент";

Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();//выполняется пакет запросов
//один по шапке документа
//второй по табличной части
//получаем массив результатов выполнения запроса
//обращение к каждому результату как к элементы массива.

ВыборкаШапка = МассивРезультатовЗапроса[0].Выбрать();//выборка по первому элементу массива, т.е. по шапке документа
ВыборкаТовары = МассивРезультатовЗапроса[1].Выбрать();//выборка по второму элементу массива, т.е. по табличной части товары

ВыборкаШапка.Следующий();//в выборке всего 1 строка, поэтому на ней и позиционируемся

Word = Макет.Получить();

Word.Application.Visible = Ложь;

Doc = Word.Application.Documents(1);
Doc.Activate();

Word.Bookmarks("НомерНакладной").Select();
Word.Application.Selection.TypeText(ВыборкаШапка.Номер);
                                                               
Word.Bookmarks("ДатаНакладной").Select();
Word.Application.Selection.TypeText(Формат(ВыборкаШапка.Дата,"ДФ=dd.MM.yyyy"));

Word.Bookmarks("Поставщик").Select();
Word.Application.Selection.TypeText(ВыборкаШапка.Поставщик);

Word.Bookmarks("СуммаОбщая").Select();
Word.Application.Selection.TypeText(Формат(ВыборкаШапка.СуммаДокумента,"ЧДЦ=2"));

Word.Bookmarks("СуммаОбщаяПрописью").Select();
Word.Application.Selection.TypeText(ЧислоПрописью(ВыборкаШапка.СуммаДокумента,"",""));

//ну и так далее по всем закладкам, которые могут быть в шаблоне макета

//самое интересное - вывод табличных частей
Таблица = Word.Tables.Item(1);//получаем первую таблицу в документе
//если несколько, то необходимо каждую получать таким образом
НомерСтроки=0;

Пока ВыборкаТовары.Следующий() цикл
НомерСтроки = НомерСтроки+1;
Row = Таблица.Rows.Add(Таблица.Rows(НомерСтроки+1));//начинаем добавлять со 2 строки, шапку пропускаем в таблице

Row.Cells(1).Range.Text = НомерСтроки; //Cells(i)-i колонка в текущей строке
Row.Cells(2).Range.Text = ВыборкаТовары.Товар;
Row.Cells(3).Range.Text = "шт";
Row.Cells(4).Range.Text = Формат(ВыборкаТовары.Цена,"ЧДЦ=2");
Row.Cells(5).Range.Text = ВыборкаТовары.Колво;
Row.Cells(6).Range.Text = Формат(ВыборкаТовары.Сумма,"ЧДЦ=2");

КОнецЦикла;
//Row = Таблица.Rows(НомерСтроки+1);
//Row.Cells(6).Range.Text = Формат(ВыборкаШапка.СуммаДокумента,"ЧДЦ=2");

Word.Bookmarks("СуммаОбщаяИтого").Select();
Word.Application.Selection.TypeText(Формат(ВыборкаШапка.СуммаДокумента,"ЧДЦ=2"));
Word.Application.Visible = Истина;

Doc.Close();
Word.Quit();


КОнецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск