| 
    
        
     
     | 
    
    
  | 
Сохранение в 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) Ага давай, тя тоже     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |