Произошла исключительная ситуация microsoft word ошибка команды save as

  

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

Метки нет (Все метки)


Добрый день!
Подскажите как сохранить шаблон word. У меня ругается на SaveAs

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 ПутьКШаблонам =СокрЛП(Константы.КвартплатаПутьКШаблонам.Получить());
     Если ДокПечати=СокрЛП("Квитанция2") Тогда
         ИмяШаблона = СокрЛП("Квитанция2.dot");
     КонецЕсли;
 
     ИмяФайла = "E:file.doc";
    
    Word= Новый COMОбъект("Word.Application");
    Докум=Word.Documents.Add(""+ПутьКШаблонам+ИмяШаблона);
    Word=Докум;
    Докум=Word.Application.Documents(1);
    Докум.Activate();
    Докум.Content.Copy();
    фл=ложь;
    сч=0;
    
    Для Каждого Стр из Ведомость Цикл
        сч=сч+1;
        фл=Истина;
        
         ЛС=СокрЛП(Стр.ЛицевойСчет)+Стр.ЛицевойСчет.Регион.КодСбер;
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ЛС"+сч+">",0,1,0,,,1,,0,Формат(ЛС,"ЧГ=0"));
         Исключение
         КонецПопытки;
         
         ФИО_1=ТРег(СокрЛП(Стр.ЛицевойСчет.ОтветственныйКвартиросъемщик));
         ФИО_1_Кратко=ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИО_1);
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ФИО"+сч+">",0,1,0,,,1,,0,СокрЛП(ФИО_1_Кратко));
         Исключение
         КонецПопытки;
         
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<АДРЕС"+сч+">",0,1,0,,,1,,0,СокрЛП(Стр.Адрес));
         Исключение
         КонецПопытки;
 
        Если сч=1 Тогда
            сч=0;
            Докум = Word.Range(0,0);
            Докум.InsertBreak();
            Докум = Word.Range(0,0);
            Докум.Paste();
        Конецесли; 
    КонецЦикла;
    Докум.SaveAs(ИмяФайла);
Word.Application.Quit();

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

198 / 158 / 45

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

Сообщений: 807

25.06.2019, 12:42

2

Процедура клиент, сервер ?
Есть доступ до папки у пользователя ?
1С пробовал от админа запускать ?
И что за ошибка хоть ?

0

4 / 4 / 0

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

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

25.06.2019, 14:39

 [ТС]

3

1. Процедура сервер
2. Есть доступ
3. Работаю по админом
4. Метод объекта не обнаружен (SaveAs)
Докум.SaveAs(ИмяФайла);

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

Модуле формы. Процедура срабатывает при нажатии кнопки

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Процедура ОсновныеДействияФормыКвитанция(Кнопка)
    // Вставить содержимое обработчика.
    Печать("Квитанция2");
КонецПроцедуры
 
Процедура Печать(ДокПечати="")
    ПутьКШаблонам =СокрЛП(Константы.КвартплатаПутьКШаблонам.Получить());
     Если ДокПечати=СокрЛП("Квитанция2") Тогда
         ИмяШаблона = СокрЛП("Квитанция2.dot");
     КонецЕсли;
 
     ИмяФайла = "E:file.doc";
    
    Word= Новый COMОбъект("Word.Application");
    Докум=Word.Documents.Add(""+ПутьКШаблонам+ИмяШаблона);
    Word=Докум;
    Докум=Word.Application.Documents(1);
    Докум.Activate();
    Докум.Content.Copy();
    фл=ложь;
    сч=0;
    
    Для Каждого Стр из Ведомость Цикл
        сч=сч+1;
        фл=Истина;
        
         ЛС=СокрЛП(Стр.ЛицевойСчет)+Стр.ЛицевойСчет.Регион.КодСбер;
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ЛС"+сч+">",0,1,0,,,1,,0,Формат(ЛС,"ЧГ=0"));
         Исключение
         КонецПопытки;
         
         ФИО_1=ТРег(СокрЛП(Стр.ЛицевойСчет.ОтветственныйКвартиросъемщик));
         ФИО_1_Кратко=ОбщегоНазначения.ФамилияИнициалыФизЛица(ФИО_1);
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<ФИО"+сч+">",0,1,0,,,1,,0,СокрЛП(ФИО_1_Кратко));
         Исключение
         КонецПопытки;
         
         Попытка 
             Замена=Word.Content.Find;
             Замена.Execute("<АДРЕС"+сч+">",0,1,0,,,1,,0,СокрЛП(Стр.Адрес));
         Исключение
         КонецПопытки;
 
        Если сч=1 Тогда
            сч=0;
            Докум = Word.Range(0,0);
            Докум.InsertBreak();
            Докум = Word.Range(0,0);
            Докум.Paste();
        Конецесли;  
    КонецЦикла;
    Докум.SaveAs(ИмяФайла);
Word.Application.Quit();
 
КонецПроцедуры

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

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

У меня вообщем ничего не стоит перед процедурой. Нет &НаСервере и &НаКлиенте.

ну не стоит и не стоит. где процедура выполняется, когда не стоит? в воздухе? вряд ли.
посмотрите, есть ли у вас на сервере диск Е, куда вы пытаетесь записать, и есть ли права на запись на него

0

4 / 4 / 0

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

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

26.06.2019, 08:40

 [ТС]

12

dggrom, выдаёт ошибку Поле объекта не обнаружено (Documents)
Докум.Documents.SaveAs(ИмяФайла);

Добавлено через 2 минуты
Yulunga, Я же писал что диск есть, права есть

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

по мне так проблема в этом:
Докум=Word…
Word=Докум;
Докум=Word…

запутал с какой-то целью. поэтому и нет там сейвас, что применяется не к тому к чему надо. чехарда. имена переменных закончились?

0

4 / 4 / 0

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

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

26.06.2019, 13:51

 [ТС]

16

Yulunga, я закомментировал Word=Докум;, теперь выдаёт ошибку Метод объекта не обнаружен (Range)
Докум = Word.Range(0,0);

0

Yulunga

1117 / 671 / 195

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

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

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

26.06.2019, 17:47

17

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Word =  Новый COMОбъект("Word.Application");
    word.Visible = 0;    
    word.Application.DisplayAlerts = ложь;
        
    Word.Documents.ADD();
    DocWord = Word.Documents.Open(ПутькФайлу);
    DocWord.Activate();
    
    DocWord.sections.item(1).footers.item(1).Range.Text = "Мой любимый документ";
 
    Word.Application.DisplayAlerts =-1; 
    
    Word.ActiveDocument.saveas(ПутькФайлу);
  
    word.Application.quit();

ну вот чем не код для рыбы. сейвас должен быть для активного документа

0

Ermak27

4 / 4 / 0

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

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

27.06.2019, 11:22

 [ТС]

18

Yulunga, как мне мой код поправить?
Мне нужно чтобы два значение выводились на страницу.
Например: Страницу ворда я делю по пополам, получается при печати А5. Т.е есть в ТЗ 4 значение, то вордовский документ должен вывести две страницы, на каждой странице два значения. Приложил картинку.

Код который в самом начале, он так и выводит как надо, но встала задача сохранить эти вордовские документы по индексу, вот тут проблема и появилась у меня. Вчера я переделал немного код
Создал форму с типом ActiveDocument. Написал код который сохраняет мне вордовские документы но значение заносит в каждый лист, а мне нужно два значения на лист.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Процедура КнопкаВыполнитьНажатие(Кнопка)               Файл = "E:doc";     //таблица     Таблица = Новый ТаблицаЗначений();   // создаем таблицу         //колонки     Таблица.Колонки.Добавить("Наименование"); //добавляем нетипизированную колонку     Таблица.Колонки.Добавить("Индекс"); //добавляем колонку со строгим указанием типа          //строчки     Строка = Таблица.Добавить();     Строка.Наименование = "Текст1";  //указываем произвольное значение     Строка.Индекс = "185001";   //указываем произвольное значение     Строка = Таблица.Добавить();     Строка.Наименование = "Текст11"; //указываем произвольное значение     Строка.Индекс = "185001";   //указываем произвольное значение     Строка = Таблица.Добавить();     Строка.Наименование = "Текст2";  //указываем произвольное значение     Строка.Индекс = "185002";   //указываем произвольное значение     Строка = Таблица.Добавить();     Строка.Наименование = "Текст22"; //указываем произвольное значение     Строка.Индекс = "185002";   //указываем произвольное значение     Строка = Таблица.Добавить();     Строка.Наименование = "Текст3";  //указываем произвольное значение     Строка.Индекс = "185003";   //указываем произвольное значение     Строка = Таблица.Добавить();     Строка.Наименование = "Текст33"; //указываем произвольное значение       Строка.Индекс = "185003";   //указываем произвольное значение     Строка = Таблица.Добавить();        Строка.Наименование = "Текст333";    //указываем произвольное значение       Строка.Индекс = "185003";   //указываем произвольное значение                ТабДокумент  = Новый ТабличныйДокумент;     ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ";          АктивныйДокумент = ПолучитьМакет("Макет");     КомОбъект = АктивныйДокумент.Получить();               Word = КомОбъект.Application;     Док=Word.Documents(1);     // Отключим проверку грамматики и вывод информации о грамматических ошибках.     Док.GrammarChecked=0;     Док.ShowGrammaticalErrors=0;          Док.Activate();     //Файл = "E:doc" + Индекс1 + "_" + КолЗаписей + ".doc";     Word.Selection.WholeStory();     Word.Selection.Copy();          Счетчик = 0;          Индекс1 = "";     КолЗаписей = 0;          //обход всей таблицы     Для каждого Стр из Таблица Цикл         Счетчик = Счетчик + 1;           Если Индекс1 <> Стр.Индекс Тогда             Если НЕ Индекс1=""  Тогда                 ЗаписатьФайл (Док,КолЗаписей,Индекс1,Файл);              КонецЕсли;                              ТабДокумент  = Новый ТабличныйДокумент;             ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ";                          АктивныйДокумент = ПолучитьМакет("Макет");             КомОбъект = АктивныйДокумент.Получить();                                       Word = КомОбъект.Application;             Док=Word.Documents(1);             // Отключим проверку грамматики и вывод информации о грамматических ошибках.             Док.GrammarChecked=0;             Док.ShowGrammaticalErrors=0;                          Док.Activate();             //Файл = "E:doc" + Индекс1 + "_" + КолЗаписей + ".doc";             Word.Selection.WholeStory();             Word.Selection.Copy();                                       КолЗаписей = 0;         КонецЕсли;                  КолЗаписей = КолЗаписей + 1;                  Замена = Док.Content.Find;         Замена.Execute("ЛС"+Счетчик,  Ложь, Истина, Ложь, , , Истина, , Ложь, Стр.Наименование);         Замена = Док.Content.Find;         Замена.Execute("Индекс"+Счетчик,  Ложь, Истина, Ложь, , , Истина, , Ложь, Стр.Индекс);                  Word.Selection.EndKey(6);                Если Счетчик < Таблица.Количество() тогда                 Word.Selection.InsertBreak(7);                 Word.Selection.Paste();      КонецЕсли;                          Индекс1 = Стр.Индекс;     КонецЦикла;     ЗаписатьФайл (Док,КолЗаписей,Индекс1,Файл);       Word.Quit(); КонецПроцедуры     Процедура ЗаписатьФайл (Док,КолЗаписей,Индекс1,Файл)      Док.SaveAs(Файл + ?(Прав(Файл,1)="","","") + Индекс1 + "_" + КолЗаписей + ".doc");     Док.Close(0); КонецПроцедуры

Можете подсказать как мне сделать чтобы два значения выводила.

Миниатюры

Word SaveAs 1c
 

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 

ɢʀᴜɴᴛ's user avatar

ɢʀᴜɴᴛ

31.4k15 gold badges111 silver badges108 bronze badges

asked Aug 16, 2017 at 20:05

rtFord's user avatar

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

Aeroradish's user avatar

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's user avatar

Suraj Rao

29.3k11 gold badges96 silver badges103 bronze badges

answered Feb 4, 2021 at 11:27

Swiss Developer's user avatar

Добрый день! Почитала про это в инете, нашла что это возможно, пишут пример такой команды 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Класс для вывода отчета в Excel
  • Счет-фактура для УПП
  • Библиотека классов для создания внешней компоненты 1С на C#
  • Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
  • Прайс-лист с артикулом в отдельной колонке

47 Comments

  1. Спасибо за статью, но ничего нового тут нет. Если Вы испытываете трудности с получением макета — храните вордовский шаблон файлом на диске (в общей шаре конечно) и все сведется к получению кома файла НаКлиенте. Возможно есть случаи, когда необходимо хранить шаблон вордовского файла в конфигурации, но на мой взгляд оперативно изменять текстовку шаблона (особенно если это договор и юристы никак не могут договориться о содержании шаблона :)) без влезания в конфигуратор проще и быстрее.

    Reply

  2. P.S. кстати, обратите, какая изящная задача получилась для тестирования опытного кандидата на работу.

    На собеседовании спрашивают то, что сами недано узнали (с)баш

    А если по теме, с какой стати у клиента есть доступ к файловой системе сервера и наоборот (и расшаренные папки тоже неуниверсально)? Лучше через двоичные данные и ХранилищеЗначения передавать, см. работу с картинками, а на клиенте сохранять во временный файл.

    А так полезная статья, узнал зачем нужен ActiveDocument 🙂

    (1) andrei.k, согласен, пусть лучше юзеры свой шаблон правят, не программистское это дело.

    Reply

  3. Друзья, я с Вами полностью согласен. Но файла в общей шаре может и не быть, а может у него имя изменили, а может шара недоступна, а может там что-то изменили без нашего ведома и заполнение параметров этого файла не получится сделать корректно.

    Слишком уж тут много неявных причин.

    По сути да — не очень понятно на кой черт такие танцы с бубном, ведь программная работа с ActiveDocument ничем не отличается от ДвоичныхДанных или ХранилищаЗначения. Принцип тот же.

    Но все-таки, пусть будет — для галочки 😉

    Reply

  4. Макет = ОбщийМодуль.ПолучитьМакет(Документ); //серверная функция, записывает макет в файл и возвращает полное имя файла

    разъясните

    если серверная функция записывает макет в файл, то где этот файл будет лежать?

    если на сервере, то как к нему получает доступ клиент в этом коде?

    Шаблон = ПолучитьCOMОбъект(Макет); //инициализируем COM-объект

    если на клиенте, то как серверная функция получит доступ к файловой системе клиента?

    и как она передаст на клиента этот самый файл?

    в общем, нужно привести листинг этой серверной функции, а также параметры модуля «ОбщийМодуль»

    Reply

  5. (4) YurySigolaev, у нас настроена общая шара, которая доступна для клиента и для сервера, по той простой причине, что все юзеры находятся в домене и не могут самостоятельно сохранять файл на локальную машину, с которой работают в данный момент (т.к. каждый раз они могут садиться за разные компьютеры)

    В остальных случаях уже написали как это делать 🙂

    Reply

  6. А можно для тупых полный листинг привести?))

    Reply

  7. Повторюсь

    А можно для тупых полный листинг привести?))

    Reply

  8. (6) s_uu, (7) Dighty,

    какой именно листинг нужно привести?

    В статье ведь есть листинг

    Reply

  9. Листинг &НаСервере если можно.

    Reply

  10. Или помогите я разобраться не могу. Мне надо документ activedocument на тонкий клиент вывести, сижу 3 день мозг ломаю. Пожалуйста помогите.

    Reply

  11. (10) Dighty, через двоичные данные. Читайте 2-й пост

    Reply

  12. Каким методом вы записывали файл Word на сервере? У меня на файловой метод SaveAs(ПУТЬ) работает, а на сервере нет. Путь доступен соответственно и там и тут, только на сервере почему то метод SaveAs не обнаружен… Метод Save работает только для ранее сохраненных, а у меня файл вновь созданный.

    /////Уточнение от 17.09.15

    Метод SaveAs он не пишет, что не обнаружен, а пишет «Произошла исключительная ситуация (Microsoft Word): Ошибка команды»

    Reply

  13. (12) klinval, a word на сервере установлен?

    Reply

  14. (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

  15. (14) klinval, проверьте права доступа для пользователя, word и 1С на стороне сервера

    Скорей всего проблема в этом. Можете попробовать залогиниться на сервак под юзером, под которым запускается 1С сервер и проверить, даёт ли там сохранить файл интерактивно

    Reply

  16. (15) я уже ранее проводил такую проверку: залогинился под пользователем и сохранил word интерактивно. Клиентской 1С на сервере до этого вообще не стояло, я поставил. Запустился, а там ошибка(см. приложение). Возможно в этом и косяк.

    У вас то обработка (во вложении к 14 сообщению) работает на SQL базе?

    Reply

  17. (16) klinval, конкретно в данный момент, нет возможности проверить вашу обработку

    Добавьте 1С в исключения в свойствах обозревателя IE

    Reply

  18. (17) отключил усиленную безопасность IE, поставил на самый «небезопасный» уровень, ошибка, указанная в 16 сообщении ушла, но метод SaveAS всё равно не работает.

    Так всё таки под кодом:

     Макет = ОбщийМодуль.ПолучитьМакет(Документ); //серверная функция, записывает макет в файл и возвращает полное имя файла

    Каким методом ты записываешь? Save, SaveAS?

    Reply

  19. (18) klinval, посмотрите на дату публикации. Доступа к той обработке у меня давно нет, а в памяти я такое держать не могу 🙂

    Что значит

    метод SaveAS всё равно не работает.

    ?

    Ошибка выпадает? Файл не сохраняет?

    Reply

  20. (19)

    Ошибка выпадает? Файл не сохраняет?

    Да. Да:)

    По-любому косяк где-то на уровне прав Windows-пользователя (т.е. связано с администрированием серверов, а не с 1С). Даже обработка с сообщения 14 не работает (хотя где там можно ошибиться?).

    {Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (SaveAs)

    Документ.SaveAs(ИмяВрем);

    по причине:

    Произошла исключительная ситуация (Microsoft Word): Ошибка команды

    Поэтому мне проще было не разбираться, а запихнуть шаблон не в ActiveDocument, а в двоичные данные, которые я могу спокойно передать на клиент. Что я и сделал… А ошибка с SaveAs, скорее всего так и останется неразгаданной.

    Reply

  21. (20) klinval, вам нужно запуститься непосредственно по тем пользователем, который указан для 1С на сервере и именно под ним попробовать сохранить MS Word интерактивно

    Reply

  22. (21) уже пробовал. Сохраняет… как ни странно.

    Reply

  23. (22) klinval, тогда нужно ловить ошибку, которую возвращает приложение

    подключитесь к MS Word из 1С через COM на сервере и попытайтесь сохранить файл методом SaveAs

    Reply

  24. (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

  25. (24) klinval, вам нужна ошибка именно MS Word

    {Форма.Форма.Форма(13)}: Ошибка при вызове метода контекста (SaveAs)

    Документ.SaveAs(ИмяВрем);

    по причине:

    Произошла исключительная ситуация (Microsoft Word): Ошибка команды

    Это листинг ошибки 1С. Обработайте через 1С, сообщение об ошибке MS Word и выведите её содержимое

    Reply

  26. (25)

    Обработайте через 1С, сообщение об ошибке MS Word и выведите её содержимое

    Не понял, как это сделать?

    Reply

  27. (26) klinval, в смысле? руками)))

    Reply

  28. (27) правильно я понял: ты хочешь увидеть ошибку как её видит Word, а не как её нам даёт 1С?

    Если да, то опять вопрос: как из 1С это можно вывести?

    Reply

  29. (28) klinval, читай про COM-объекты и инструментарий по MS Word

    Reply

  30. (29) что искать/читать и где? Вы ответьте хотя бы на:

    правильно я понял: ты хочешь увидеть ошибку как её видит Word, а не как её нам даёт 1С?

    Reply

  31. (30) klinval, искатьчитать:

    — работа с COM объектами в 1С

    — интеграция MS Word и 1С

    Вы ответьте хотя бы на:

    1С вообще никакой ошибки не видит, она тупо посредник между пользователем и приложением (MS Word)

    Reply

  32. (31) это реально можно вывести ошибку в 1С как её видит Word или ты чисто теоретически предполагаешь, что такой метод есть?

    Может я тебя не правильно понял: по тексту мне показалось, что ты уверен, что такая возможность (такой метод) есть, а может ты имел ввиду, что чисто теоретически такая возможность должна быть.

    Reply

  33. (32) Столкнулся с аналогичной проблемой — хотел узнать, удалось ли ее в итоге победить или забили?

    Ошибка таже:

    Ошибка при вызове метода контекста (SaveAs)

    Reply

  34. (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

  35. (32) klinval, (33) ivant, (34) klinval,

    вы получаете COM-объект MS Word

    соответственно работаете с API данного com-объекта (т.е. Word)

    функция SaveAS является функцией API Word

    значит, чтобы получить ошибку Word нужно воспользоваться API этого самого Word

    Reply

  36. Аналогичная ошибка, не может открыть документ сохраненный в темп

     ДвоичныеДанные = ПолучитьДвоичныеДанныеМакета(); COMОбъект = Новый COMОбъект(«Word.Application»); ИмяВременногоФайла = ПолучитьИмяВременногоФайла(«DOC»); ДвоичныеДанные.Записать(ИмяВременногоФайла); COMОбъект.Documents.Open(ИмяВременногоФайла); // здесь вываливается ошибка, никаких документов он не открыл, в темпе лежит созданный документ ворда , COMОбъект.Documents.Count = 0, через ЖР проверял Док = COMОбъект.Application.Documents(1); Док.Activate(); 

    Показать

    Reply

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

    Код:

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

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

    Reply

  38. А почему нельзя использовать документ двоичные данные? Загрузил туда шаблон. Получили шаблон. Сохранили документ. Передали на клиент имя открыли через 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

  39. (42)

    МакетПисьма = ПолучитьИзВременногоХранилища(Индификатор);

    Здесь в тонком клиенте у Вас будет выскакивать ошибка. Такой способ только для толстого клиента подходит.

    Reply

  40. (43) Выскажусь в защиту:

    Глобальный контекст (Global context)

    ПолучитьИзВременногоХранилища (GetFromTempStorage)

    Синтаксис:

    ПолучитьИзВременногоХранилища(<Адрес>)

    Параметры:

    <Адрес> (обязательный)

    Тип: Строка.

    Адрес, указывающий на значение во временном хранилище.

    Возвращаемое значение:

    Тип: Произвольный.

    Значение, ранее помещенное с помощью метода ПоместитьВоВременноеХранилище.

    Описание:

    Получает значение из временного хранилища.

    Доступность:

    Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).

    Вызов метода выполняет обращение к серверу.

    Примечание:

    Результат выполнения не кэшируется, вызов сервера осуществляется при каждом вызове метода.

    Показать

    В справке написано, что тонкий клиент можно использовать! Я в своей статье данный метод тоже привожу в тонком клиенте, причём этот код уже давно работает на рабочей базе (в толстом клиенте у нас никто не работает).

    Reply

  41. Решение проблемы «Ошибка при вызове метода контекста (SaveAs) «

    Reply

  42. (17) Надо не 1с в исключения добавить, а всю строку about:…. только при добавлении снять галку с https…,а указанное в (18) делать нежелательно…тем более на сервере…

    Reply

  43. (33) У меня такая проблема была. все было в правах на сервере…получалось при этом сохранять в шару..решил делать это не на рдп а на локальной машине…SQL тут не причем

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *

   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

Спасибо всем.Решил проблему.

Добрый день! Почитала про это в инете, нашла что это возможно, пишут пример такой команды 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)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

  • Произошла временная ошибка dns попробуйте обновить страницу код ошибки inet e resource not found
  • Произошла критическая ошибка directx call of duty infinite warfare
  • Произошла внутрисистемная ошибка при установке directx
  • Произошла критическая ошибка bitcoin core
  • Произошла внутрисистемная ошибка dxerror log directx log