Имя: Пароль:
1C
1C 7.7
v7: 1с77 + open office
, ,
0 Z_Z
 
24.03.15
11:56
Добрый день. Необходимо из 1с открыть файлы в опен офис только на чтение(без возможности редактирования). Нашел код :
    // Открыть OpenOffice
    
    ServiceManager = СоздатьОбъект("com.sun.star.ServiceManager");
    Desktop        = ServiceManager.createInstance("com.sun.star.frame.Desktop");
    
    Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    Свойства.Name = "ReadOnly";
    Свойства.Value = 0;
    
    
    Scr = СоздатьОбъект("MSScriptControl.ScriptControl");
    Scr.Language="javascript";
    Scr.Eval("Args=new Array()");
    Args = Scr.Eval("Args");
    Scr.AddObject("ServiceManager", ServiceManager);
    
    // Откроем шаблон
    
    ТекстовыйПроцессор = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяФайла), "_blank", 0, Args);

А у меня этот код ругается :
Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
{Документ.Договор.Форма.Модуль(288)}: Поле агрегатного объекта не обнаружено (Bridge_GetStruct).
Что может быть?
1 Z_Z
 
24.03.15
12:00
А без этого кода  работает, но есть возможно редактировать:
Свойства = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    Свойства.Name = "ReadOnly";
    Свойства.Value = 0;
2 Z_Z
 
24.03.15
12:11
нашел рабочий код, но все равно открвается документ с возможность редактировать(
    SaveParam = scr.Eval("ServiceManager.Bridge_GetStruct('com.sun.star.beans.PropertyValue')");
       SaveParam.Name = "ReadOnly";
       SaveParam.Value = 0;
3 Oxygen-so
 
24.03.15
12:14
А не проще у открываемого файла ReadOnly выставить?
4 Gangar
 
24.03.15
12:16
5 Z_Z
 
24.03.15
12:23
(3) нет. Он же при открытие заполняется данными из 1с.
6 Z_Z
 
24.03.15
12:35
не хочется 10 страниц договора переносить в мхл и там его форматировать(((
7 Oxygen-so
 
24.03.15
13:00
(5) Создать, заполнить из 1С, записать, закрыть. Установить атрибут RO. Открыть. Не?
8 Z_Z
 
24.03.15
13:15
(7) вариант, есть пример как это сделать?:)
9 Z_Z
 
24.03.15
14:06
Уперся в изменение атрибута файла. Можно вообще изменить атрибут файла из 1с77?
10 Oxygen-so
 
24.03.15
14:11
(9) Из 1С 7.7 можно сделать все, вызывая внешние команды или скрипты (через объект).

Для справки:

КомандаСистемы
Вызывает на исполнение команду DOS.
Синтаксис:
КомандаСистемы(<СтрокаКоманды>)
Англоязычный синоним:
System
Параметры:
<СтрокаКоманды>
Строковое выражение, содержащее строку коман­ды.
Описание:
Процедура КомандаСистемы вызывает на исполнение команду, как если бы она была введена в командной строке DOS. При выполнении команды за­гружается исполняемый файл как «верхняя», активная программа.
Если загружается Windows-приложение, то управление немедленно возвра­щается в систему 1С:Предприятие на следующий за оператором КомандаСистемы оператор и система продолжает выполняться как фоновая прикладная программа. Пользователь может возвратиться в запускающую про­грамму или закончив выполнение запущенной, или переключившись обратно посредством списка задач Windows.
Если в параметре <СтрокаКоманды> не содержится путь к загружаемой программе в файловой системе к программе, то поиск происходит в следующей последовательности:
-             текущий системный каталог;
-             каталог Windows;
-             системный каталог Windows;
-             все каталоги, указанные в переменной PATH;
Пример:
* В данном примере запускается редактор текста notepad.exe и в него за­гружается файл textl. txt.
КомандаСистемы("notepad textl.txt");
11 Oxygen-so
 
24.03.15
14:11
(9) Команду attrib сам посмотришь, надеюсь.
12 Z_Z
 
24.03.15
14:17
(11)гениально!!! Работает:)
КомандаСистемы("attrib +r c:\Test.doc");
13 Oxygen-so
 
24.03.15
14:47
(12) Бинго? ;-)
14 Z_Z
 
24.03.15
14:56
(13)ага!))))Спасибо!
Программист всегда исправляет последнюю ошибку.