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

Внешняя печатная форма Word

Автор Алексей Малков, 16 ноя 2018, 08:55

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

Алексей Малков

Доброго времени суток. В 1С я совсем салага, поэтому прощу помощи на форуме. Суть в том, что есть необходимость сделать договор в 1С:розница. Долго искал решение и нашел обработку, но возникла трудность с ее переносом в конфигурацию.
Кусок кода

&НаСервере
Договор=РеквизитФормыВЗначение("Объект").ПолучитьМакет("Договор");
// Получить объект из макета.
MSWord = Договор.Получить();
НаименованиеФирмы = "ООО Восторг";
ДатаДоговора = Формат(ТекущаяДата(), "ДЛФ=D");
Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();
// Получить объект, который будем использовать для поиска и замены.
Замена = Документ.Content.Find;
// Заменить заранее определенные ключевые конструкции на требуемый текст.
Замена.Execute("<NameFirm>", Ложь, Истина, Ложь, , , Истина, , Ложь, """" + НаименованиеФирмы + """");
Замена = Документ.Content.Find;
Замена.Execute("<Date>", Ложь, Истина, Ложь, , , Истина, , Ложь,  НаименованиеФирмы);
Замена = Документ.Content.Find;
Замена.Execute("<Nomer>", Ложь, Истина, Ложь, , , Истина, , Ложь, НаименованиеФирмы);
Замена = Документ.Content.Find;
Замена.Execute("<NameDir>", Ложь, Истина, Ложь, , , Истина, , Ложь, НаименованиеФирмы);
Замена = Документ.Content.Find;
Замена.Execute("<NameKontr>", Ложь, Истина, Ложь, , , Истина, , Ложь, """" + НаименованиеФирмы + """");
Замена = Документ.Content.Find;
Замена.Execute("<NameKontrDir>", Ложь, Истина, Ложь, , , Истина, , Ложь,  НаименованиеФирмы);
// Далее аналогично для остальных ключевых конструкций.
//...


//Начало Вывода ТабЧасти в Word
// Закладка (-1 - позиция начало вывода перед закладкой
// MSWord.ActiveWindow.Selection.GoTo(-1, , ,"Nachalo");
// Для Каждого ТекСтр ИЗ ТабДок Цикл
// Товар1=СокрЛП(ТекСтр.Товары);
// Цена1=СокрЛП(ТекСтр.Цена);
// MSWord.ActiveWindow.Selection.TypeText(Товар1);
// MSWord.ActiveWindow.Selection.TypeText(" по цене ");
// MSWord.ActiveWindow.Selection.TypeText(Цена1+" руб.");
// MSWord.ActiveWindow.Selection.TypeParagraph(); // переход на следующую строку
// КонецЦикла;
// Делаем видимым приложение и активизируем его.       
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке, и объект закрывается.
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
MSWord.Application.Quit();
КонецПопытки;
КонецПроцедуры

Суть в том, что этот код работает при вводе данных, а мне необходимо из существующих данных вытягивать. Гуглил что ПолучитьОбъект() для этого требуется, но своими силами как не пробовал, ничего не выходило.
Основной реквизит: Таблица (тип динамический список). v 8.3.10

AIFrame

В документе ты заменяешь ключи, претендующие на уникальность. Типа "<KeyValue>".
В уже отработанном документе у тебя нет таких ключей. Как ты хочешь их искать?

Алексей Малков

Цитата: AIFrame от 16 ноя 2018, 10:30
В документе ты заменяешь ключи, претендующие на уникальность. Типа "<KeyValue>".
В уже отработанном документе у тебя нет таких ключей. Как ты хочешь их искать?
Я же говорю что не бум-бум. Суть, в том что нужна такая же система из существующих данных(
Или вы имеете ввиду что в макете нету таких ключей? Если вы про это, то они там присутствуют.

alex0402

Цитата: Алексей Малков от 16 ноя 2018, 08:55а мне необходимо из существующих данных вытягивать

я так понял, что нужно получить данные из Ворд?
Цитата: Алексей Малков от 16 ноя 2018, 08:55ПолучитьОбъект()
тут совершенно ни причем. Нужно изучать структуру Ворд.
1С тут почти ни при чем. С Ворд точно так же можно и из других языков программирования, по этому не стоит ограничиваться форумами 1С. Есть много примеров на сайте https://www.microsoft.com/uk-ua
Спасибо за Сказать спасибо

Алексей Малков

Цитата: alex0402 от 16 ноя 2018, 12:44
Цитата: Алексей Малков от 16 ноя 2018, 08:55а мне необходимо из существующих данных вытягивать

я так понял, что нужно получить данные из Ворд?
Цитата: Алексей Малков от 16 ноя 2018, 08:55ПолучитьОбъект()
тут совершенно ни причем. Нужно изучать структуру Ворд.
1С тут почти ни при чем. С Ворд точно так же можно и из других языков программирования, по этому не стоит ограничиваться форумами 1С. Есть много примеров на сайте https://www.microsoft.com/uk-ua

Нет, наоборот. Нужно данные перетянуть в Word. Суть в том что есть договор в ворде (в макет его положили Active document). Мне необходимо чтобы в этот макет залетели некоторые данные (например фио, сумма) чтобы в конечном итоге получился готовый договор для распечатки. Роюсь уже неделю наверно...

alex0402

Цитата: Алексей Малков от 16 ноя 2018, 12:51Нет, наоборот. Нужно данные перетянуть в Word. Суть в том что есть договор в ворде (в макет его положили Active document). Мне необходимо чтобы в этот макет залетели некоторые данные (например фио, сумма) чтобы в конечном итоге получился готовый договор для распечатки. Роюсь уже неделю наверно...

ну тогда это верный путь - код из поста №0, но для лучшего понимания происходящего нужно рыться на сайте майкрософт.
Спасибо за Сказать спасибо

Алексей Малков

Цитата: alex0402 от 16 ноя 2018, 13:00ну тогда это верный путь - код из поста №0, но для лучшего понимания происходящего нужно рыться на сайте майкрософт.

Этот код работает во внешней обработке (т.е. ты вписываешь строки в 1с и он забивает и выводит в ворде). Работа устраивает, единственное, мне нужно чтобы уже из существующих данных было, а не вводимых в текущий момент.

Алексей Малков


Теги:

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

Рейтинг@Mail.ru

Поиск