darkhome
28.11.13
✎
12:33
Создал в общихМакетах Макет типа ActiveDocument с расширением doc. Не получает с ним работать. Подскажите что не так. Делаю на УФ. Вот код
&НаКлиенте
Процедура Печать(Команда)
ПолучитьМакетНаСервере(«ПФ_DOC_Договор»);
//MSWord = Договор.Получить;
КонецПроцедуры
Процедура ПолучитьМакетНаСервере(ИмяМакета)
Договор = ПолучитьОбщийМакет(ИмяМакета);
MSWord = Договор.Получить;
конецпроцедуры
Выскакивает ошибка
Ошибка при вызове метода контекста (Получить)
MSWord = Договор.Получить();
Cube
28.11.13
✎
12:34
&НаСервере забыл?
darkhome
28.11.13
✎
12:36
Если не указываешь директиву, то по умолчанию означает что код будет выполняться на сервере
darkhome
28.11.13
✎
12:37
Да я пробовал и &НаСервере и &НаСервереБезКонтекста. Все-равно не получается
Cube
28.11.13
✎
12:40
А зачем ты пишешь Получить()? Ведь у тебя это не хранилище…
darkhome
28.11.13
✎
12:43
(4) А как надо сделать что бы заработало
Cube
28.11.13
✎
12:44
MSWord = ПолучитьОбщийМакет(ИмяМакета);
не?
darkhome
28.11.13
✎
12:48
А потом как начать работать с документом что бы можно было заполнять поля в нем?
darkhome
28.11.13
✎
12:49
Я ставлю
Документ = MSWord.Application.Documents(1);
Документ.Activate();
У меня сразу выскакивает
Поле объекта не обнаружено (Application)
Документ = MSWord.Application.Documents(1);
Весь инет облазил. У всех работает. Может я что с начала не правильно делал
Cube
28.11.13
✎
12:52
(8) А ты что, заполнять его на сервере собрался?
darkhome
28.11.13
✎
12:53
Ну вроде как так надо делать.
Cube
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
28.11.13
✎
13:06
(11) Спасибо. Попробую. Надеюсь заработает
Cube
28.11.13
✎
13:08
ПолучитьДанныеДляПечати() выполняется &НаСервере
darkhome
02.12.13
✎
12:03
&НаСервереБезКонтекста
Процедура ПолучитьМакетНаСервере()
Макет = ПолучитьОбщийМакет(«ПФ_DOC_Договор»);
Ком = Макет.Получить();
Ком.Application.Visible = 1;
конецПроцедуры
&НаКлиенте
Процедура Напечатать(Команда)
Состояние(НСтр(«ru = ‘Выполняется формирование печатных форм'»));
ПолучитьМакетНаСервере();
КонецПроцедуры
Ошибка при вызове метода контекста (Получить)
Ком = Макет.Получить();
Что не так? Сделал как написано в книге «Профессиональная разработка в системе 1С».
В общих макетах создал .doc макет, в него скопировал содержимое документа. Пытаюсь его получить, вылетает ошибка. Помоги разобрать, как сделать через ActiveDocument
darkhome
02.12.13
✎
12:04
Тип созданного макета — ActiveDocument
darkhome
02.12.13
✎
12:06
Делаю все это во внешней обработке
Kupogun
02.12.13
✎
12:08
(14) что за ошибка?
darkhome
02.12.13
✎
12:09
Ошибка при вызове метода контекста (Получить)
Ком = Макет.Получить();
Kupogun
02.12.13
✎
12:10
хз, попробуй так
текОбъект = ЭтаФорма.РеквизитФормыВЗначение(«Объект»);
Макет = текОбъект.ПолучитьМакет(«ПФ_DOC_Договор»);
darkhome
02.12.13
✎
12:11
(19) Делал, не получается
Cube
02.12.13
✎
12:15
(14) (18) Ты (4) Читал?
&НаСервереБезКонтекста
Процедура ПолучитьМакетНаСервере()
Ком = ПолучитьОбщийМакет(«ПФ_DOC_Договор»);
Ком.Application.Visible = 1;
конецПроцедуры
&НаКлиенте
Процедура Напечатать(Команда)
Состояние(НСтр(«ru = ‘Выполняется формирование печатных форм'»));
ПолучитьМакетНаСервере();
КонецПроцедуры
Так работает?
darkhome
02.12.13
✎
12:17
(4) я читал
darkhome
02.12.13
✎
12:19
(21) Сделал так, выскочила другая ошибка
Поле объекта не обнаружено (Application)
Ком.Application.Visible = 1;
Я еще раз повторюсь, делал по примеру, который приведен в книге.
darkhome
02.12.13
✎
12:20
Ну если не работает, как там приведен, вот я спрашиваю у Вас все, форумчане. Так как считаю этот форум одним из лучших по 1С, почти всегда тут можно найти решение проблем
Cube
02.12.13
✎
12:23
(23) А, точно, Получить() надо. Только что посмотрел, как раньше делал. Тогда у меня версия, что у тебя в макете что-то не то…
Cube
02.12.13
✎
12:26
+(25) Если оставить только суть, то:
Макет = ПолучитьМакет(«Макет»);
MSWord = Макет.Получить();
…
Документ = MSWord.Application.Documents(1);
Документ.Activate();
…
MSWord.Application.Visible = Истина;
MSWord.Activate();
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 |
434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
|
13.12.2017, 13:53 |
2 |
Владислаучык, в той же статье автор пишет ещё следующее: Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине. 1 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
13.12.2017, 14:09 [ТС] |
3 |
0 |
Владислаучык 3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
||||||||
13.12.2017, 16:52 [ТС] |
4 |
|||||||
Phil, Да, такой тип Добавлено через 2 часа 42 минуты
Так макет нельзя вернуть, а если на сервере сделать сразу, то тоже ошибка отсутствует отображение типа для ActiveDocument 0 |
polax 1897 / 1301 / 461 Регистрация: 16.01.2015 Сообщений: 5,656 |
||||
14.12.2017, 10:25 |
5 |
|||
Владислаучык, Вот рабочий код. Неделю назад делал ВПФ с макетом в Ворде
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
15.12.2017, 15:15 [ТС] |
6 |
polax, Приложение = Новый ComObject («Word.Application»); — вот тут ошибка, Ошибка при вызове конструктора (ComObject) 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 |
Либо делаете не на сервере я путаю? может наоборот — делаете на сервере? 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 |
|
||
---|---|---|---|
|
Здравствуйте. Импортировал word-документ в справочник «Филиал», в макет как Active document. Есть форма списка и форма элемента списка, сделал кнопку на форме элемента, при нажатии вызов процедуры: &НаКлиенте Макет = Справочники.Филиал.ПолучитьМакет(«Макет»).Получить();Документ = Макет.Application.Documents(1);Документ.Activate();Макет.Application.Visible = Истина;Макет.Activate(); Надо чтобы документ из макета открывался в ворде у пользователя, просто открывался без заполнения какими-либо данными из формы. Подскажите пожалуйста, добрые специалисты, как это правильно сделать? Может вообще по другому можно, как-то проще? Благодарю. |
Yandex |
|
||
---|---|---|---|
|
IBReiter |
|
||
---|---|---|---|
|
Код 1C v 8.3
|
Lavr |
|
||
---|---|---|---|
|
В жиме толстого клиента все работает, а в web-интерфейсе ошибка: Ошибка при вызове метода контекста (Получить) Через web-интерфейс этот метод должен работать? |
IBReiter |
|
||
---|---|---|---|
|
Проверил на платформе 8.3.6.2152 и в браузере хром — все ок, работает алоритм. У вас конфигурация вообще какая? |
Lavr |
|
||
---|---|---|---|
|
Платформа 8.2 Конфигурация УП, с нуля пишу, очень простая с 7-ю справочниками. |
IBReiter |
|
||
---|---|---|---|
|
Режимы совместимости? как вариант.. Ну а так, попробуйте на 8.3 ещё |
Lavr |
|
||
---|---|---|---|
|
Не работает в совместимости. Оставлю тогда так: &НаКлиентеПроцедура СлужебнаяЗаявка(Команда) Word = Новый COMОбъект («Word.Application»);Word.Documents.Open («192.168.47.130wudataWU,_Фамилия_Имя,_Филиал_г._Караганда.doc»);Документ = Word.Application.Documents(1);Документ.Application.Visible = Истина;Документ.Activate();КонецПроцедуры |
IBReiter |
|
||
---|---|---|---|
|
И на 8.3 не работает? Вам совместимость нужна |
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе. |
-
Есть обработка в которой в макет помещен документ Word-овский. Я его получаю заполняю шаблон значениями из Таблицы значений. Проблема в том что на файловом варианте эта обработка работает а на серверном нет. В чем может быть проблема?
Ошибка выскакивает здесь:
Сама обработка:
Вложения:
-
Еще вопрос в тему.
Почему при сохранении макета типа active document в файл word кодом:
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); Макет = ОбработкаОбъект.ПолучитьМакет("ШаблонПисьмаПросрочка"); ИмяФайла = КаталогВременныхФайлов() + ""файл.doc"; Макет.Записать(ИмяФайла);
Я получаю вместо нормального документа вот такой
-
Offline
nomad_irk
Гуру в 1С
- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.899
- Симпатии:
- 1.035
- Баллы:
- 204
Какой тип значения у Макет?
-
-
Offline
nomad_irk
Гуру в 1С
- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.899
- Симпатии:
- 1.035
- Баллы:
- 204
Ну а что ж вы хотите?
Простым Записать() там непойми чего может быть….Вроде еще нужно сделать:
OLEMSWord = Макет.Получить();
-
Из статьи: http://infostart.ru/public/270277/
Когнитивный диссонанс
&НаСервере АктивныйДокумент = ПолучитьМакет("Макет"); КомОбъект = АктивныйДокумент.Получить();
Вот самые первые строчки, на которые натыкается в гугле юный неофит. В файловом варианте такой код сработает корректно (неважно в толстом или тонком клиенте). Т.к. и сервер и клиент у нас находятся на одной машине, и MS Word тоже установлен на этой машине.
А давайте представим, что у нас клиент-сервер, да ещё и сервер находится на другой машине. Будет оно работать в тонком клиенте? Нет. И тут возникнет когнитивный диссонанс. WTF?
— Объединение сообщений, 5 апр 2017 —
У меня как раз серверный вариант
-
Offline
nomad_irk
Гуру в 1С
- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.899
- Симпатии:
- 1.035
- Баллы:
- 204
Когнитивного диссонанса нет, т.к. в режиме управляемого приложения нет объекта типа ActiveDocument от слова совсем
Выход: макет делать в виде двоичных данных, и гонять результат на клиента через временное хранилище.
-
&НаСервере Функция ПолучитьДанныеМакета() АдресХранилища = Новый УникальныйИдентификатор(); МакетПисьма = Обработки.ФормированиеПисемПоДепонентам.ПолучитьМакет("ШаблонПисьмо"); Возврат ПоместитьВоВременноеХранилище(МакетПисьма, АдресХранилища); КонецФункции &НаКлиенте Процедура СформироватьПисьма(Команда) Попытка Индификатор = ПолучитьДанныеМакета(); МакетПисьма = ПолучитьИзВременногоХранилища(Индификатор); ИмяФайла = "Письмо.doc"; ИмяФайлаПолное = "E:ЭРЯковенко" + ИмяФайла; МакетПисьма.Записать(ИмяФайлаПолное); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры
Я правильно понял?
— Объединение сообщений, 5 апр 2017 —
Так что это уже пережиток?
-
Offline
nomad_irk
Гуру в 1С
- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.899
- Симпатии:
- 1.035
- Баллы:
- 204
В первом приближении — да.
Только проще будет MSWord установить на сервер, выполнять заполнение и сохранение файла на сервере и уже результат гнать на клиента иначе придется на каждом клиенте устанавливать MSWord.
-
Есть код:
&НаКлиенте Процедура ПолучитьМакет(Команда) Попытка Индификатор = ПолучитьДанныеМакета(); МакетПисьма = ПолучитьИзВременногоХранилища(Индификатор); ИмяФайла = "Письмо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);
-
Offline
nomad_irk
Гуру в 1С
- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.899
- Симпатии:
- 1.035
- Баллы:
- 204
Чего говорит?
Версия MSOffice на клиенте совпадает с версией на сервере?
Lavr |
|
||
---|---|---|---|
|
Здравствуйте. Импортировал word-документ в справочник «Филиал», в макет как Active document. Есть форма списка и форма элемента списка, сделал кнопку на форме элемента, при нажатии вызов процедуры: &НаКлиенте Макет = Справочники.Филиал.ПолучитьМакет(«Макет»).Получить();Документ = Макет.Application.Documents(1);Документ.Activate();Макет.Application.Visible = Истина;Макет.Activate(); Надо чтобы документ из макета открывался в ворде у пользователя, просто открывался без заполнения какими-либо данными из формы. Подскажите пожалуйста, добрые специалисты, как это правильно сделать? Может вообще по другому можно, как-то проще? Благодарю. |
Yandex |
|
||
---|---|---|---|
|
IBReiter |
|
||
---|---|---|---|
|
Код 1C v 8.3
|
Lavr |
|
||
---|---|---|---|
|
В жиме толстого клиента все работает, а в web-интерфейсе ошибка: Ошибка при вызове метода контекста (Получить) Через web-интерфейс этот метод должен работать? |
IBReiter |
|
||
---|---|---|---|
|
Проверил на платформе 8.3.6.2152 и в браузере хром — все ок, работает алоритм. У вас конфигурация вообще какая? |
Lavr |
|
||
---|---|---|---|
|
Платформа 8.2 Конфигурация УП, с нуля пишу, очень простая с 7-ю справочниками. |
IBReiter |
|
||
---|---|---|---|
|
Режимы совместимости? как вариант.. Ну а так, попробуйте на 8.3 ещё |
Lavr |
|
||
---|---|---|---|
|
Не работает в совместимости. Оставлю тогда так: &НаКлиентеПроцедура СлужебнаяЗаявка(Команда) Word = Новый COMОбъект («Word.Application»);Word.Documents.Open («\192.168.47.130wudataWU,_Фамилия_Имя,_Филиал_г._Караганда.doc»);Документ = Word.Application.Documents(1);Документ.Application.Visible = Истина;Документ.Activate();КонецПроцедуры |
IBReiter |
|
||
---|---|---|---|
|
И на 8.3 не работает? Вам совместимость нужна |
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху) |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
1 |
|
13.12.2017, 12:05. Показов 17755. Ответов 10
Добрый день, вот пытаюсь напечатать документ MSWorld в обработке, делаю по примеру, вот так ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»); MSWord = СсылкаМакет.Получить();// И вот тут выдает ошибку Ошибка при вызове метода контекста (Получить) Подскажите плз где ошибка? http://programmist1s.ru/pechat… 8-3-i-8-2/ — вот брал отсюда Добавлено через 22 минуты 0 |
434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
|
13.12.2017, 13:53 |
2 |
Владислаучык, в той же статье автор пишет ещё следующее: Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине. 1 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
13.12.2017, 14:09 [ТС] |
3 |
0 |
Владислаучык 3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
||||||||
13.12.2017, 16:52 [ТС] |
4 |
|||||||
Phil, Да, такой тип Добавлено через 2 часа 42 минуты
Так макет нельзя вернуть, а если на сервере сделать сразу, то тоже ошибка отсутствует отображение типа для ActiveDocument 0 |
polax 1904 / 1304 / 465 Регистрация: 16.01.2015 Сообщений: 5,676 |
||||
14.12.2017, 10:25 |
5 |
|||
Владислаучык, Вот рабочий код. Неделю назад делал ВПФ с макетом в Ворде
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 638 |
|
15.12.2017, 15:15 [ТС] |
6 |
polax, Приложение = Новый ComObject («Word.Application»); — вот тут ошибка, Ошибка при вызове конструктора (ComObject) 0 |
1904 / 1304 / 465 Регистрация: 16.01.2015 Сообщений: 5,676 |
|
15.12.2017, 18:19 |
7 |
Владислаучык, Либо делаете не на сервере, либо на компьютере не установлен Ворд 1 |
1195 / 733 / 212 Регистрация: 22.04.2013 Сообщений: 5,385 Записей в блоге: 1 |
|
15.12.2017, 21:17 |
8 |
Либо делаете не на сервере я путаю? может наоборот — делаете на сервере? 1 |
1904 / 1304 / 465 Регистрация: 16.01.2015 Сообщений: 5,676 |
|
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 |
1904 / 1304 / 465 Регистрация: 16.01.2015 Сообщений: 5,676 |
|
15.06.2022, 15:54 |
11 |
Dfolt, Вот из моих закладок по которым делаю подобное 0 |
В платформе 1С сообщения об ошибках бывают достаточно запутаны, и без должных навыков разобраться в причинах достаточно сложно. Вот и сообщение об ошибке при вызове контекста может ввести в ступор начинающего разработчика. Однако в подавляющем большинстве случаев мы видим подобное сообщение, если разработчик допустил ошибку в своем коде. Причем речь зачастую идет не об орфографических ошибках, а о логических.
Исправляем ситуацию
Чтобы избавиться от этого неприятного сообщения об ошибке при вызове метода контекста, следует понимать, что контекстом называют методы платформы 1С. Значит в определенной строке кода воспользовались методом с неверными параметрами или вызвали его не от того владельца. Всегда внимательно и полностью читайте сообщения об ошибках – часто в них содержится указание на строку и метод, вызвавший ошибку. Это поможет сэкономить время на отладку и поиск проблемного места в коде.
Рассмотрим действия разработчика на примере со специально допущенной ошибкой. Мы запускаем на исполнение нижеприведенный кусок кода с запросом, в котором забыли дописать условие отбора. Компилятор 1С пропускает такую процедуру, так как орфографических ошибок в написании команд мы не допустили. Однако в режиме предприятия нас ждет такое сообщение об ошибке:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| ";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
КонецЦикла;
Приведенный текст ошибки программисту 1С скажет, что в модуле формы обработки «ЧтениеЗаписьXML на 152 строчке кода не может выполниться запрос. Причина в том, что на 17 строчке запроса нет чего-то, что ждал компилятор. Таким образом, чтобы убрать подобное сообщение, необходимо выяснить, что там должно быть и написать недостающий код.
Увидев вышеприведенный кусок кода, разработчик заметит, что в запросе есть служебное слово «ГДЕ», дающее сигнал 1С, что дальше будет условие. Но мы забыли дописать его и, естественно, система с помощью сообщения об ошибке спрашивает нас – «а где условие?». Чтобы исправить эту ситуацию необходимо либо убрать оператор «ГДЕ» из запроса, либо добавить условие.
Но ошибки могут быть не только в текстах запросов. Допустим, мы хотим выбрать всю номенклатуру и узнать, входит ли она в определенную группу. Проверка происходит с помощью метода «ПринадлежитЭлементу» и его параметра, который должен быть типа СправочникСсылка. Мы опять допускаем ошибку и вместо ссылки в параметр метода помещаем строку, содержащую имя переменной.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.ВерсияДанных КАК ВерсияДанных,
| Номенклатура.ПометкаУдаления КАК ПометкаУдаления,
| Номенклатура.Родитель КАК Родитель,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
| Номенклатура.Код КАК Код,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Артикул КАК Артикул,
| Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
| Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры,
| Номенклатура.Предопределенный КАК Предопределенный,
| Номенклатура.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа ";
НужнаяГруппаЭлементов = Справочники.Номенклатура.НайтиПоНаименованию("Мебель");
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщить(ВыборкаДетальныеЗаписи.Ссылка.ПринадлежитЭлементу("НужнаяГруппаЭлементов"));
КонецЦикла;
1С выдает настолько же информативное сообщение, из которого мы понимаем, что на 158 строке у 1 параметра неправильный тип. Но что же делать, если мы не знаем, какой тип должен быть? В этом нам поможет Синтакс-помощник, встроенный в платформу 1С.
В конфигураторе находим строку и метод, на который указывало сообщение об ошибке, и нажимаем на него правой кнопкой мыши. Выбираем пункт «Поиск в синтакс-помощнике» и платформа самостоятельно ищет справочную информацию по выделенному методу. В справке мы видим не только подробное описание параметров и самого метода, но и пример. Сверив пример с нашим кодом, приходит понимание, что кавычки не нужны и без них все работает.
Чаще всего причиной подобных ошибок выступают следующие факторы:
- Невнимательность;
- Отсутствие опыта или знаний;
- Несогласованность действий разработчиков друг с другом;
- Изменения в методах контекста в новых версиях платформы.
Но ошибки при разработке ПО случаются постоянно, поскольку иногда ошибаются даже специалисты с многолетним опытом. Самое главное – уметь исправлять их и учиться на них. Постепенно вы будете видеть сообщения об ошибках все реже и научитесь замечать подобные «опечатки» еще до запуска 1С.
Войти или зарегистрироваться
[РЕШЕНО] Ошибка при вызове метода контекста получитьмакет activedocument
Тема в разделе «Конфигурирование на платформе «1С:Предприятие 8″», создана пользователем Persempre, 29 янв 2015.
-
Offline
Persempre
Опытный в 1С
- Регистрация:
- 18 июл 2012
- Сообщения:
- 868
- Симпатии:
- 3
- Баллы:
- 29
Доброго времени суток. Суть проблемы в печати как понимаете. Запихнул Word в макет. Дальше заполнил закладки, обработал и тд. На локальной машине работает. А на боевой базе не взлетело. Код ниже, в чем затык не пойму
Код:
&НаКлиенте Процедура УведомлениеОбУвольненииИГ(Команда) УведомлениеОбУвольненииИГНаСервере(); КонецПроцедуры &НаСервере Процедура УведомлениеОбУвольненииИГНаСервере() //ActiveDoc) ТаблицаПараметров.Очистить(); // Открываем Word ActiveDoc = Справочники.ДополнительныеСведенияИФайлы.ПолучитьМакет("УведомлениеОбУвольнении"); WordObj = ActiveDoc.Get(); WordObj.Application.Visible = 1;
Persempre,
29 янв 2015
#1
-
Offline
nomad_irk
Гуру в 1С
- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.901
- Симпатии:
- 1.035
- Баллы:
- 204
на сервере не установлен WORD?
nomad_irk,
29 янв 2015
#2
Persempre нравится это.
-
Offline
Draco
Модераторы
Команда форума
Модератор
- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
Ну первый вопрос парвильный Офис то на сервере есть?
Persempre нравится это.
-
Offline
Persempre
Опытный в 1С
- Регистрация:
- 18 июл 2012
- Сообщения:
- 868
- Симпатии:
- 3
- Баллы:
- 29
Persempre,
30 янв 2015
#4
-
Offline
nomad_irk
Гуру в 1С
- Регистрация:
- 20 окт 2008
- Сообщения:
- 9.901
- Симпатии:
- 1.035
- Баллы:
- 204
nomad_irk,
30 янв 2015
#5
Persempre нравится это.
-
Offline
Draco
Модераторы
Команда форума
Модератор
- Регистрация:
- 28 окт 2009
- Сообщения:
- 13.722
- Симпатии:
- 961
- Баллы:
- 204
Ну или права у пользователя под которым это запускается на сервере еть на офис серверный.
-
Offline
Persempre
Опытный в 1С
- Регистрация:
- 18 июл 2012
- Сообщения:
- 868
- Симпатии:
- 3
- Баллы:
- 29
Спасибо, вопрос решен. Заполнение нужно было делать на клиенте. Только скорость заполнения адски маленькая. как буд-то человек кнопки нажимает. Как ускорить не знаю
Persempre,
30 янв 2015
#7
(Вы должны войти или зарегистрироваться, чтобы ответить.)
Показать игнорируемое содержимое
- Похожие темы
-
8.х
Ошибка при вызове метода контекста (Выполнить):Синтаксическая ошибка «И»
She,
3 сен 2009, в разделе: Отчеты и обработки для «1С:Предприятие 8»
- Ответов:
- 3
- Просмотров:
- 2.908
-
8.х ОБМЕН
Ошибка выполнения запроса (Ошибка при вызове метода контекста (Выполнить))
AlenaAS,
27 авг 2014, в разделе: Обмен данными в «1С:Предприятие 8»
- Ответов:
- 9
- Просмотров:
- 4.867
-
[РЕШЕНО]
Ошибка в обработке Ошибка при вызове метода контекста (Выполнить) плюс вылет программы
Primorsky,
12 янв 2015, в разделе: «1С:Бухгалтерия БП»
- Ответов:
- 3
- Просмотров:
- 18.107
- Ваше имя или e-mail:
- У Вас уже есть учётная запись?
-
- Нет, зарегистрироваться сейчас.
- Да, мой пароль:
-
Забыли пароль?
-
Запомнить меня
Поиск
-
- Искать только в заголовках
- Сообщения пользователя:
-
Имена участников (разделяйте запятой).
- Новее чем:
-
- Искать только в этой теме
- Искать только в этом разделе
- Отображать результаты в виде тем
-
Быстрый поиск
- Последние сообщения
Больше…
Lavr |
|
||
---|---|---|---|
|
Здравствуйте. Импортировал word-документ в справочник «Филиал», в макет как Active document. Есть форма списка и форма элемента списка, сделал кнопку на форме элемента, при нажатии вызов процедуры: &НаКлиенте Макет = Справочники.Филиал.ПолучитьМакет(«Макет»).Получить();Документ = Макет.Application.Documents(1);Документ.Activate();Макет.Application.Visible = Истина;Макет.Activate(); Надо чтобы документ из макета открывался в ворде у пользователя, просто открывался без заполнения какими-либо данными из формы. Подскажите пожалуйста, добрые специалисты, как это правильно сделать? Может вообще по другому можно, как-то проще? Благодарю. |
Yandex |
|
||
---|---|---|---|
|
IBReiter |
|
||
---|---|---|---|
|
Код 1C v 8.3
|
Lavr |
|
||
---|---|---|---|
|
В жиме толстого клиента все работает, а в web-интерфейсе ошибка: Ошибка при вызове метода контекста (Получить) Через web-интерфейс этот метод должен работать? |
IBReiter |
|
||
---|---|---|---|
|
Проверил на платформе 8.3.6.2152 и в браузере хром — все ок, работает алоритм. У вас конфигурация вообще какая? |
Lavr |
|
||
---|---|---|---|
|
Платформа 8.2 Конфигурация УП, с нуля пишу, очень простая с 7-ю справочниками. |
IBReiter |
|
||
---|---|---|---|
|
Режимы совместимости? как вариант.. Ну а так, попробуйте на 8.3 ещё |
Lavr |
|
||
---|---|---|---|
|
Не работает в совместимости. Оставлю тогда так: &НаКлиентеПроцедура СлужебнаяЗаявка(Команда) Word = Новый COMОбъект («Word.Application»);Word.Documents.Open («\\192.168.47.130\wu\data\WU,_Фамилия_Имя,_Филиал_г._Караганда.doc»);Документ = Word.Application.Documents(1);Документ.Application.Visible = Истина;Документ.Activate();КонецПроцедуры |
IBReiter |
|
||
---|---|---|---|
|
И на 8.3 не работает? Вам совместимость нужна |
Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе. |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
|
1 |
|
13.12.2017, 12:05. Показов 18062. Ответов 10
Добрый день, вот пытаюсь напечатать документ MSWorld в обработке, делаю по примеру, вот так ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»); MSWord = СсылкаМакет.Получить();// И вот тут выдает ошибку Ошибка при вызове метода контекста (Получить) Подскажите плз где ошибка? http://programmist1s.ru/pechat… 8-3-i-8-2/ — вот брал отсюда Добавлено через 22 минуты
0 |
434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
|
13.12.2017, 13:53 |
2 |
Владислаучык, в той же статье автор пишет ещё следующее: Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине.
1 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
|
13.12.2017, 14:09 [ТС] |
3 |
0 |
Владислаучык 3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
||||||||
13.12.2017, 16:52 [ТС] |
4 |
|||||||
Phil, Да, такой тип Добавлено через 2 часа 42 минуты
Так макет нельзя вернуть, а если на сервере сделать сразу, то тоже ошибка отсутствует отображение типа для ActiveDocument
0 |
polax 1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
||||
14.12.2017, 10:25 |
5 |
|||
Владислаучык, Вот рабочий код. Неделю назад делал ВПФ с макетом в Ворде
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
|
15.12.2017, 15:15 [ТС] |
6 |
polax, Приложение = Новый ComObject («Word.Application»); — вот тут ошибка, Ошибка при вызове конструктора (ComObject)
0 |
1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
|
15.12.2017, 18:19 |
7 |
Владислаучык, Либо делаете не на сервере, либо на компьютере не установлен Ворд
1 |
1231 / 763 / 218 Регистрация: 22.04.2013 Сообщений: 5,589 Записей в блоге: 1 |
|
15.12.2017, 21:17 |
8 |
Либо делаете не на сервере я путаю? может наоборот — делаете на сервере?
1 |
1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
|
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 |
1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
|
15.06.2022, 15:54 |
11 |
Dfolt, Вот из моих закладок по которым делаю подобное
0 |
Дорогие форумчане! Нужно печатать в 1С ЗУП 2.5 договор с сотрудником, но почему-то не работает создание печатного документа Active Document’а Word: При нажатии кнопки создания печатного документа выдаёт ошибку: «Не удалось сформировать внешнюю печатную форму. Ошибка при вызове метода контекста (Получить): Не удалось создать объект. Возможно, отсутствует соответсвующее приложение.» Но Ворд на компьютере установлен и хорошо открывает документы. Может кто-нибудь знает, в чём может быть дело?
«Но Ворд на компьютере установлен и хорошо открывает документы.» Какой версии и давно ли установлен?
Ворд 2007-й, у других пользователей он тоже стоит и создаёт документы Active Document Word у других пользователей, а на именно на одном компьютере активно не хочет это делать
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям