grantmet
07.08.12 — 17:47
Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Word): Неверно указано имя файла.
Попробуйте выполнить следующие действия:
* Убедитесь, что путь введен правильно.
* Выберите нужный файл из списка файлов и папок.
Не могу понять куда копать и что такое (SaveAs).
grantmet
1 — 07.08.12 — 17:49
Кстати
конфигурация «Управление торговым предприятием для Украины», редакция 1.2. (1.2.8.7) Платформа 1С:Предприятие 8.2 (8.2.15.301)
Arxangel06
2 — 07.08.12 — 19:22
SaveAs — это метод в данном случае Word. Копать в процедуру, выводящую внешнюю печатную форму в файл. Если имя для файла задается вручную, то соответственно смотреть внимательно на это имя и думать, по какому пути платформа пытается записать файл. Например имеют значение права на запись в определенную папку.
grantmet
3 — 08.08.12 — 11:37
А может даст кто ссылку где можно почитать об SaveAs.
А то вроде путь ввожу правильно да файл выбираю нужный.
А оно мне
Попробуйте выполнить следующие действия:
* Убедитесь, что путь введен правильно.
* Выберите нужный файл из списка файлов и папок.
бомболюк
4 — 08.08.12 — 11:40
насколько я помню, в SaveAs надо не только имя файла указывать, но и формат сохранения (для офисов старше 2003 чтоль года или 2007). Сделай так: запусти запись макроса в Ворде, сохрани какое нить файло через «Сохранить как..», и погляди в коде VB чего там подставляется в параметры.
grantmet
5 — 08.08.12 — 11:42
и хоть я бухгалтер я постараюсь сделать так как Вы бомболюк указали.
бомболюк
6 — 08.08.12 — 11:44
(5) желаю удачи
Arxangel06
7 — 09.08.12 — 11:32
читать про методы объектов офиса лучше всего в первоисточнике, например тут:
http://msdn.microsoft.com/en-us/library/office/bb221597(v=office.12)
grantmet
8 — 09.08.12 — 22:16
Спасибо почитаю.
smaharbA
9 — 09.08.12 — 22:39
Ф1 и не парить мозги
smaharbA
10 — 09.08.12 — 22:39
(7) читать лучше всего в (9)
Arxangel06
11 — 10.08.12 — 11:43
(10)Сам то понял что сказал? Методы объектов Ms Office скрыты от рядового юзера и предназначены для девелоперов. С каких это пор микрософт девелоперскую информацию пишет в хэлпе? Или у тебя Ms Office Developer Edition?
smaharbA
12 — 10.08.12 — 11:48
(11) что Вы хотели сказать ?
smaharbA
13 — 10.08.12 — 11:49
жмите ф1 — реально помогает
Arxangel06
14 — 10.08.12 — 12:14
(12)Уважаемый, я хотел сказать, что Вы таки посылаете и меня, и ТСа практически в пешее эротическое путешествие. В какой программе мы должны нажимать ф1? В Excel/word? Так там нет описания объектов. В 1с? А там то уже откуда возьмется описание объектов Excel/word? Речь изначально идет о взаимодействии 1с и word. И вот ведь что характерно — в синтаксис-помощнике конструкции SaveAs нет вообще, а в Вашем любимом ф1 эта конструкция относится только к запуску самой платформы. Итак куда должен пойти ТС?
smaharbA
15 — 10.08.12 — 13:02
(14) может забъемся на ящик вискаря ?
Arxangel06
16 — 10.08.12 — 13:47
(15)Я вискарь не пью, так что не интересно. А может все-таки не понты разгибать, а ответить на вопрос?
smaharbA
17 — 10.08.12 — 13:52
(16) какой вопрос ? и какие такие понты ?
smaharbA
18 — 10.08.12 — 13:57
http://www.n-d.ru/pub/msof1.png
или Вам рассказать, как нажать ф1 в мсо ?
Arxangel06
19 — 10.08.12 — 14:15
(18)Мой вопрос был — «в какой программе нажать ф1». Правильный ответ был бы в этом случае «в Visual Basic Project Manager». Сложно? Ответить «как юзеру» не позволяет статус адынэсэра? Впрочем, это уже переход на личности. Но для справки — далеко не во все редакции МСО входит этот самый VBA Manager, и даже если входит, вполне может быть не установлен на компе.
Касаемо «понтов» — фраза «забьемся на ящик вискаря» иначе чем пустой понт дворового потсана не воспринимается, хотите предложить спор — предлагайте спор, а забивайтесь.
smaharbA
20 — 10.08.12 — 14:33
если бы Вы нажали ф1 не в менеджере, и были бы внимательны — получили бы тот же результат, а не проявляли свой гонор, и не пытались бы оспаривать сказанное знающими людьми.
smaharbA
21 — 10.08.12 — 14:34
еще скриншот ?
Arxangel06
22 — 10.08.12 — 14:58
(21)Да, пожалуй.
smaharbA
23 — 10.08.12 — 15:03
Arxangel06
24 — 10.08.12 — 15:23
Arxangel06
25 — 10.08.12 — 15:24
(24)Извиняюсь за тэги, это была моя первая ссылка здесь.
grantmet
26 — 12.08.12 — 18:38
Спасибо всем.Решил проблему.
nikolas2605
30.12.13 — 00:02
Здравствуйте. Пишу такой код (привожу фрагмент) по созданию договоров и их сохранению в Word
Договор = Документы.ЗаказПокупателя.ПолучитьМакет(«ДоговорНаОборудование1»);
MSWord = Договор.Получить();
Попытка
Doc = MSWord.Application.Documents(1);
Doc.Activate();
Replace = Doc.Content.Find;
FindText = «<Директор>»;
MatchCase = Ложь;
MatchWholeWord = Истина;
MatchWildcards = Ложь;
MatchSoundsLike = Неопределено;
MatchAllWordForms = Неопределено;
Forward = Истина;
Wrap = Неопределено;
Format_ = Ложь;
РезультатСклонения=Падеж(Фио,-1 ,3,»231″);
ReplaceWith = РезультатСклонения;
Replace.Execute(FindText,MatchCase,MatchWholeWord,MatchWildcards,MatchSoundsLike,MatchAllWordForms,Forward,Wrap,Format_,ReplaceWith);
MSWord.Application.Visible = Истина;
MSWord.Activate();
ИмяФайла = Результат.Контрагент.НаименованиеПолное;
Каталог = «D:LocalDogovorOborudovanie»;
MSWord.SaveAS(Каталог + «» + ИмяФайла + «(оборудование)»,16);
Исключение
Сообщить(ОписаниеОшибки());
MSWord.Application.Quit();
КонецПопытки;
Иногда меня выкидывает с ошибкой, что {Документ.ЗаказПокупателя.МодульМенеджера(11636)}: Ошибка при вызове метода контекста (SaveAS): Произошла исключительная ситуация (Microsoft Word): Ошибка команды
В чём тут дело, может кто подскажет? Если контрагент — ИП или розничный покупатель, договор нормально сохраняется; если ООО — через раз. Конфигурация «Управление небольшой фирмой» ред.1.4. Заранее спасибо.
Vexcel
1 — 30.12.13 — 00:08
(0) ну наверно что то не нравиться в имени файла, может какой ни будь странный символ, или вовсе NULL приходит
Поставь в сообщение с ошибкой ещё и ИмяФайла
nikolas2605
2 — 30.12.13 — 00:09
(1) Пробовал кавычки убирать у ООО-шек — пока толку нет
nikolas2605
3 — 30.12.13 — 00:12
Например, ООО «ИТБ-Семигорье» меня выкидывает, а ООО «Ланч» сохраняет…
nikolas2605
4 — 30.12.13 — 00:15
Иду в отладчик, получаю, что когда меня выкидывает, программа пишет: метод объекта не обнаружен SaveAs. Куда смотреть далее, ведь такое не на всех контрагентах?
alexei366
5 — 30.12.13 — 00:19
(4) Так мож обращайся к объекту документа а не приложения.
Я через метод объекта документа делаю сохранение а не через метод приложения (я даж честно говоря и не задумывался и не смотрел что у приложения ворда тож такой метод есть), и удаляю все запрещенные виндой символы в имени файла перед сохранением
nikolas2605
6 — 30.12.13 — 00:24
(4)Извини за глупый вопрос, это как? Я пока начинающий, набираюсь опыта. Примеров не надо, просто объясни
alexei366
7 — 30.12.13 — 00:54
Doc.SaveAS(…)
alexei366
8 — 30.12.13 — 00:56
(7) И вообще вроде метод не SaveAS а SaveAs
alexei366
9 — 30.12.13 — 01:00
nikolas2605
10 — 30.12.13 — 01:01
(9) Спасибо. сейчас смотрю. Пока и так выкинуло.
nikolas2605
11 — 30.12.13 — 01:07
Ссылка полезная. Если вычисляю выражение MSWord = Договор.Получить(), то мне на MSWord выдаёт свойства, а не методы…
alexei366
12 — 30.12.13 — 01:18
(11) А ты какбудто у какогонить объекта видел чтоб отладчик методы подсказвал?
alexei366
13 — 30.12.13 — 01:19
(11) А табличные части как заполнять будешь? или у тебя их нет?
nikolas2605
14 — 30.12.13 — 01:23
(12) Не видел. Пока ещё первый раз так печать реализую.
(13) Нет
nikolas2605
15 — 30.12.13 — 01:27
Какие символы виндой недопустимы?
alexei366
16 — 30.12.13 — 01:39
(15) Создай файл на рабочем столе, начни его переименовывать и попытайся поставить двоеточие, винда те покажет
alexei366
17 — 30.12.13 — 01:40
(14) Чот я у т в коде печати не вижу
nikolas2605
18 — 30.12.13 — 01:43
(17) пока не написал печать
nikolas2605
19 — 30.12.13 — 01:50
(17)Что программе не понравилось? Написал так:
Doc.SaveAS(Каталог + «» + ИмяФайла,16);
Сохранила!
nikolas2605
20 — 30.12.13 — 01:57
Рано радовался
nikolas2605
21 — 30.12.13 — 02:23
Сделал так:
ИмяФайла = Результат.Контрагент.Наименование;
И так как наименование — это краткое наименование контрагента, винда не пропускала кавычки в нём. Убрал кавычки в кратком наименовании в контрагенте, в полном оставил. Сохраняет.
alexei366
22 — 30.12.13 — 02:26
(21) Ты чо тупишь, сделай отдельную функцию типа :
Функция ПреобразоватьСтрокуВИмяФайла(ВходнаяСтрока)
ВходнаяСтрока = СтрЗаменить(ВходнаяСтрока,»:»,»»);
ВходнаяСтрока = СтрЗаменить(ВходнаяСтрока,»»»»,»»);
……..
Возврат ВходнаяСтрока;
КонецФункции
alexei366
23 — 30.12.13 — 02:27
(22) И Соответственно
ИмяФайла = ПреобразоватьСтрокуВИмяФайла(Результат.Контрагент.Наименование);
alexei366
24 — 30.12.13 — 02:27
(22) Ток в объявлении вот так
Функция ПреобразоватьСтрокуВИмяФайла(Знач ВходнаяСтрока)
nikolas2605
25 — 30.12.13 — 11:21
(24)Сработало. Спасибо. С наступающим Новым Годом!
alexei366
26 — 30.12.13 — 11:31
(25) Ага давай, тя тоже
- Remove From My Forums
-
Общие обсуждения
-
Здравствуйте. Пытаюсь создать и сохранить документ в нужном мне месте.
Word.Application wordapp; wordapp = new Word.Application(); Word.Table table; wordapp.Visible = false; object missing = System.Reflection.Missing.Value; wordapp.Documents.Add(ref missing, false, Word.WdNewDocumentType.wdNewBlankDocument, true); Word.Document document = wordapp.Documents[1]; Word.Paragraph wordparagraph = (Word.Paragraph)document.Paragraphs[1]; wordparagraph.Range.Text = "lalalala"; object fileName = @"c:1privetprivet.doc"; document.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
после команды SaveAs открывается окно word «Сохранение файла», где нужно указать
вручную местоположение файла (хотя я явно указал куда нужно сохранять). пробовал и параметры функции менять и местоположение файла, но толку 0.Подскажите как мне сохранить выбранный мной документ в нужное место?
Microsoft.Office.Interop.Word v 12.0.0
Office 2010
.net 4.0
- Изменен тип
31 марта 2014 г. 7:47
Тема неаткина
- Изменен тип
Using
MS Office 2007
VS 2010 — Pointing frame work to 3.5
Windows 7
referenced NET Component Word 12.0 dll in C# code
——————————————————-
I wrote a console application to create PDF ..when I am running this application from my user (like double click) it is creating PDFs
But when I configured the same console application as Windoows Service (run as User (me), as SYSTEM, As Local same result)..I am getting exception from SaveAs command
Can any body help me? Obviously it is missing some thing when the application is running as a Windows Service. What it is?
Some dll? DCOM settings? another security? what it is I can’t think straungt? Help me!!!
Exception:
System.Runtime.InteropServices.COMException (0x800A1066): Command failed
at Microsoft.Office.Interop.Word.DocumentClass.SaveAs(Object& FileName, Object& FileFormat, Object& LockComments, Object& Password, Object& AddToRecentFiles, Object& WritePassword, Object& ReadOnlyRecommended, Object&
EmbedTrueTypeFonts, Object& SaveNativePictureFormat, Object& SaveFormsData, Object& SaveAsAOCELetter, Object& Encoding, Object& InsertLineBreaks, Object& AllowSubstitutions, Object& LineEnding, Object& AddBiDiMarks)
at SnapshotReportGenerator.reportWrkThread.createReports(ArrayList ScreenData, String newStorePath, Int64 jobId, Int64 recId, String ifileName, Int64 queueId) in C:C#SnapshotReportGeneratorSnapshotReportGeneratorreportWrkThread.cs:line 224
Code:
object fileFormat = Word.WdSaveFormat.wdFormatPDF;
oDoc.SaveAs(ref fileName,
ref fileFormat,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing);
- Moved by
Saturday, July 28, 2012 1:16 PM
not using VSTO technology (From:Visual Studio Tools for Office)
Using
MS Office 2007
VS 2010 — Pointing frame work to 3.5
Windows 7
referenced NET Component Word 12.0 dll in C# code
——————————————————-
I wrote a console application to create PDF ..when I am running this application from my user (like double click) it is creating PDFs
But when I configured the same console application as Windoows Service (run as User (me), as SYSTEM, As Local same result)..I am getting exception from SaveAs command
Can any body help me? Obviously it is missing some thing when the application is running as a Windows Service. What it is?
Some dll? DCOM settings? another security? what it is I can’t think straungt? Help me!!!
Exception:
System.Runtime.InteropServices.COMException (0x800A1066): Command failed
at Microsoft.Office.Interop.Word.DocumentClass.SaveAs(Object& FileName, Object& FileFormat, Object& LockComments, Object& Password, Object& AddToRecentFiles, Object& WritePassword, Object& ReadOnlyRecommended, Object&
EmbedTrueTypeFonts, Object& SaveNativePictureFormat, Object& SaveFormsData, Object& SaveAsAOCELetter, Object& Encoding, Object& InsertLineBreaks, Object& AllowSubstitutions, Object& LineEnding, Object& AddBiDiMarks)
at SnapshotReportGenerator.reportWrkThread.createReports(ArrayList ScreenData, String newStorePath, Int64 jobId, Int64 recId, String ifileName, Int64 queueId) in C:C#SnapshotReportGeneratorSnapshotReportGeneratorreportWrkThread.cs:line 224
Code:
object fileFormat = Word.WdSaveFormat.wdFormatPDF;
oDoc.SaveAs(ref fileName,
ref fileFormat,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing,
ref oMissing);
- Moved by
Saturday, July 28, 2012 1:16 PM
not using VSTO technology (From:Visual Studio Tools for Office)
Ermak27 4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
||||
1 |
||||
1C 8.x 25.06.2019, 11:26. Показов 8332. Ответов 17 Метки нет (Все метки)
Добрый день!
__________________ 0 |
198 / 158 / 45 Регистрация: 23.08.2014 Сообщений: 807 |
|
25.06.2019, 12:42 |
2 |
Процедура клиент, сервер ? 0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
25.06.2019, 14:39 [ТС] |
3 |
1. Процедура сервер 0 |
198 / 158 / 45 Регистрация: 23.08.2014 Сообщений: 807 |
|
25.06.2019, 16:17 |
4 |
Нельзя сохранять фалы на сервере, нужно перенести на клиент. 0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
25.06.2019, 16:18 [ТС] |
5 |
можешь показать 0 |
198 / 158 / 45 Регистрация: 23.08.2014 Сообщений: 807 |
|
25.06.2019, 16:24 |
6 |
Ermak27, полностью процедуру всю переноси на клиент. А данные для заполнения вытаскивай через функции на сервере несли понадобится. Перед процедурой у тебя написано &НаСервере, меняй это на &НаКлиенте. Повалятся ошибки, такие как обращение к константе например и начинай их исправлять потихоньку. 0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
25.06.2019, 16:44 [ТС] |
7 |
Я тебя не так понял на счёт сервера. У меня вообщем ничего не стоит перед процедурой. Нет &НаСервере и &НаКлиенте. У меня база крутиться на sql сервере 0 |
198 / 158 / 45 Регистрация: 23.08.2014 Сообщений: 807 |
|
25.06.2019, 16:52 |
8 |
Ermak27, хорошо. Напиши тогда где находится процедура. В модуле формы или модуле объекта ? 0 |
Ermak27 4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
||||
25.06.2019, 17:06 [ТС] |
9 |
|||
Модуле формы. Процедура срабатывает при нажатии кнопки
0 |
198 / 158 / 45 Регистрация: 23.08.2014 Сообщений: 807 |
|
25.06.2019, 18:16 |
10 |
Попробуй так прописать Докум.Documents.SaveAs(ИмяФайла); 0 |
1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,072 Записей в блоге: 1 |
|
25.06.2019, 22:48 |
11 |
У меня вообщем ничего не стоит перед процедурой. Нет &НаСервере и &НаКлиенте. ну не стоит и не стоит. где процедура выполняется, когда не стоит? в воздухе? вряд ли. 0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
26.06.2019, 08:40 [ТС] |
12 |
dggrom, выдаёт ошибку Поле объекта не обнаружено (Documents) Добавлено через 2 минуты 0 |
198 / 158 / 45 Регистрация: 23.08.2014 Сообщений: 807 |
|
26.06.2019, 10:02 |
13 |
Yulunga, у него метод записи самой не видет. Ermak27, что за конфигурация, какие формы, управляемые или нет ? 0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
26.06.2019, 10:05 [ТС] |
14 |
dggrom, Не управляемые, Обычное приложение 0 |
1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,072 Записей в блоге: 1 |
|
26.06.2019, 13:01 |
15 |
по мне так проблема в этом: запутал с какой-то целью. поэтому и нет там сейвас, что применяется не к тому к чему надо. чехарда. имена переменных закончились? 0 |
4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
|
26.06.2019, 13:51 [ТС] |
16 |
Yulunga, я закомментировал Word=Докум;, теперь выдаёт ошибку Метод объекта не обнаружен (Range) 0 |
Yulunga 1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,072 Записей в блоге: 1 |
||||
26.06.2019, 17:47 |
17 |
|||
ну вот чем не код для рыбы. сейвас должен быть для активного документа 0 |
Ermak27 4 / 4 / 0 Регистрация: 16.01.2013 Сообщений: 1,228 |
||||
27.06.2019, 11:22 [ТС] |
18 |
|||
Yulunga, как мне мой код поправить? Код который в самом начале, он так и выводит как надо, но встала задача сохранить эти вордовские документы по индексу, вот тут проблема и появилась у меня. Вчера я переделал немного код
Можете подсказать как мне сделать чтобы два значения выводила. Миниатюры
0 |
I continually get «Command Fail» at either the saveas, saveas2 or save calls when trying to save a new programmatically created .docx
. I know that the file is being created. works fine offline.
Visual Studio 2013
Microsoft.Office.Interop.Word 15
Microsoft Office 10 on server and dev machine
test code:
myInfo_lbl.Text = "" Dim word As New Microsoft.Office.Interop.Word.Application word.Visible = True Dim doc As Microsoft.Office.Interop.Word.Document doc = word.Documents.Add() Try Dim insertText As String = "This thing needs to start fn working. Damn it!" Dim range As Microsoft.Office.Interop.Word.Range = doc.Range(Start:=0, End:=0) range.Text = insertText doc.SaveAs2("D:myCVCOL_Filestest2.doc") 'doc.Save() 'doc.SaveAs2("D:myCVCOL_Filestest2.doc") Catch ex As COMException myInfo_lbl.Text = ex.ErrorCode & " ~ " & ex.HResult & " ~ " & ex.Message & " ~ try 6" Finally Dim save_changes As Object = False doc.Close(save_changes) word.Quit(save_changes) End Try
ɢʀᴜɴᴛ
31.4k15 gold badges111 silver badges108 bronze badges
asked Aug 16, 2017 at 20:05
Looks like you didn’t set the format. Try this code
Imports System.Runtime.InteropServices Module Module1 Sub Main() CreateDoc() End Sub Public Sub CreateDoc() Dim wordApp As New Microsoft.Office.Interop.Word.Application Dim wordDoc As Microsoft.Office.Interop.Word.Document Dim range As Microsoft.Office.Interop.Word.Range Dim fileName As String Dim insertText As String Dim format As Microsoft.Office.Interop.Word.WdSaveFormat = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument wordApp = New Microsoft.Office.Interop.Word.Application() wordDoc = New Microsoft.Office.Interop.Word.Document() insertText = "Some text" wordApp.Visible = True fileName = "D:ProjectsSandboxStackOverflowConsoleVBtest2.doc" wordDoc = wordApp.Documents.Add() range = wordDoc.Range(Start:=0, End:=0) range.Text = insertText wordDoc.SaveAs2(fileName, Format) wordDoc.Close(Nothing, Nothing, Nothing) wordDoc = Nothing wordApp = Nothing End Sub End Module
answered Aug 16, 2017 at 21:54
AeroradishAeroradish
3711 gold badge5 silver badges11 bronze badges
1
I had for many months an 80% error when converting a word to a pdf using the function SaveAs(WordDocFilePath & WordDocName & ".pdf", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF)
in VB.NET 2013 in a Windows 10 environment. I tried many things but this very simple change resolved just everything :
WordApp.ScreenUpdating = False (whether it was true before)
Suraj Rao
29.3k11 gold badges96 silver badges103 bronze badges
answered Feb 4, 2021 at 11:27
Добрый день! Почитала про это в инете, нашла что это возможно, пишут пример такой команды MSWord.SaveAS(Путь + ИмяФайла, 17); У меня команда вызывает ошибку. Причем, если сохранять как MSWord.SaveAS(Путь + ИмяФайла, 16); — в формате word, все ок. Почему в pdf не сохраняет? Потому что у меня Word 2007? А 2010 будет сохранять?
Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Word): Ошибка команды
этот код исполняется на сервере или на клиенте у тебя?
На клиенте. Если я все правильно понимаю)
Вопросы 1. В MSWORD у тебя точно документ? обычно так называют application 2. Открой у себя на компе ворд и сохрани любой док в pdf — ошибок нет? 3. точно убедись что этот код исполняется на клиенте.
Варианты 1. Нет поддержки PDF 2. Кривые руки программиста
А какая разница Где? Главное что бы На клиенте или на Сервере был Офис с поддержкой сохранения PDF. И так же, что бы правильно был передан параметр выбора типа файла для сохранения. «Не каждый Офис в PDF пишет», так для справки
А я разве параметр неправильно передала?)
А ты проверь. Откуда ты взяла, что 17 — это тип PDF? Что за упертая уверенность ,что Офис вообще 2010 и выше?
+ Макрос показал совсем другой подход Sub Макрос1 ‘ ‘ Макрос1 Макрос ‘ ‘
+ Используй «ExportAsFixedFormat»
Так было в примере 16-ворд, 17-pdf, так в примерах было написано)) Я не говорила что у меня офис 2010, я написала что он 2007
Ну, елки-моталки… Попробуй в ворде сохранить в pdf. Даст?
Нет, пробовала, я просто интересуюсь, стоит ли ставить 2010, будет ли там сохранять или проблема не в этом
Блондинка блондинку не понимает
Не сохраняет из форда в пдф. Надо ставить 2010?) Я видимо блондинистей)
Поставь pdf-принтер и сохраняй в pdf из почти любой программы.
Мне это не подходит, я из 1с программно сохраняю при выводе документа на печать
ты что не понял? ТС хотела программно, а ты ей какой-то принтер пропихиваешь если из ворда не сохраняет в пдф, то и из 1С не сохранит — поверь.
MSWord.SaveAS(«C:1.pdf», 17);
В 2010 офисе есть функция сохранения в пдф.
она иногда кривит, например, с залоченными объектами в экселе. пришлось ставить doPDF.
если на компе Вин ХР то сначала её надо переставить
libreoffice convert to pdf совсем не подходит?
Тэги:
Комментарии доступны только авторизированным пользователям
Добрый день! Почитала про это в инете, нашла что это возможно, пишут пример такой команды MSWord.SaveAS(Путь + ИмяФайла, 17); У меня команда вызывает ошибку. Причем, если сохранять как MSWord.SaveAS(Путь + ИмяФайла, 16); — в формате word, все ок. Почему в pdf не сохраняет? Потому что у меня Word 2007? А 2010 будет сохранять?
Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Word): Ошибка команды
этот код исполняется на сервере или на клиенте у тебя?
На клиенте. Если я все правильно понимаю)
Вопросы 1. В MSWORD у тебя точно документ? обычно так называют application 2. Открой у себя на компе ворд и сохрани любой док в pdf — ошибок нет? 3. точно убедись что этот код исполняется на клиенте.
Варианты 1. Нет поддержки PDF 2. Кривые руки программиста
А какая разница Где? Главное что бы На клиенте или на Сервере был Офис с поддержкой сохранения PDF. И так же, что бы правильно был передан параметр выбора типа файла для сохранения. «Не каждый Офис в PDF пишет», так для справки
А я разве параметр неправильно передала?)
А ты проверь. Откуда ты взяла, что 17 — это тип PDF? Что за упертая уверенность ,что Офис вообще 2010 и выше?
+ Макрос показал совсем другой подход Sub Макрос1 ‘ ‘ Макрос1 Макрос ‘ ‘
+ Используй «ExportAsFixedFormat»
Так было в примере 16-ворд, 17-pdf, так в примерах было написано)) Я не говорила что у меня офис 2010, я написала что он 2007
Ну, елки-моталки… Попробуй в ворде сохранить в pdf. Даст?
Нет, пробовала, я просто интересуюсь, стоит ли ставить 2010, будет ли там сохранять или проблема не в этом
Блондинка блондинку не понимает
Не сохраняет из форда в пдф. Надо ставить 2010?) Я видимо блондинистей)
Поставь pdf-принтер и сохраняй в pdf из почти любой программы.
Мне это не подходит, я из 1с программно сохраняю при выводе документа на печать
ты что не понял? ТС хотела программно, а ты ей какой-то принтер пропихиваешь если из ворда не сохраняет в пдф, то и из 1С не сохранит — поверь.
MSWord.SaveAS(«C:1.pdf», 17);
В 2010 офисе есть функция сохранения в пдф.
она иногда кривит, например, с залоченными объектами в экселе. пришлось ставить doPDF.
если на компе Вин ХР то сначала её надо переставить
libreoffice convert to pdf совсем не подходит?
Тэги:
Комментарии доступны только авторизированным пользователям
<?php // Полная загрузка сервисных книжек, создан 2023-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='
Related Posts
Получение логина и пароля техподдержки 1С из базы
Класс для вывода отчета в Excel
Счет-фактура для УПП
Библиотека классов для создания внешней компоненты 1С на C#
Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
Прайс-лист с артикулом в отдельной колонке
47 Comments
-
Спасибо за статью, но ничего нового тут нет. Если Вы испытываете трудности с получением макета — храните вордовский шаблон файлом на диске (в общей шаре конечно) и все сведется к получению кома файла НаКлиенте. Возможно есть случаи, когда необходимо хранить шаблон вордовского файла в конфигурации, но на мой взгляд оперативно изменять текстовку шаблона (особенно если это договор и юристы никак не могут договориться о содержании шаблона :)) без влезания в конфигуратор проще и быстрее.
Reply ↓
-
P.S. кстати, обратите, какая изящная задача получилась для тестирования опытного кандидата на работу.
На собеседовании спрашивают то, что сами недано узнали (с)баш
А если по теме, с какой стати у клиента есть доступ к файловой системе сервера и наоборот (и расшаренные папки тоже неуниверсально)? Лучше через двоичные данные и ХранилищеЗначения передавать, см. работу с картинками, а на клиенте сохранять во временный файл.
А так полезная статья, узнал зачем нужен ActiveDocument 🙂
(1) andrei.k, согласен, пусть лучше юзеры свой шаблон правят, не программистское это дело.
Reply ↓
-
Друзья, я с Вами полностью согласен. Но файла в общей шаре может и не быть, а может у него имя изменили, а может шара недоступна, а может там что-то изменили без нашего ведома и заполнение параметров этого файла не получится сделать корректно.
Слишком уж тут много неявных причин.
По сути да — не очень понятно на кой черт такие танцы с бубном, ведь программная работа с ActiveDocument ничем не отличается от ДвоичныхДанных или ХранилищаЗначения. Принцип тот же.
Но все-таки, пусть будет — для галочки 😉
Reply ↓
-
Макет = ОбщийМодуль.ПолучитьМакет(Документ); //серверная функция, записывает макет в файл и возвращает полное имя файла
разъясните
если серверная функция записывает макет в файл, то где этот файл будет лежать?
если на сервере, то как к нему получает доступ клиент в этом коде?
Шаблон = ПолучитьCOMОбъект(Макет); //инициализируем COM-объект
если на клиенте, то как серверная функция получит доступ к файловой системе клиента?
и как она передаст на клиента этот самый файл?
в общем, нужно привести листинг этой серверной функции, а также параметры модуля «ОбщийМодуль»
Reply ↓
-
(4) YurySigolaev, у нас настроена общая шара, которая доступна для клиента и для сервера, по той простой причине, что все юзеры находятся в домене и не могут самостоятельно сохранять файл на локальную машину, с которой работают в данный момент (т.к. каждый раз они могут садиться за разные компьютеры)
В остальных случаях уже написали как это делать 🙂
Reply ↓
-
А можно для тупых полный листинг привести?))
Reply ↓
-
Повторюсь
А можно для тупых полный листинг привести?))
Reply ↓
-
(6) s_uu, (7) Dighty,
какой именно листинг нужно привести?
В статье ведь есть листинг
Reply ↓
-
Листинг &НаСервере если можно.
Reply ↓
-
Или помогите я разобраться не могу. Мне надо документ activedocument на тонкий клиент вывести, сижу 3 день мозг ломаю. Пожалуйста помогите.
Reply ↓
-
(10) Dighty, через двоичные данные. Читайте 2-й пост
Reply ↓
-
Каким методом вы записывали файл Word на сервере? У меня на файловой метод SaveAs(ПУТЬ) работает, а на сервере нет. Путь доступен соответственно и там и тут, только на сервере почему то метод SaveAs не обнаружен… Метод Save работает только для ранее сохраненных, а у меня файл вновь созданный.
/////Уточнение от 17.09.15
Метод SaveAs он не пишет, что не обнаружен, а пишет «Произошла исключительная ситуация (Microsoft Word): Ошибка команды»
Reply ↓
-
(12) klinval, a word на сервере установлен?
Reply ↓
-
(13) да, установлен. Спотыкается именно на SaveAs. Макет получается(ПолучитьМакет),
MSWord = Макет.Получить(); Документ = MSWord.Application.Documents(1); Документ.Activate();
проходят успешно. Заполнение тоже проходит, а на Документ.SaveAs(ИмяВрем); спотыкается.
Ощущение, что что-то не так с word-ом именно под пользователем под которым работает служба 1С, хотя я под ним заходил и офис нормально запускается!
Чтобы не дебажить весь код, например можно попробовать написать (см. обработка во вложении):
&НаКлиенте Процедура СоздатьТестWord(Команда) СоздатьТестWordНаСервере(); КонецПроцедуры &НаСервере Процедура СоздатьТестWordНаСервере() Word = Новый COMОбъект(«Word.Application»); Word.Visible=1; Документ = Word.Documents.Add(); ИмяВрем = ПолучитьИмяВременногоФайла(«.docx»); Документ.SaveAs(ИмяВрем); Сообщить(ИмяВрем); КонецПроцедуры
Показать
На файловой базе работает, на SQL не работает (спотыкается на SaveAs). Можете попробовать у себя? Если эта простенькая обработка у вас заработает, значит у нас что-то не так с word-ом на сервере под этим Windows-пользователем.
Я кстати задачу решил через двоичные данные, но всё равно интересно почему не работает SaveAs на сервере!
Reply ↓
-
(14) klinval, проверьте права доступа для пользователя, word и 1С на стороне сервера
Скорей всего проблема в этом. Можете попробовать залогиниться на сервак под юзером, под которым запускается 1С сервер и проверить, даёт ли там сохранить файл интерактивно
Reply ↓
-
(15) я уже ранее проводил такую проверку: залогинился под пользователем и сохранил word интерактивно. Клиентской 1С на сервере до этого вообще не стояло, я поставил. Запустился, а там ошибка(см. приложение). Возможно в этом и косяк.
У вас то обработка (во вложении к 14 сообщению) работает на SQL базе?
Reply ↓
-
(16) klinval, конкретно в данный момент, нет возможности проверить вашу обработку
Добавьте 1С в исключения в свойствах обозревателя IE
Reply ↓
-
(17) отключил усиленную безопасность IE, поставил на самый «небезопасный» уровень, ошибка, указанная в 16 сообщении ушла, но метод SaveAS всё равно не работает.
Так всё таки под кодом:
Макет = ОбщийМодуль.ПолучитьМакет(Документ); //серверная функция, записывает макет в файл и возвращает полное имя файла
Каким методом ты записываешь? Save, SaveAS?
Reply ↓
-
(18) klinval, посмотрите на дату публикации. Доступа к той обработке у меня давно нет, а в памяти я такое держать не могу 🙂
Что значит
метод SaveAS всё равно не работает.
?
Ошибка выпадает? Файл не сохраняет?
Reply ↓
-
(19)
Ошибка выпадает? Файл не сохраняет?
Да. Да:)
По-любому косяк где-то на уровне прав Windows-пользователя (т.е. связано с администрированием серверов, а не с 1С). Даже обработка с сообщения 14 не работает (хотя где там можно ошибиться?).
{Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (SaveAs)
Документ.SaveAs(ИмяВрем);
по причине:
Произошла исключительная ситуация (Microsoft Word): Ошибка команды
Поэтому мне проще было не разбираться, а запихнуть шаблон не в ActiveDocument, а в двоичные данные, которые я могу спокойно передать на клиент. Что я и сделал… А ошибка с SaveAs, скорее всего так и останется неразгаданной.
Reply ↓
-
(20) klinval, вам нужно запуститься непосредственно по тем пользователем, который указан для 1С на сервере и именно под ним попробовать сохранить MS Word интерактивно
Reply ↓
-
(21) уже пробовал. Сохраняет… как ни странно.
Reply ↓
-
(22) klinval, тогда нужно ловить ошибку, которую возвращает приложение
подключитесь к MS Word из 1С через COM на сервере и попытайтесь сохранить файл методом SaveAs
Reply ↓
-
(23) ну так это я и сделал! Ошибка уже давно выявлена и описание её ни о чём не говорит. Файл в 14 сообщении, ошибка от его исполнения в 20 сообщении.
{Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (SaveAs)
Документ.SaveAs(ИмяВрем);
по причине:
Произошла исключительная ситуация (Microsoft Word): Ошибка команды
Если дать заведомо рабочий путь вручную: та-же ошибка (не важно сетевой или на диск C:)
Если дать заведомо некорректный путь, то уже другая ошибки:
{Форма.Форма.Форма(16)}: Ошибка при вызове метода контекста (SaveAs)
Документ.SaveAs(«Ы:111.docx»);
по причине:
Произошла исключительная ситуация (Microsoft Word): Неверно указано имя файла.
Попробуйте выполнить следующие действия:
* Убедитесь, что путь введен правильно.
* Выберите нужный файл из списка файлов и папок.
Пробовал эксперементировать с расширением файла:
Для Инд = 0 По 100 Цикл Попытка Word = Новый COMОбъект(«Word.Application»); Word.Visible=1; Документ = Word.Documents.Add(); Документ.SaveAs(«C:111.docx»,Инд); Сообщить(«ПОЛУЧИЛОСЬ:»+Инд); Исключение Сообщение = Новый СообщениеПользователю(); Сообщение.Текст = Строка(Инд)+»!»+ОписаниеОшибки(); Сообщение.Сообщить(); КонецПопытки; КонецЦикла;
Показать
файл так и не создался.
Сверил все настройки Word локальные и на сервере (запустившись от имени пользователя под которым работает служба 1С). Процесс ворда запускается точно под тем пользователем под которым запускается служба (проверил в диспетчере задач)…
Reply ↓
-
(24) klinval, вам нужна ошибка именно MS Word
{Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (SaveAs)
Документ.SaveAs(ИмяВрем);
по причине:
Произошла исключительная ситуация (Microsoft Word): Ошибка команды
Это листинг ошибки 1С. Обработайте через 1С, сообщение об ошибке MS Word и выведите её содержимое
Reply ↓
-
(25)
Обработайте через 1С, сообщение об ошибке MS Word и выведите её содержимое
Не понял, как это сделать?
Reply ↓
-
(26) klinval, в смысле? руками)))
Reply ↓
-
(27) правильно я понял: ты хочешь увидеть ошибку как её видит Word, а не как её нам даёт 1С?
Если да, то опять вопрос: как из 1С это можно вывести?
Reply ↓
-
(28) klinval, читай про COM-объекты и инструментарий по MS Word
Reply ↓
-
(29) что искать/читать и где? Вы ответьте хотя бы на:
правильно я понял: ты хочешь увидеть ошибку как её видит Word, а не как её нам даёт 1С?
Reply ↓
-
(30) klinval, искатьчитать:
— работа с COM объектами в 1С
— интеграция MS Word и 1С
Вы ответьте хотя бы на:
1С вообще никакой ошибки не видит, она тупо посредник между пользователем и приложением (MS Word)
Reply ↓
-
(31) это реально можно вывести ошибку в 1С как её видит Word или ты чисто теоретически предполагаешь, что такой метод есть?
Может я тебя не правильно понял: по тексту мне показалось, что ты уверен, что такая возможность (такой метод) есть, а может ты имел ввиду, что чисто теоретически такая возможность должна быть.
Reply ↓
-
(32) Столкнулся с аналогичной проблемой — хотел узнать, удалось ли ее в итоге победить или забили?
Ошибка таже:
Ошибка при вызове метода контекста (SaveAs)
Reply ↓
-
(33) ivant, вроде как CeHbKA утверждал, что можно считать ошибку как то по-другому и увидеть причину косяков. Я сильно «копнул» в этом направлении, но ничего не нашёл. Похоже это совет из разряда гипотетических, что мол возможно считать ошибку Word как то по другому, но я не знаю как, но точно можно… Можете как советовал CeHbKA копнуть в эту сторону, может я что-то не увидел!
Хотя если честно ошибку я как-то исправил. Но вот не помню как, но явно не по этому совету. Моя обработка в (14) сообщении теперь у меня работает на серверной базе. Возможно ошибка просто ушла после обновления платформы.
Ещё есть вариант перейти с ActiveDocument на двоичные данные, как я в начале и сделал. Можете посмотреть тут код как это делается. Если вкратце:
//На клиенте получаем макет и заполняем его предварительно полученными данными ДвоичныеДанныеМакета = ПолучитьИзВременногоХранилища(ПолучитьМакетСКлиента(«ПисьмоНаОплатуWord»)); ИмяВрем = ПолучитьИмяВременногоФайла(«.docx»); ДвоичныеДанныеМакета.Записать(ИмяВрем); Попытка Документ = ПолучитьCOMОбъект(ИмяВрем); Для Каждого Параметр из СтруктураПараметров.Значение Цикл //В оригинале тут другой код, но для простаты пример: Selection = Документ.Content; Selection.Find.Execute(«[«+Параметр.Ключ+»]»,Ложь,Истина,Ложь,,,Истина,,Ложь,Параметр.Значение,2); КонецЦикла; Документ.Application.Visible = Истина; Документ.Application.WindowState = 2; Документ.Application.WindowState = 1; Документ.Activate(); Исключение ….. &НаСервереБезКонтекста Функция ПолучитьМакетСКлиента(Имя) Возврат ПоместитьВоВременноеХранилище(Документы.ПисьмоНаОплату.ПолучитьМакет(«ПисьмоНаОплатуWordДвоичныеДанные»)); КонецФункции
Показать
Reply ↓
-
(32) klinval, (33) ivant, (34) klinval,
вы получаете COM-объект MS Word
соответственно работаете с API данного com-объекта (т.е. Word)
функция SaveAS является функцией API Word
значит, чтобы получить ошибку Word нужно воспользоваться API этого самого Word
Reply ↓
-
-
Аналогичная ошибка, не может открыть документ сохраненный в темп
ДвоичныеДанные = ПолучитьДвоичныеДанныеМакета(); COMОбъект = Новый COMОбъект(«Word.Application»); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(«DOC»); ДвоичныеДанные.Записать(ИмяВременногоФайла); COMОбъект.Documents.Open(ИмяВременногоФайла); // здесь вываливается ошибка, никаких документов он не открыл, в темпе лежит созданный документ ворда , COMОбъект.Documents.Count = 0, через ЖР проверял Док = COMОбъект.Application.Documents(1); Док.Activate();
Показать
Reply ↓
-
-
Почему при сохранении макета типа active document в файл word кодом:
Код:
ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»); Макет = ОбработкаОбъект.ПолучитьМакет(«ШаблонПисьмаПросрочка»); ИмяФайла = КаталогВременныхФайлов() + «файл.doc»; Макет.Записать(ИмяФайла);
Я получаю вместо нормального документа вот такой
Reply ↓
-
А почему нельзя использовать документ двоичные данные? Загрузил туда шаблон. Получили шаблон. Сохранили документ. Передали на клиент имя открыли через COM и заполняем.
&НаКлиенте Процедура ПолучитьМакет(Команда) Попытка Индификатор = ПолучитьДанныеМакета(); МакетПисьма = ПолучитьИзВременногоХранилища(Индификатор); ИмяФайла = «Письмо.doc»; ИмяФайлаПолное = «С:» + ИмяФайла; МакетПисьма.Записать(ИмяФайлаПолное); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Попытка Шаблон = Новый 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); КонецПопытки; КонецПроцедуры &НаСервере Функция ПолучитьДанныеМакета() АдресХранилища = Новый УникальныйИдентификатор(); ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»); Макет = ОбработкаОбъект.ПолучитьМакет(«ШаблонПисьмаПросрочка»); Возврат ПоместитьВоВременноеХранилище(Макет, АдресХранилища); КонецФункции
Показать
У меня этот код на серверной базе работает
Reply ↓
-
(42)
МакетПисьма = ПолучитьИзВременногоХранилища(Индификатор);
Здесь в тонком клиенте у Вас будет выскакивать ошибка. Такой способ только для толстого клиента подходит.
Reply ↓
-
(43) Выскажусь в защиту:
Глобальный контекст (Global context)
ПолучитьИзВременногоХранилища (GetFromTempStorage)
Синтаксис:
ПолучитьИзВременногоХранилища(<Адрес>)
Параметры:
<Адрес> (обязательный)
Тип: Строка.
Адрес, указывающий на значение во временном хранилище.
Возвращаемое значение:
Тип: Произвольный.
Значение, ранее помещенное с помощью метода ПоместитьВоВременноеХранилище.
Описание:
Получает значение из временного хранилища.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Вызов метода выполняет обращение к серверу.
Примечание:
Результат выполнения не кэшируется, вызов сервера осуществляется при каждом вызове метода.
Показать
В справке написано, что тонкий клиент можно использовать! Я в своей статье данный метод тоже привожу в тонком клиенте, причём этот код уже давно работает на рабочей базе (в толстом клиенте у нас никто не работает).
Reply ↓
-
-
Решение проблемы «Ошибка при вызове метода контекста (SaveAs) «
Reply ↓
-
-
(17) Надо не 1с в исключения добавить, а всю строку about:…. только при добавлении снять галку с https…,а указанное в (18) делать нежелательно…тем более на сервере…
Reply ↓
-
(33) У меня такая проблема была. все было в правах на сервере…получалось при этом сохранять в шару..решил делать это не на рдп а на локальной машине…SQL тут не причем
Reply ↓
Leave a Comment
Ваш адрес email не будет опубликован. Обязательные поля помечены *
07.08.12 — 17:47
Не удалось сформировать внешнюю печатную форму!
Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Word): Неверно указано имя файла.
Попробуйте выполнить следующие действия:
* Убедитесь, что путь введен правильно.
* Выберите нужный файл из списка файлов и папок.
Не могу понять куда копать и что такое (SaveAs).
1 — 07.08.12 — 17:49
Кстати
конфигурация «Управление торговым предприятием для Украины», редакция 1.2. (1.2.8.7) Платформа 1С:Предприятие 8.2 (8.2.15.301)
2 — 07.08.12 — 19:22
SaveAs — это метод в данном случае Word. Копать в процедуру, выводящую внешнюю печатную форму в файл. Если имя для файла задается вручную, то соответственно смотреть внимательно на это имя и думать, по какому пути платформа пытается записать файл. Например имеют значение права на запись в определенную папку.
3 — 08.08.12 — 11:37
А может даст кто ссылку где можно почитать об SaveAs.
А то вроде путь ввожу правильно да файл выбираю нужный.
А оно мне
Попробуйте выполнить следующие действия:
* Убедитесь, что путь введен правильно.
* Выберите нужный файл из списка файлов и папок.
4 — 08.08.12 — 11:40
насколько я помню, в SaveAs надо не только имя файла указывать, но и формат сохранения (для офисов старше 2003 чтоль года или 2007). Сделай так: запусти запись макроса в Ворде, сохрани какое нить файло через «Сохранить как..», и погляди в коде VB чего там подставляется в параметры.
5 — 08.08.12 — 11:42
и хоть я бухгалтер я постараюсь сделать так как Вы бомболюк указали.
6 — 08.08.12 — 11:44
(5) желаю удачи
7 — 09.08.12 — 11:32
читать про методы объектов офиса лучше всего в первоисточнике, например тут:
http://msdn.microsoft.com/en-us/library/office/bb221597(v=office.12)
8 — 09.08.12 — 22:16
Спасибо почитаю.
9 — 09.08.12 — 22:39
Ф1 и не парить мозги
10 — 09.08.12 — 22:39
(7) читать лучше всего в (9)
11 — 10.08.12 — 11:43
(10)Сам то понял что сказал? Методы объектов Ms Office скрыты от рядового юзера и предназначены для девелоперов. С каких это пор микрософт девелоперскую информацию пишет в хэлпе? Или у тебя Ms Office Developer Edition?
12 — 10.08.12 — 11:48
(11) что Вы хотели сказать ?
13 — 10.08.12 — 11:49
жмите ф1 — реально помогает
14 — 10.08.12 — 12:14
(12)Уважаемый, я хотел сказать, что Вы таки посылаете и меня, и ТСа практически в пешее эротическое путешествие. В какой программе мы должны нажимать ф1? В Excel/word? Так там нет описания объектов. В 1с? А там то уже откуда возьмется описание объектов Excel/word? Речь изначально идет о взаимодействии 1с и word. И вот ведь что характерно — в синтаксис-помощнике конструкции SaveAs нет вообще, а в Вашем любимом ф1 эта конструкция относится только к запуску самой платформы. Итак куда должен пойти ТС?
15 — 10.08.12 — 13:02
(14) может забъемся на ящик вискаря ?
16 — 10.08.12 — 13:47
(15)Я вискарь не пью, так что не интересно. А может все-таки не понты разгибать, а ответить на вопрос?
17 — 10.08.12 — 13:52
(16) какой вопрос ? и какие такие понты ?
18 — 10.08.12 — 13:57
http://www.n-d.ru/pub/msof1.png
или Вам рассказать, как нажать ф1 в мсо ?
19 — 10.08.12 — 14:15
(18)Мой вопрос был — «в какой программе нажать ф1». Правильный ответ был бы в этом случае «в Visual Basic Project Manager». Сложно? Ответить «как юзеру» не позволяет статус адынэсэра? Впрочем, это уже переход на личности. Но для справки — далеко не во все редакции МСО входит этот самый VBA Manager, и даже если входит, вполне может быть не установлен на компе.
Касаемо «понтов» — фраза «забьемся на ящик вискаря» иначе чем пустой понт дворового потсана не воспринимается, хотите предложить спор — предлагайте спор, а забивайтесь.
20 — 10.08.12 — 14:33
если бы Вы нажали ф1 не в менеджере, и были бы внимательны — получили бы тот же результат, а не проявляли свой гонор, и не пытались бы оспаривать сказанное знающими людьми.
21 — 10.08.12 — 14:34
еще скриншот ?
22 — 10.08.12 — 14:58
(21)Да, пожалуй.
23 — 10.08.12 — 15:03
24 — 10.08.12 — 15:23
25 — 10.08.12 — 15:24
(24)Извиняюсь за тэги, это была моя первая ссылка здесь.
grantmet
26 — 12.08.12 — 18:38
Спасибо всем.Решил проблему.
Добрый день! Почитала про это в инете, нашла что это возможно, пишут пример такой команды MSWord.SaveAS(Путь + ИмяФайла, 17); У меня команда вызывает ошибку. Причем, если сохранять как MSWord.SaveAS(Путь + ИмяФайла, 16); — в формате word, все ок. Почему в pdf не сохраняет? Потому что у меня Word 2007? А 2010 будет сохранять?
Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Word): Ошибка команды
этот код исполняется на сервере или на клиенте у тебя?
На клиенте. Если я все правильно понимаю)
Вопросы 1. В MSWORD у тебя точно документ? обычно так называют application 2. Открой у себя на компе ворд и сохрани любой док в pdf — ошибок нет? 3. точно убедись что этот код исполняется на клиенте.
Варианты 1. Нет поддержки PDF 2. Кривые руки программиста
А какая разница Где? Главное что бы На клиенте или на Сервере был Офис с поддержкой сохранения PDF. И так же, что бы правильно был передан параметр выбора типа файла для сохранения. «Не каждый Офис в PDF пишет», так для справки
А я разве параметр неправильно передала?)
А ты проверь. Откуда ты взяла, что 17 — это тип PDF? Что за упертая уверенность ,что Офис вообще 2010 и выше?
+ Макрос показал совсем другой подход Sub Макрос1 ‘ ‘ Макрос1 Макрос ‘ ‘
+ Используй «ExportAsFixedFormat»
Так было в примере 16-ворд, 17-pdf, так в примерах было написано)) Я не говорила что у меня офис 2010, я написала что он 2007
Ну, елки-моталки… Попробуй в ворде сохранить в pdf. Даст?
Нет, пробовала, я просто интересуюсь, стоит ли ставить 2010, будет ли там сохранять или проблема не в этом
Блондинка блондинку не понимает
Не сохраняет из форда в пдф. Надо ставить 2010?) Я видимо блондинистей)
Поставь pdf-принтер и сохраняй в pdf из почти любой программы.
Мне это не подходит, я из 1с программно сохраняю при выводе документа на печать
ты что не понял? ТС хотела программно, а ты ей какой-то принтер пропихиваешь если из ворда не сохраняет в пдф, то и из 1С не сохранит — поверь.
MSWord.SaveAS(«C:1.pdf», 17);
В 2010 офисе есть функция сохранения в пдф.
она иногда кривит, например, с залоченными объектами в экселе. пришлось ставить doPDF.
если на компе Вин ХР то сначала её надо переставить
libreoffice convert to pdf совсем не подходит?
Тэги:
Комментарии доступны только авторизированным пользователям
Пока пишу свой рецепт — ссылки на бубны
http://infostart.ru/public/407448/
Ошибка при вызове метода контекста (SaveAs)
Документ.SaveAs(ИмяВрем);
по причине:
Произошла исключительная ситуация (Microsoft Word): Ошибка командыСоздание папок
C:WindowsSysWOW64configsystemprofileDesktop
C:WindowsSystem32configsystemprofileDesktop
проблему решило.
Автор leklerk85, 14 июн 2021, 20:01
0 Пользователей и 1 гость просматривают эту тему.
Добрый день! Подскажите пожалуйста, как можно решить проблему. В регл. задании формируется файл Excel и записывается, но при записи ошибка «Ошибка при вызове метода контекста (SaveAs): Произошла исключительная ситуация (Microsoft Excel): Метод SaveAs из класса Workbook завершен неверно». В файле Excel 2 листа, в каждом из которых в среднем около 50-60 тысяч строк.
Решить проблему можно отказом от OLE и формированием и сохранением файла средствами 1С.
Вы имеете в виду сформировать через табличный документ и записать через ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX)? Сегодня попробовал, всё равно ошибка «Ошибка при вызове метода контекста (Записать): Ошибка доступа к файлу ‘\мой_путьмой_ файл.xlsx'». Папка «мой_путь» на момент записи файла была создана.
Цитата: leklerk85 от 16 июн 2021, 08:08
Вы имеете в виду сформировать через табличный документ и записать через ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX)? Сегодня попробовал, всё равно ошибка «Ошибка при вызове метода контекста (Записать): Ошибка доступа к файлу ‘\мой_путьмой_ файл.xlsx'». Папка «мой_путь» на момент записи файла была создана.
а на сервере доступна эта созданная папка?
На другом форуме подсказали — на папку, куда сохраняется Эксель, надо дать права пользователю, под которым выполняется регл. задание (USR1CV8). Скорее всего, из-за этого ошибка.
Цитата: leklerk85 от 16 июн 2021, 12:56
На другом форуме подсказали — на папку, куда сохраняется Эксель, надо дать права пользователю, под которым выполняется регл. задание (USR1CV8). Скорее всего, из-за этого ошибка.
Да, причина была именно в этом — всё заработало сегодня, когда дали права на папку!
- Форум База
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Ошибка при сохранении файла Excel из регламентного задания
Похожие темы (5)