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

   darkhome

28.11.13 — 12:33

Создал в общихМакетах Макет типа ActiveDocument с расширением doc. Не получает с ним работать. Подскажите что не так. Делаю на УФ. Вот код

&НаКлиенте

Процедура Печать(Команда)

    ПолучитьМакетНаСервере(«ПФ_DOC_Договор»);

    //MSWord = Договор.Получить;

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

Процедура ПолучитьМакетНаСервере(ИмяМакета)

    Договор = ПолучитьОбщийМакет(ИмяМакета);

    MSWord = Договор.Получить;

конецпроцедуры

Выскакивает ошибка

Ошибка при вызове метода контекста (Получить)

    MSWord = Договор.Получить();

   Cube

1 — 28.11.13 — 12:34

&НаСервере забыл?

   darkhome

2 — 28.11.13 — 12:36

Если не указываешь директиву, то по умолчанию означает что код будет выполняться на сервере

   darkhome

3 — 28.11.13 — 12:37

Да я пробовал и &НаСервере и &НаСервереБезКонтекста. Все-равно не получается

   Cube

4 — 28.11.13 — 12:40

А зачем ты пишешь Получить()? Ведь у тебя это не хранилище…

   darkhome

5 — 28.11.13 — 12:43

(4) А как надо сделать что бы заработало

   Cube

6 — 28.11.13 — 12:44

MSWord = ПолучитьОбщийМакет(ИмяМакета);

не?

   darkhome

7 — 28.11.13 — 12:48

А потом как начать работать с документом что бы можно было заполнять поля в нем?

   darkhome

8 — 28.11.13 — 12:49

Я ставлю

Документ = MSWord.Application.Documents(1);

Документ.Activate();

У меня сразу выскакивает

Поле объекта не обнаружено (Application)

Документ = MSWord.Application.Documents(1);

Весь инет облазил. У всех работает. Может я что с начала не правильно делал

   Cube

9 — 28.11.13 — 12:52

(8) А ты что, заполнять его на сервере собрался?

   darkhome

10 — 28.11.13 — 12:53

Ну вроде как так надо делать.

   Cube

11 — 28.11.13 — 13:03

(10) Я уже сильно не помню причины, но я делаю через временный файл.

Код такой (у меня макет хранится в ХЗ):

&НаКлиенте

Процедура СформироватьПечатнуюФорму(ДоговорКонтрагента, Макет)

    ДанныеДляПечати = ПолучитьДанныеДляПечати(ДоговорКонтрагента, Макет);

    
    ХранилищеМакета = ДанныеДляПечати[0];

    Если ХранилищеМакета.Представление = «ХранилищеМакета» Тогда

        ИмяФайла = ПолучитьИмяВременногоФайла();

        ХранилищеМакета.Значение.Записать(ИмяФайла); //Записываем макет во временный файл.

        ДанныеДляПечати.Удалить(ХранилищеМакета);

    Иначе

        Сообщить(«Ошибка получения макета», СтатусСообщения.Внимание);

        Возврат;

    КонецЕсли;

    Попытка

        MSWord = ПолучитьCOMОбъект(, «Word.Application»);    //Если Word уже открыт, то подключаемся к нему.

    Исключение

        Попытка

            MSWord = Новый COMОбъект(«Word.Application»);    //Открываем Word.

        Исключение

            Сообщить(«Ошибка формирования печатной формы. Скорее всего на Вашем компьютере не установлен Microsoft Word.», СтатусСообщения.Внимание);

            Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);

            Возврат;

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

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

    Документ = MSWord.Documents.Open(ИмяФайла);                //Открываем макет из временного файла.

    MSWord.Selection.WholeStory();                            //Выделяем весь документ.

    MSWord.Selection.Copy();                                //Копируем выделенное в буфер.

    Документ.Close();                                        //Закрываем документ.

    УдалитьФайлы(ИмяФайла);                                    //Удаляем временный файл.

    Документ = MSWord.Documents.Add();                        //Создаем новый документ.

    MSWord.Selection.PasteAndFormat(19);                    //Вставляем в документ содержимое из буфера с форматом исходного документа.

    MSWord.ActiveDocument.Range(0,1).Copy();                //Очищаем буфер обмена, чтоб лишних вопросов при закрытии документа не задавал.

    MSWord.Selection.HomeKey(6);                            //Переводим курсор в начало документа.

    
    //Производим заполнение заменяемых полей

    Замена = Документ.Content.Find;

    Для Каждого ЗаменяемоеПоле Из ДанныеДляПечати Цикл

        Замена.Execute(ЗаменяемоеПоле.Значение, Ложь, Истина, Ложь, , , Истина, , Ложь, ЗаменяемоеПоле.Представление, 2);

    КонецЦикла;

    
    //Проверяем, остались ли незаполненные заменяемые поля

    Если Замена.Execute(«{«) Тогда

        Сообщить(«В печатной форме «»» + СокрЛП(Макет.Наименование) + «»» заполнены не все заменяемые поля.», СтатусСообщения.Внимание);

    КонецЕсли;

    
    Документ.Saved = Истина;                                //Помечаем документ как сохраненный, чтобы при закрытии не выдавался запрос на сохранение документа

    Если Элементы.ФормаПечатьНаПринтер.Пометка Тогда

        Документ.PrintOut(Истина, , , , , , , Макет.КоличествоКопий, , , , Истина);

        Документ.Close();

    Иначе

        MSWord.Visible = Истина;

        MSWord.Activate();

    КонецЕсли;

    
КонецПроцедуры //СформироватьПечатнуюФорму()

   darkhome

12 — 28.11.13 — 13:06

(11) Спасибо. Попробую. Надеюсь заработает

   Cube

13 — 28.11.13 — 13:08

ПолучитьДанныеДляПечати() выполняется &НаСервере

   darkhome

14 — 02.12.13 — 12:03

&НаСервереБезКонтекста

Процедура ПолучитьМакетНаСервере()

    Макет = ПолучитьОбщийМакет(«ПФ_DOC_Договор»);

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

    Ком.Application.Visible = 1;

конецПроцедуры    

&НаКлиенте

Процедура Напечатать(Команда)

    Состояние(НСтр(«ru = ‘Выполняется формирование печатных форм'»));

    
    ПолучитьМакетНаСервере();

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

Ошибка при вызове метода контекста (Получить)

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

Что не так? Сделал как написано в книге «Профессиональная разработка в системе 1С».

В общих макетах создал .doc макет, в него скопировал содержимое документа. Пытаюсь его получить, вылетает ошибка. Помоги разобрать, как сделать через ActiveDocument

   darkhome

15 — 02.12.13 — 12:04

Тип созданного макета — ActiveDocument

   darkhome

16 — 02.12.13 — 12:06

Делаю все это во внешней обработке

   Kupogun

17 — 02.12.13 — 12:08

(14) что за ошибка?

   darkhome

18 — 02.12.13 — 12:09

Ошибка при вызове метода контекста (Получить)

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

   Kupogun

19 — 02.12.13 — 12:10

хз, попробуй так

текОбъект = ЭтаФорма.РеквизитФормыВЗначение(«Объект»);

Макет = текОбъект.ПолучитьМакет(«ПФ_DOC_Договор»);

   darkhome

20 — 02.12.13 — 12:11

(19) Делал, не получается

   Cube

21 — 02.12.13 — 12:15

(14) (18) Ты (4) Читал?

&НаСервереБезКонтекста

Процедура ПолучитьМакетНаСервере()

    Ком = ПолучитьОбщийМакет(«ПФ_DOC_Договор»);

    Ком.Application.Visible = 1;

конецПроцедуры    

&НаКлиенте

Процедура Напечатать(Команда)

    Состояние(НСтр(«ru = ‘Выполняется формирование печатных форм'»));

    ПолучитьМакетНаСервере();

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

Так работает?

   darkhome

22 — 02.12.13 — 12:17

(4) я читал

   darkhome

23 — 02.12.13 — 12:19

(21) Сделал так, выскочила другая ошибка

Поле объекта не обнаружено (Application)

    Ком.Application.Visible = 1;

Я еще раз повторюсь, делал по примеру, который приведен в книге.

   darkhome

24 — 02.12.13 — 12:20

Ну если не работает, как там приведен, вот я спрашиваю у Вас все, форумчане. Так как считаю этот форум одним из лучших по 1С, почти всегда тут можно найти решение проблем

   Cube

25 — 02.12.13 — 12:23

(23) А, точно, Получить() надо. Только что посмотрел, как раньше делал. Тогда у меня версия, что у тебя в макете что-то не то…

  

Cube

26 — 02.12.13 — 12:26

+(25) Если оставить только суть, то:

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

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



Документ = MSWord.Application.Documents(1);

Документ.Activate();



MSWord.Application.Visible = Истина;

MSWord.Activate();

3 / 3 / 7

Регистрация: 21.03.2013

Сообщений: 638

1

13.12.2017, 12:05. Показов 17743. Ответов 10


Студворк — интернет-сервис помощи студентам

Добрый день, вот пытаюсь напечатать документ MSWorld в обработке, делаю по примеру, вот так

ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»);
СсылкаМакет = ОбработкаОбъект.ПолучитьМакет(«Макет»);

MSWord = СсылкаМакет.Получить();// И вот тут выдает ошибку

Ошибка при вызове метода контекста (Получить)

Подскажите плз где ошибка?

http://programmist1s.ru/pechat… 8-3-i-8-2/ — вот брал отсюда

Добавлено через 22 минуты
Да, делаю это все на сервере



0



Эксперт 1С

434 / 305 / 92

Регистрация: 28.05.2014

Сообщений: 1,247

13.12.2017, 13:53

2

Владислаучык,
что в переменной СсылкаМакет ?
У макета тип ActiveDocument?

в той же статье автор пишет ещё следующее:

Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине.



1



3 / 3 / 7

Регистрация: 21.03.2013

Сообщений: 638

13.12.2017, 14:09

 [ТС]

3

Получение макета ActiveDocument



0



Владислаучык

3 / 3 / 7

Регистрация: 21.03.2013

Сообщений: 638

13.12.2017, 16:52

 [ТС]

4

Phil, Да, такой тип

Добавлено через 2 часа 42 минуты
И если дело в ворлде, то как тогда переделать? пробовал так

1C
1
2
3
4
5
6
7
8
9
//ВремФайл = ПолучитьИмяВременногоФайла("doc");
//  MSWord = Новый COMОбъект("Word.Application");
//MSWord.Displayalerts = 0;
//ДокументН = MSWord.Application.Documents.Add();
//ДокументН.SaveAs(ВремФайл,0);                
//MSWord.Quit();
 
//Макет = ВернутьМакет();
//MSWord = Макет.Получить();
1C
1
2
3
4
5
6
7
8
&НаСервере
Функция ВернутьМакет()
    
        
    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    СсылкаМакет = ОбработкаОбъект.ПолучитьМакет("Макет");
    Возврат СсылкаМакет;
КонецФункции

Так макет нельзя вернуть, а если на сервере сделать сразу, то тоже ошибка отсутствует отображение типа для ActiveDocument



0



polax

1897 / 1301 / 461

Регистрация: 16.01.2015

Сообщений: 5,656

14.12.2017, 10:25

5

Владислаучык, Вот рабочий код. Неделю назад делал ВПФ с макетом в Ворде

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
&НаСервере
Функция ПолучитьДокументВордИзМакета (ИмяМакета)
    Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
    ИмяФайла = ПолучитьИмяВременногоФайла ("doc");
    Макет.Записать (ИмяФайла);
    
    Приложение = Новый ComObject ("Word.Application");
    
    ДокументыВорда = Приложение.Documents;
    Документ = ДокументыВорда.Open (ИмяФайла);
    Документ.Activate ();
    
    Selection = Приложение.Selection;
    Selection.WholeStory ();
    Selection.Copy ();
    
    НовыйДокумент = ДокументыВорда.Add ();
    НовыйДокумент.Activate ();
    Selection = Приложение.Selection;
    Selection.WholeStory ();
    Selection.PasteAndFormat (0);
    
    Документ.Close ();
    УдалитьФайлы (ИмяФайла);
    
    Данные = Новый Структура;
    Данные.Вставить ("Приложение", Приложение);
    Данные.Вставить ("Документ", НовыйДокумент);
    
    Возврат Данные;
КонецФункции // ПолучитьДокументВордИзМакета



0



3 / 3 / 7

Регистрация: 21.03.2013

Сообщений: 638

15.12.2017, 15:15

 [ТС]

6

polax, Приложение = Новый ComObject («Word.Application»); — вот тут ошибка, Ошибка при вызове конструктора (ComObject)
Приложение = Новый ComObject («Word.Application»);
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса



0



1897 / 1301 / 461

Регистрация: 16.01.2015

Сообщений: 5,656

15.12.2017, 18:19

7

Владислаучык, Либо делаете не на сервере, либо на компьютере не установлен Ворд



1



1193 / 732 / 211

Регистрация: 22.04.2013

Сообщений: 5,381

Записей в блоге: 1

15.12.2017, 21:17

8

Цитата
Сообщение от polax
Посмотреть сообщение

Либо делаете не на сервере

я путаю? может наоборот — делаете на сервере?
ексель,ворд же надо открывать локально?



1



1897 / 1301 / 461

Регистрация: 16.01.2015

Сообщений: 5,656

15.12.2017, 22:24

9

Лучший ответ Сообщение было отмечено Владислаучык как решение

Решение

Владислаучык, Yulunga, не то что ошибся, а высказал неправильно. Вот здесь описано http://1clancer.ru/article/oso… ie_8.2_847



1



0 / 0 / 0

Регистрация: 06.06.2022

Сообщений: 2

15.06.2022, 11:55

10

polax, У вас есть код для Exel макета active document?



0



1897 / 1301 / 461

Регистрация: 16.01.2015

Сообщений: 5,656

15.06.2022, 15:54

11

Dfolt, Вот из моих закладок по которым делаю подобное



0



Добрый день! Воспользовавшись поиском нашел порядка 3-4х веток на эту тему и  нигде так  и не увидел решения. Может его и  нет? Суть задачи: Открыть на сервере шаблон Word сохраненный как ActiveDocument, заполнить и  откорректировать его на сервере и например вывести его пользователю на стороне клиента. …. ну дальше делаем все что нужно с  документом ДокументWORD = Новый ДвоичныеДанные(ПолноеИмяФайла); и затем записываем его в  хранилище значений а  на клиенте получаем и  открываем. И все замечательно работает и  формируется на толстом и тонком клиенте… пока не запускаем Тонкий клиент через веб-сервер ну или не открываем 1с через браузер. В этом случае вываливается ошибка: Ошибка при вызове метода контекста (Получить)MSWord = Макет.Получить; На некоторых компах ошибка вываливается на методе Документ.SaveAs но если его закомментировать то опять же возвращаемся к  ошибке MSWord = Макет.Получить; Хоть кто нибудь знает доступен ли метод получения шаблона на сервере при работе через веб сервер? Или как это сделать лучше. Но весь смысл в  том чтобы документ формировался именно на сервере, потому как иногда совсем не нужно показывать файл на клиенте пользователю а  достаточно сохранить(на стороне сервера)

В синтакс-помощнике забанили?

xDD ага, забанили… Но то что там написано обламывает нас по полной: ОболочкаActiveDocument (ActiveDocumentShell) Получить (Get) Синтаксис: Получить Возвращаемое значение: Тип: COMОбъект. Описание: Получает COMОбъект для программного управления Active document. Доступность: ТОЛСТЫЙ КЛИЕНТ Но я сюда написал ибо помощь требуется. Кто сталкивался с  подобной задачей? Формировать файлы из ActiveDocument шаблона при клиент-серверном взаимодействии. Есть же наверное способ обхода ((((((

Выход — не использовать ActiveDocument

Вы меня убиваете ))))) Причем так обидно… если полностью по оболочке читать то она доступна на сервере Методы: Описание: Используется для доступа к Active document. Объект может быть записан в файл. Доступность: Сервер, толстый клиент. а ее методы только на толстом клиенте… ((

Однако спасибо все равно ))

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Lavr
22.10.2015 13:56 Прочитано: 2958

Здравствуйте.

Импортировал word-документ в справочник «Филиал», в макет как Active document. Есть форма списка и форма элемента списка, сделал кнопку на форме элемента, при нажатии вызов процедуры:

&НаКлиенте

Макет = Справочники.Филиал.ПолучитьМакет(«Макет»).Получить();Документ = Макет.Application.Documents(1);Документ.Activate();Макет.Application.Visible = Истина;Макет.Activate();

Надо чтобы документ из макета открывался в ворде у пользователя, просто открывался без заполнения какими-либо данными из формы.

Подскажите пожалуйста, добрые специалисты, как это правильно сделать? Может вообще по другому можно, как-то проще?

Благодарю.

Yandex
Возможно, вас также заинтересует

Реклама на портале

IBReiter
22.10.2015 14:40 Ответ № 1

Код 1C v 8.3

 

&НаКлиенте
Процедура Открытьмакет(Команда)

ОткрытьмакетНаСервере();

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

&НаСервере
Процедура ОткрытьмакетНаСервере()

ОбъектВорд = Справочники.Филиал.ПолучитьМакет("Макет").Получить();
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();

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

Lavr
23.10.2015 08:31 Ответ № 2

В жиме толстого клиента все работает, а в web-интерфейсе ошибка: Ошибка при вызове метода контекста (Получить)

Через web-интерфейс этот метод должен работать?

IBReiter
23.10.2015 09:25 Ответ № 3

Проверил на платформе 8.3.6.2152 и в браузере хром — все ок, работает алоритм.

У вас конфигурация вообще какая?

Lavr
23.10.2015 09:37 Ответ № 4

Платформа 8.2 Конфигурация УП, с нуля пишу, очень простая с 7-ю справочниками.

IBReiter
23.10.2015 10:36 Ответ № 5

Режимы совместимости? как вариант..

Ну а так, попробуйте на 8.3 ещё

Lavr
23.10.2015 10:48 Ответ № 6

Не работает в совместимости. Оставлю тогда так:

&НаКлиентеПроцедура СлужебнаяЗаявка(Команда) Word = Новый COMОбъект («Word.Application»);Word.Documents.Open («\192.168.47.130wudataWU,_Фамилия_Имя,_Филиал_г._Караганда.doc»);Документ = Word.Application.Documents(1);Документ.Application.Visible = Истина;Документ.Activate();КонецПроцедуры

IBReiter
23.10.2015 11:27 Ответ № 7

И на 8.3 не работает?

Вам совместимость нужна

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
  1. Есть обработка в которой в макет помещен документ Word-овский. Я его получаю заполняю шаблон значениями из Таблицы значений. Проблема в том что на файловом варианте эта обработка работает а на серверном нет. В чем может быть проблема?

    Ошибка выскакивает здесь:

    [​IMG]

    Сама обработка:

    Вложения:

  2. Еще вопрос в тему.

    Почему при сохранении макета типа active document в файл word кодом:

    ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    Макет  = ОбработкаОбъект.ПолучитьМакет("ШаблонПисьмаПросрочка");
    ИмяФайла = КаталогВременныхФайлов() + ""файл.doc";
    Макет.Записать(ИмяФайла);

    Я получаю вместо нормального документа вот такой

    [​IMG]


  3. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.899
    Симпатии:
    1.035
    Баллы:
    204

    Какой тип значения у Макет?

  4. [​IMG]


  5. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.899
    Симпатии:
    1.035
    Баллы:
    204

    Ну а что ж вы хотите? :)
    Простым Записать() там непойми чего может быть….

    Вроде еще нужно сделать:

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

  6. [​IMG]

    [​IMG]

    Из статьи: http://infostart.ru/public/270277/

    Когнитивный диссонанс

    &НаСервере
    АктивныйДокумент = ПолучитьМакет("Макет");
    КомОбъект = АктивныйДокумент.Получить();

    Вот самые первые строчки, на которые натыкается в гугле юный неофит. В файловом варианте такой код сработает корректно (неважно в толстом или тонком клиенте). Т.к. и сервер и клиент у нас находятся на одной машине, и MS Word тоже установлен на этой машине.

    А давайте представим, что у нас клиент-сервер, да ещё и сервер находится на другой машине. Будет оно работать в тонком клиенте? Нет. И тут возникнет когнитивный диссонанс. WTF? o_O

    — Объединение сообщений, 5 апр 2017

    У меня как раз серверный вариант


  7. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.899
    Симпатии:
    1.035
    Баллы:
    204

    Когнитивного диссонанса нет, т.к. в режиме управляемого приложения нет объекта типа ActiveDocument от слова совсем :)

    Выход: макет делать в виде двоичных данных, и гонять результат на клиента через временное хранилище.

  8. &НаСервере
    Функция ПолучитьДанныеМакета()
        АдресХранилища = Новый УникальныйИдентификатор();
        МакетПисьма = Обработки.ФормированиеПисемПоДепонентам.ПолучитьМакет("ШаблонПисьмо");
        Возврат ПоместитьВоВременноеХранилище(МакетПисьма, АдресХранилища);
    КонецФункции 
    
    &НаКлиенте
    Процедура СформироватьПисьма(Команда)
       Попытка
         Индификатор = ПолучитьДанныеМакета();
         МакетПисьма = ПолучитьИзВременногоХранилища(Индификатор);
         ИмяФайла = "Письмо.doc";
         ИмяФайлаПолное = "E:ЭРЯковенко" + ИмяФайла;
         МакетПисьма.Записать(ИмяФайлаПолное);
       Исключение
         Сообщить(ОписаниеОшибки());
       КонецПопытки;
    КонецПроцедуры

    Я правильно понял?

    — Объединение сообщений, 5 апр 2017

    Так что это уже пережиток?


  9. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.899
    Симпатии:
    1.035
    Баллы:
    204

    В первом приближении — да.

    Только проще будет MSWord установить на сервер, выполнять заполнение и сохранение файла на сервере и уже результат гнать на клиента иначе придется на каждом клиенте устанавливать MSWord.

  10. Есть код:

    &НаКлиенте
    Процедура ПолучитьМакет(Команда)
       
        Попытка
            Индификатор = ПолучитьДанныеМакета();
            МакетПисьма = ПолучитьИзВременногоХранилища(Индификатор);
            ИмяФайла = "Письмо4.doc";
            ИмяФайлаПолное = "E:ЭРЯковенко" + ИмяФайла;
            МакетПисьма.Записать(ИмяФайлаПолное);
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
       
        Попытка
            Шаблон = Новый COMОбъект("Word.Application");
        Исключение
            Сообщить("Ошибка при попытке создать объект ""MS Word""!" + Символы.ПС +
                     "Возможно приложение ""MS Word"" не установлено или установлено неправильно.", СтатусСообщения.Внимание);
                 КонецПопытки;
       
        Шаблон.Documents.Open(ИмяФайлаПолное);
        Попытка
            Шаблон.Application.Documents(1).Content.Find.Execute("{Сумма}",,,,,,,,, ЭтаФорма.Сумма, 2);               
            Шаблон.Application.Documents(1).Content.Find.Execute("{Контрагент}",,,,,,,,, ЭтаФорма.Контрагент, 2);               
            //Перемещаемся до строки в таблице
            Шаблон.Application.Selection.MoveDown(,8);       
            //Перемещаемся вниз, выделяем строку таблицы и копируем ее в буфер обмена
            Шаблон.Application.Selection.SelectRow();
            Шаблон.Application.Selection.Copy();
            Для каждого Строка Из Этаформа.ТЗ Цикл
                //Заменяем значения
                Шаблон.Application.Selection.Find.Execute("{НомерСчета}" ,,,,,,,,,Строка.НомерСчета, 2);
                Шаблон.Application.Selection.Find.Execute("{ДатаПоставки}" ,,,,,,,,,Строка.ДатаПоставки, 2);
                //Последний параметр поиска пустой
                Шаблон.Application.Selection.Find.Execute("{КрайняяДата}" ,,,,,,,,,Строка.КрайняяДата, 2);
                Шаблон.Application.Selection.Find.Execute("{СтоимостьТоваров}" ,,,,,,,,,Строка.СтоимостьТоваров, 2);
                //Перемещаемся вниз, вставляем из буфера обмена строку
                Шаблон.Application.Selection.MoveDown();
                Шаблон.Application.Selection.Paste();
                //Перемещаемся вверх и выделяем строку для замены значений
                Шаблон.Application.Selection.MoveUp();
                Шаблон.Application.Selection.SelectRow();
            КонецЦикла;
            //Вырезаем лишнюю строку
            Шаблон.Application.Selection.Cut();
            Шаблон.Application.Visible = Истина;       
        Исключение
            // Если произойдет ошибка выводятся данные об ошибке и объект закрывается.
            Сообщить("Ошибка: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
            Шаблон.Application.Quit(0);
        КонецПопытки;
    
       
    КонецПроцедуры
    
    &НаСервере
    Функция ПолучитьДанныеМакета()
    
        АдресХранилища = Новый УникальныйИдентификатор();
        ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
        Макет             = ОбработкаОбъект.ПолучитьМакет("ШаблонПисьмаПросрочка");
        Возврат ПоместитьВоВременноеХранилище(Макет, АдресХранилища);
       
    КонецФункции   
    

    Если перенести заполнение документа с сервера на клиент то вот этот код отказывается работать:

     Шаблон.Application.Documents(1).Content.Find.Execute("{Сумма}",,,,,,,,, ЭтаФорма.Сумма, 2);              
            Шаблон.Application.Documents(1).Content.Find.Execute("{Контрагент}",,,,,,,,, ЭтаФорма.Контрагент, 2);   

  11. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.899
    Симпатии:
    1.035
    Баллы:
    204

    Чего говорит?
    Версия MSOffice на клиенте совпадает с версией на сервере?


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

  • Msvcr71 dll ошибка winx
  • Msvcr71 dll исправляем ошибку
  • Msvcr120 dll ошибка stalker
  • Msvcr120 dll sims 4 ошибка
  • Msvcr110 dll ошибка сити кар драйвинг