Имя: Пароль:
1C
1C 7.7
v7: Открытие файлов различного типа
0 AliAksA
 
13.06.18
10:40
Привет всем !

Подскажите, пожалуйста, как штатными средствами открыть для просмотра из 7-ки Вордовские и Экселевские файлы? (есть полный путь к файлам)
Особо буду благодарен за фрагменты кода либо ссылки на почитать.
1 Cool_Profi
 
13.06.18
10:41
командаСистемы("Start " + ИмяФайла)
2 AliAksA
 
13.06.18
10:52
(1) спасибо, на локальном взлетело, на серваке - мимо, ещё варианты есть?
3 AliAksA
 
13.06.18
10:53
+(0) реализую возможность передачи сообщений с прикрепленным файлом - нужно его открыть - все на удаленном подключении
4 YaFedor
 
13.06.18
10:54
(3) А приложения для открытия файлов на сервере есть?
5 Cool_Profi
 
13.06.18
10:56
(2) А кому ты на сервере просматривать документы собираешься? Или У тебя терминал? Так ставь нужные приложения и открывай по сети. Или копируй их туда...
6 AliAksA
 
13.06.18
10:58
Проблема с пробелами в именах папок - надо в кавычки имя файла взять, не подскажете, как правильно это сделать? (а то туплю че-та)
7 Cool_Profi
 
13.06.18
11:01
(6) """c:\program files\"""
8 AliAksA
 
13.06.18
11:03
(7) а вот сюда командаСистемы("Start " + ИмяФайла) а то у меня не фига не выходит)
9 AliAksA
 
13.06.18
11:07
ыыыыыыыыыыыыыыыыыыыыы и вордовсике не хочет открывать ентой командой (((
10 Cool_Profi
 
13.06.18
11:27
(8) КомандаСистемы("start "" + ИмяФайла + """");

Смысл - завдвоить кавычки
11 Cool_Profi
 
13.06.18
11:27
(9) У ворда нет такой команды...
12 AliAksA
 
13.06.18
11:30
(11) спасибо, буду колдовать дальше - попробую вызвать ворд.exe через командную строку + имя файла
13 Cool_Profi
 
13.06.18
11:35
(12) А может, для начала задачу опишешь?
14 Остап Сулейманович
 
13.06.18
11:42
(2) "на локальном взлетело, на серваке - мимо"
1. Сам файл на сервер передал?
2. Путь к файлу на сервере проверил?

ЗЫ. И вообще такая ошибка ка "мимо" может родиться только в мозгу программиста. И не может в 1С.
15 AliAksA
 
13.06.18
11:43
(13) в (3) описана - передать сообщения с прикрепленным файлом  пользователю через 1Ску и открыть его внешним приложением: текстовые, вордовские или экселевские доки
16 Остап Сулейманович
 
13.06.18
11:43
+ (14)
3. На сервере установлено приложение для обработки файла?
4. Зарегистрировано ли приложения для обработки файла "по умолчанию"?
17 AliAksA
 
13.06.18
11:44
(14) проблема с пробелами в именах папок, а так и на серваке взлетает
18 AliAksA
 
13.06.18
11:45
(16) все там есть, вот только командаСистемы("Start " + ИмяФайла) с вордом и экселем не получается
19 Остап Сулейманович
 
13.06.18
11:46
(15) Что используется для "передать сообщения с прикрепленным файлом  пользователю через 1Ску"? Оно вообще так умеет? Могу понять "по сети", "по ftp", "по мылу" тоже могу понять.
Но как можно передать "через 1Ску"? ИМХО - набор несвязных слов.
20 AliAksA
 
13.06.18
11:53
да капец даже тут не получается: КомандаСистемы("start "" + ИмяФайла + """") + либо ошибку выдает, либо не хватает ...
Кто нить подскажет какой Симв() кавычки?
21 Cool_Profi
 
13.06.18
11:56
(20) стр = "start "" + ИмяФайла + """";
Сообщить("" + стр);

что скажет?
22 AliAksA
 
13.06.18
11:58
(21) синтаксическая ошибка в коде)))
23 Масянька
 
13.06.18
11:58
(20) Процедура ОткрытьДоговор()
    
    // определим расширение файла - можно doc или pdf
    мТочка = Найти(ИмяФайла, ".");
    РасширениеФайла = Сред(ИмяФайла, мТочка + 1);

    Если (РасширениеФайла = "pdf") Тогда
        // открываем файл                            
        Попытка
            КомОбъект = СоздатьОбъект("shell.application");
            КомОбъект.Open(ИмяФайла);
        Исключение
            Предупреждение(ОписаниеОшибки());
        КонецПопытки;
    ИначеЕсли (РасширениеФайла = "doc") Тогда
        // открываем файл                            
        Попытка
            мWord = СоздатьОбъект("Word.Application");
            мДок = мWord.Documents.Open(ИмяФайла);  
            // активируем Word
            мWord.Visible = 1;
            мWord.Application.WindowState = 2;
            мWord.Application.WindowState = 1;
        Исключение
            мWord.Quit();
            Предупреждение(ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
    
КонецПроцедуры

ИмяФайла - строка, полный путь.
24 1Сергей
 
13.06.18
11:59
(22) голову включай. ВСего одна кавычка пропущена
25 AliAksA
 
13.06.18
12:00
(23) вай, то что доктор прописал, пасибки огромное
26 AliAksA
 
13.06.18
12:00
(24) а вот сам попробуй, там синтаксическая или лажа выходит)
27 AliAksA
 
13.06.18
12:17
ВСЕМ СПАСИБО !!! Масяньке - отдельное!
вот это работает:

Процедура ОткрытьФормула()
    
    ИмяФайла = СокрЛП(Сообщение.ИмяФайла);
    Расширение = Прав(ИмяФайла, 3);
    Если Расширение = "txt" Тогда
        Попытка
            КомандаСистемы("start " + ИмяФайла);
        Исключение
            Предупреждение("Не удалось открыть данный файл !");
        КонецПопытки;        
    ИначеЕсли Расширение = "pdf" Тогда
        Попытка
            КомОбъект = СоздатьОбъект("shell.application");
            КомОбъект.Open(ИмяФайла);
        Исключение
            Предупреждение("Не удалось открыть данный файл !");
        КонецПопытки;
    ИначеЕсли Расширение = "doc" Тогда
        Попытка
            мWord = СоздатьОбъект("Word.Application");
            мДок = мWord.Documents.Open(ИмяФайла);
            мWord.Visible = 1;
            мWord.Application.WindowState = 2;
            мWord.Application.WindowState = 1;
        Исключение
            мWord.Quit();
            Предупреждение("Не удалось открыть данный файл !");
        КонецПопытки;
    ИначеЕсли Расширение = "xls" Тогда
        Попытка
            Эксель = CreateObject("Excel.Application");
            Док = Эксель.Workbooks.Open(ИмяФайла);
            Эксель.Visible = 1;
        Исключение
            Предупреждение("Не удалось открыть данный файл !");
        КонецПопытки;
    Иначе
        Предупреждение("Файлы данного типа программой не обрабатываются !");
    КонецЕсли;
    
КонецПроцедуры // ОткрытьФормула()
28 linoblack
 
13.06.18
16:44
txt, doc, xls - вы из какого года будете? ))))))))
29 HawkEye
 
13.06.18
16:48
(23) (27) объект создаете в попытке, а  мWord.Quit() - в исключении....
30 Duke1C
 
13.06.18
16:51
(0) (27) Выкинь свой говнокод и не слушай никого -
ЗапуститьПриложение(Путь); где Путь и есть твоё  полное имя файла.
31 Масянька
 
13.06.18
16:54
(30) И где ты был раньше?
Спасибо.
32 Duke1C
 
13.06.18
16:58
(31) Да я всегда здесь:) Просто вы меня редко слушаете
33 Масянька
 
13.06.18
16:59
(32) Я впервые услышала про ЗапуститьПриложение.
"Сегодня, чтобы тебя услышали - недостаточно похлопать по плечу." (С)
34 Duke1C
 
13.06.18
17:04
Читаем внематочно СП:

ЗапуститьПриложение(<?>);
Синтаксис:
ЗапуститьПриложение(<СтрокаКоманды>)
Назначение:
Выполняет запуск любого приложения. В отличие от функции 'КомандаСистемы' запуск приложения выполняется непосредственно, минуя командный интерпретатор. Процедура, кроме того, может открыть файл с помощью ассоциированного для данного вида файлов приложения. (При условии, что таковое установлено на данном компьютере).
Параметры:
<СтрокаКоманды> - командная строка запуска приложения или имя файла, чтобы открыть его с помощью ассоциированного для данного вида файлов приложения.
Последовательность поиска программы (если не задан путь):
  текущий системный каталог;
  каталог Windows;
  системный каталог Windows;
  все каталоги, указанные в переменной PATH.
35 trad
 
13.06.18
17:17
(33) вот это поворот
36 trad
 
13.06.18
17:18
(35) + источник знаний не только епрст
37 AliAksA
 
13.06.18
17:29
(34) зачет, принято, проверено, взлетело, спасибо)
38 Duke1C
 
13.06.18
17:34
(37) ну ебстественно, куды ж оно денется:)
в любых Виндах работает, за Линух не скажу