Имя: Пароль:
1C
1С v8
Сохранение в Word
,
0 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:\Local\Dogovor\Oborudovanie";
    MSWord.SaveAS(Каталог + "\" + ИмяФайла + "(оборудование)",16);
          
Исключение
    Сообщить(ОписаниеОшибки());
    MSWord.Application.Quit();
КонецПопытки;

Иногда меня выкидывает с ошибкой, что {Документ.ЗаказПокупателя.МодульМенеджера(11636)}: Ошибка при вызове метода контекста (SaveAS): Произошла исключительная ситуация (Microsoft Word): Ошибка команды

В чём тут дело, может кто подскажет? Если контрагент - ИП или розничный покупатель, договор нормально сохраняется; если ООО - через раз. Конфигурация "Управление небольшой фирмой" ред.1.4. Заранее спасибо.
1 Vexcel
 
30.12.13
00:08
(0) ну наверно что то не нравиться в имени файла, может какой ни будь странный символ, или вовсе NULL приходит
Поставь в сообщение с ошибкой ещё и ИмяФайла
2 nikolas2605
 
30.12.13
00:09
(1) Пробовал кавычки убирать у ООО-шек - пока толку нет
3 nikolas2605
 
30.12.13
00:12
Например, ООО "ИТБ-Семигорье" меня выкидывает, а ООО "Ланч" сохраняет...
4 nikolas2605
 
30.12.13
00:15
Иду в отладчик, получаю, что когда меня выкидывает, программа пишет: метод объекта не обнаружен SaveAs. Куда смотреть далее, ведь такое не на всех контрагентах?
5 alexei366
 
30.12.13
00:19
(4) Так мож обращайся к объекту документа а не приложения.
Я через метод объекта документа делаю сохранение а не через метод приложения (я даж честно говоря и не задумывался и не смотрел что у приложения ворда тож такой метод есть), и удаляю все запрещенные виндой символы в имени файла перед сохранением
6 nikolas2605
 
30.12.13
00:24
(4)Извини за глупый вопрос, это как? Я пока начинающий, набираюсь опыта. Примеров не надо, просто объясни
7 alexei366
 
30.12.13
00:54
Doc.SaveAS(...)
8 alexei366
 
30.12.13
00:56
(7) И вообще вроде метод не SaveAS а  SaveAs
9 alexei366
 
30.12.13
01:00
10 nikolas2605
 
30.12.13
01:01
(9) Спасибо. сейчас смотрю. Пока и так выкинуло.
11 nikolas2605
 
30.12.13
01:07
Ссылка полезная. Если вычисляю выражение MSWord = Договор.Получить(), то мне на MSWord выдаёт свойства, а не методы...
12 alexei366
 
30.12.13
01:18
(11) А ты какбудто у какогонить объекта видел чтоб отладчик методы подсказвал?
13 alexei366
 
30.12.13
01:19
(11) А табличные части как заполнять будешь? или у тебя их нет?
14 nikolas2605
 
30.12.13
01:23
(12) Не видел. Пока ещё первый раз так печать реализую.
(13) Нет
15 nikolas2605
 
30.12.13
01:27
Какие символы виндой недопустимы?
16 alexei366
 
30.12.13
01:39
(15) Создай файл на рабочем столе, начни его переименовывать и попытайся поставить двоеточие, винда те покажет
17 alexei366
 
30.12.13
01:40
(14) Чот я у т в коде печати не вижу
18 nikolas2605
 
30.12.13
01:43
(17) пока не написал печать
19 nikolas2605
 
30.12.13
01:50
(17)Что программе не понравилось? Написал так:
Doc.SaveAS(Каталог + "\" + ИмяФайла,16);
Сохранила!
20 nikolas2605
 
30.12.13
01:57
Рано радовался
21 nikolas2605
 
30.12.13
02:23
Сделал так:
ИмяФайла = Результат.Контрагент.Наименование;

И так как наименование - это краткое наименование контрагента, винда не пропускала кавычки в нём. Убрал кавычки в кратком наименовании в контрагенте, в полном оставил. Сохраняет.
22 alexei366
 
30.12.13
02:26
(21) Ты чо тупишь, сделай отдельную функцию типа :

Функция ПреобразоватьСтрокуВИмяФайла(ВходнаяСтрока)

ВходнаяСтрока = СтрЗаменить(ВходнаяСтрока,":","");
ВходнаяСтрока = СтрЗаменить(ВходнаяСтрока,"""","");
........

Возврат ВходнаяСтрока;

КонецФункции
23 alexei366
 
30.12.13
02:27
(22) И Соответственно

ИмяФайла = ПреобразоватьСтрокуВИмяФайла(Результат.Контрагент.Наименование);
24 alexei366
 
30.12.13
02:27
(22) Ток в объявлении вот так

Функция ПреобразоватьСтрокуВИмяФайла(Знач ВходнаяСтрока)
25 nikolas2605
 
30.12.13
11:21
(24)Сработало. Спасибо. С наступающим Новым Годом!
26 alexei366
 
30.12.13
11:31
(25) Ага давай, тя тоже
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший