Имя: Пароль:
IT
Админ
Как построчно заполнить таблицу в OO из 1с
,
0 Карась
 
06.08.12
13:14
Здравствуйте! Я хочу перенести табличную часть из 1с в оо, мне сказали что сделать это можно только через цикл

Строка=Элементы.Товары.ТекущийЭлемент;
  Строки=Объект.Товары;
Для Каждого Строка Из Строки  Цикл
 

КонецЦикла;

А как мне сделать, чтобы он потом построчно переносил строки табличной части 1с в OO  в виде строки
У меня есть Закладка в документе, как мне в нее все это передать?
1 Карась
 
06.08.12
13:18
Мне подсказали что можно сделать с помощью метода insertByIndex, но пока адаптировать его под себя я не могу
2 Карась
 
06.08.12
13:23
Надеюсь на Вашу помощь.
3 ICWiner
 
06.08.12
13:33
ОО - общество ортодоксов?
4 Карась
 
06.08.12
13:34
Open Office
5 Карась
 
06.08.12
13:35
Конкретнее Open Office writer
6 MaXpaT
 
06.08.12
13:40
Карась, позвал бы ты лучше программиста ....

или есть ещё вариант!
Правой кнопкой в табличное поле - вывести список - файл - сохранить копию - и выбери то что нужно тебе
7 ICWiner
 
06.08.12
13:41
Нашел в просторах интернетов... Как раз ваш случай:


Необходимо заменить в шаблоне ключевые слова в скобках {}, на указанные значения, вот примерный код обработки:
Код 1C v 7.x


//рдТаблицаЗамен - Таблица значений:
// {Организация} ООО "Контора"
// {Контрагент} ООО "Должник"
// {Директор} Дядя Вася
ПечатьИзШаблона(рдТаблицаЗамен, "Primer.doc");

// Функция преобразует Windows имя файла в URL OpenOffice                      
Функция ПреобразоватьВURL(ИмяФайла)
   Возврат "file:///" + СтрЗаменить(ИмяФайла, "\", "/");    
КонецФункции

Функция ОбработкаФайлаШаблона(ИмяШаблона) Экспорт
                                                 
   ИмяФайла = КаталогВременныхФайлов() + "doc.tmp";                                                                                          
   Путь = "";    Имя = "";
   ФайлОбработки = РасположениеФайла(Путь, Имя);
   
   КаталогШаблонов = Путь;      
   ПолноеИмяШаблона = КаталогШаблонов + ИмяШаблона;
   
   РезультатОбработки = 0;
                           
   // Проверка на существование
   ЕстьШаблон = 0;
   Если ФС.СуществуетФайл(КаталогШаблонов + ИмяШаблона) = 0 Тогда  
       Сообщить("Файл " + ИмяШаблона + " не найден в каталоге шаблонов печатных форм! Обратитесь к системному администратору!", "!!!");                                  
   Иначе
       ЕстьШаблон = 1;
   КонецЕсли;                  
   
   // Копирование во временный каталог
                           
   Если ЕстьШаблон = 1 Тогда
       ФС.КопироватьФайл(ПолноеИмяШаблона, ИмяФайла, 0);
   КонецЕсли;                                                            
   
   // Проверка копирования
   
   Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
       РезультатОбработки = 1;  
   Иначе
       Сообщить("Не удалось скопировать шаблон во временный файл.");
   КонецЕсли;
   
   Возврат РезультатОбработки;    
   
КонецФункции

Процедура ОткрытьТекстовыйПроцессор(ИмяФайла, ТаблицаЗамен)  
   
   ТекПроцессор = рдТекстовыйПроцессор.ПолучитьЗначение(рдТекстовыйПроцессор.ТекущаяСтрока());
   
   Если ТекПроцессор = "OOoWriter" Тогда
       
       // Открыть OpenOffice
       
       ServiceManager = СоздатьОбъект("com.sun.star.ServiceManager");
       Desktop        = ServiceManager.createInstance("com.sun.star.frame.Desktop");
       
       
       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);
       
       // Заменяем ключевые поля на нужные значения
                               
       Replace = ТекстовыйПроцессор.CreateReplaceDescriptor();
       
       Для x=1 По ТаблицаЗамен.КоличествоСтрок() Цикл
           
           Replace.SearchString  = ТаблицаЗамен.ПолучитьЗначение(x, 1);
           Replace.ReplaceString = ТаблицаЗамен.ПолучитьЗначение(x, 2);
           ТекстовыйПроцессор.ReplaceAll(Replace);
           
       КонецЦикла;
       
   Иначе                                
       
       // Открываем MS Office Word
       
       Попытка
           ТекстовыйПроцессор = СоздатьОбъект("Word.Application");
       Исключение            
           Сообщить("Не удалось создать объект Microsoft Office Word!", "!!!");
           Возврат;            
       КонецПопытки;        
       
       // Открываем шаблон
       
       ТекстовыйПроцессор.Visible = 0;
       ТекстовыйПроцессор.Documents.Open(ИмяФайла,, -1);
       Fnd = ТекстовыйПроцессор.ActiveDocument.Range().Find;
       Fnd.ClearFormatting();
       Fnd.Forward = -1;  
       
       // Заменяем ключевые поля на нужные значения
       
       ТаблицаЗамен.ВыбратьСтроки();
       Пока ТаблицаЗамен.ПолучитьСтроку() = 1 Цикл  
           Fnd.Execute(ТаблицаЗамен.Найти,,,,,,,,, ТаблицаЗамен.Заменить, 2);  
       КонецЦикла;  
       
       ТекстовыйПроцессор.Visible = -1;    
       ТекстовыйПроцессор.Activate();
       
   КонецЕсли;
   

КонецПроцедуры
//*****************************************************************************
Процедура ПечатьИзШаблона(ТаблицаЗамен, ИмяФайлаШаблона) Экспорт
               
   // Проверим, есть ли нужный шаблон    
   Если ОбработкаФайлаШаблона(ИмяФайлаШаблона) = 0 Тогда
       Возврат;
   КонецЕсли;              
   
   ИмяФайла = КаталогВременныхФайлов() + "doc.tmp";    
   
   // Открываем в текстовом процессоре файл шаблона    
   ОткрытьТекстовыйПроцессор(ИмяФайла, ТаблицаЗамен);
   
КонецПроцедуры
8 Карась
 
06.08.12
13:49
(6), я сама стажер-программист, я на практике, так что звать кого-то -не вариант
9 ICWiner
 
06.08.12
13:50
Кури (7)
10 Карась
 
06.08.12
13:55
(9)буду пробовать, спасибо
11 ICWiner
 
06.08.12
13:59
Это для 7.7, так что код в восьмерке работать не будет. Но методы работы с опен офисом те же...
12 Карась
 
06.08.12
14:19
ааа спасибо, ну мне там по сути только три строки нужны все остальное у меня под 8-ку уже описано
13 Карась
 
06.08.12
14:32
Для x=1 По ТаблицаЗамен.КоличествоСтрок() Цикл
         
          Replace.SearchString  = ТаблицаЗамен.ПолучитьЗначение(x, 1);
          Replace.ReplaceString = ТаблицаЗамен.ПолучитьЗначение(x, 2);
          ТекстовыйПроцессор.ReplaceAll(Replace);
         
      КонецЦикла;
Вот этот кусочек, а где здесь указывается закладка куда это все передавать?
14 smaharbA
 
06.08.12
14:38
никуяпля, не надоело же инету бодягу разводить, мусоля залежный тавар
15 smaharbA
 
06.08.12
14:39
(13) не канает Вам все выше написанное
16 Карась
 
06.08.12
14:40
(13)чего?
17 Карась
 
06.08.12
14:41
(15)ну если знаете как то подскажите, я пока не понимаю как мне правильно заполнит метод insertbyindex
18 Карась
 
06.08.12
14:42
я знаю, что уже много тем избила на эти темы, но что мне делать, если у меня опыта мало, сложно приходится
19 smaharbA
 
06.08.12
14:43
(18) нужно для работы или для учебы ?
20 smaharbA
 
06.08.12
14:45
и еще - нужно на место закладки вогнать содержимое табличной части документа ?
21 Карась
 
06.08.12
14:45
(19)Опишу ситуацию полностью, я студент, пошла на практику, прошла курс 1с по программированию, пришла на практику, мне поставили задачу, чтобы учиться, но сдать надо сегодня, так как время истекает, а это единственный нюанс, который осталось решить.
22 Карась
 
06.08.12
14:45
(20)да
23 Карась
 
06.08.12
14:46
я сутра сижу, пытаюсь сделать
24 Карась
 
06.08.12
14:48
и честно, очень хочу сделать, но пока не знаю как
25 smaharbA
 
06.08.12
14:49
(21)(22) понял, помогу, но не торопите, а займитесь пока другим
там делов на 5 строк, но лениво (

суть
Вариант 1. Создаете таблицу с числом строк равным числу строк ТЧ и вставляете ее кнтекст в место закладки, заполняете получая номер строки и колонки по индексу.

Вариант 2. Создаете таблицу без ничего - в цикле по строкам ТЧ создаете строки таблицы, попутно создавая колонки и заполняя их
26 Карась
 
06.08.12
14:51
(25)хорошо, пока попытаюсь сама, торопить не буду,тогда пока больше не буду трогать эту тему
27 smaharbA
 
06.08.12
15:55
код 77 для примера

   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Товар");
   ТЗ.НоваяКолонка("Количество");
   ТЗ.НоваяКолонка("Цена");
   ТЗ.НоваяКолонка("Сумма");
   ТЗ.НоваяСтрока();
   ТЗ.Товар = "Носки";
   ТЗ.Количество = 1;
   ТЗ.Цена = 20;
   ТЗ.Сумма = ТЗ.Цена * ТЗ.Количество;
   ТЗ.НоваяСтрока();
   ТЗ.Товар = "Трусы";
   ТЗ.Количество = 1;
   ТЗ.Цена = 100;
   ТЗ.Сумма = ТЗ.Цена * ТЗ.Количество;
   ТЗ.НоваяСтрока();
   ТЗ.Товар = "Броник";
   ТЗ.Количество = 1;
   ТЗ.Цена = 200;
   ТЗ.Сумма = ТЗ.Цена * ТЗ.Количество;
   ТаблицаООО=Док.createInstance("com.sun.star.text.TextTable");
   ТаблицаООО.initialize(ТЗ.КоличествоСтрок()+1,ТЗ.КоличествоКолонок());
   //Текст.insertString(Курсор, "Тут была закладка """+ИмяЗакладки+"""", 0 );
   Текст.insertTextContent(Курсор,ТаблицаООО,0);
   Для Кол=1 По ТЗ.КоличествоКолонок() Цикл
       Ячейка=ТаблицаООО.getCellByPosition(Кол-1,0);
       Ячейка.getText().setString(""+ТЗ.ПолучитьПараметрыКолонки(Кол));
   КонецЦикла;
   Для Сч=1 По ТЗ.КоличествоСтрок() Цикл
       Для Кол=1 По ТЗ.КоличествоКолонок() Цикл
           Ячейка=ТаблицаООО.getCellByPosition(Кол-1,Сч);
           Ячейка.getText().setString(""+ТЗ.ПолучитьЗначение(Сч,Кол));
       КонецЦикла;
   КонецЦикла;
28 Карась
 
06.08.12
16:06
(27)в таблицуООО я кладу свою табличную часть?
29 Карась
 
06.08.12
16:08
И как вот эту процедуру описать?
ТЗ=СоздатьОбъект("ТаблицаЗначений");
30 Карась
 
06.08.12
16:14
Ааа с таблицейООО поняла
31 Карась
 
06.08.12
16:21
И нужен ли мне весь этот код? Мне нужно создать таблицу из трех колонок и заполнить их и табличной части и вставить все это в закладку
32 Карась
 
06.08.12
16:24
Я пока тут кое что придумала
вот
+Code
Строка=Элементы.Товары.ТекущийЭлемент;
  Строки=Объект.Товары;
Для Каждого Строка Из Строки  Цикл
   
   
   Закладки11=Строка.Количество;
   Закладки10=Строка.Продукт;
   Якорь10.SetString(""+Закладки10+"");
   Якорь11.SetString(""+Закладки11+"");
   Курсор10.gotoRange(Якорь10, 0);

КонецЦикла;

Но он у меня каждую новую запись поверх старой пишет, можно ли сделать перевод строки?
33 Карась
 
06.08.12
16:45
Я не могу пока адаптировать ваш код под свой
34 Карась
 
06.08.12
16:46
Я пока сделала так


ТЗ=Объект.Товары.Выгрузить();


//ТЗ.НоваяКолонка("Номер");
//    ТЗ.НоваяКолонка("Продукт");
//    ТЗ.НоваяКолонка("Количество");
//    ТЗ.Номер=Строки.НомерСтроки;
//    ТЗ.Продукт=Строки.Продукт;
//    ТЗ.Количество=Строки.Количество;
   
   
   
   
   ТаблицаООО=Document.createInstance("com.sun.star.text.TextTable");
   ТаблицаООО.initialize(ТЗ.КоличествоСтрок()+1,ТЗ.КоличествоКолонок());
   Текст.insertTextContent(Курсор10,ТаблицаООО,0);
   
   
   
   
   Для Кол=1 По ТЗ.КоличествоКолонок() Цикл
       Ячейка=ТаблицаООО.getCellByPosition(Кол-1,0);
       Ячейка.getText().setString(""+ТЗ.ПолучитьПараметрыКолонки(Кол));
   КонецЦикла;
   Для Сч=1 По ТЗ.КоличествоСтрок() Цикл
       Для Кол=1 По ТЗ.КоличествоКолонок() Цикл
           Ячейка=ТаблицаООО.getCellByPosition(Кол-1,Сч);
           Ячейка.getText().setString(""+ТЗ.ПолучитьЗначение(Сч,Кол));
       КонецЦикла;
   КонецЦикла;
35 Карась
 
06.08.12
16:47
но он не работает
36 Карась
 
06.08.12
16:55
Или же как к моему варианту просто сделать, чтобы он не добавлял вместо уже существующих, а просто прибавлял новые?
37 smaharbA
 
06.08.12
17:08
(32) смотрите внимательно (27)

в случае у Вас типо так (восьмерку не знаю)


ТЗ=Объект.Товары.Выгрузить();
ТаблицаООО=Док.createInstance("com.sun.star.text.TextTable");
ТаблицаООО.initialize(ТЗ.Количество(),ТЗ.Колонки.Количество());
Для Сч=1 По ТЗ.Количество() Цикл
   Колонки=ТЗ.Колонки;
   Для Кол=1 По Колонки.Количество() Цикл
       Ячейка=ТаблицаООО.getCellByPosition(Кол-1,Сч);
       Ячейка.getText().setString(""+ТЗ.Получить(Сч-1).Получить(Кол-1));
   КонецЦикла;
КонецЦикла;
38 Карась
 
06.08.12
17:12
ТаблицаООО.initialize(ТЗ.Количество(),ТЗ.Колонки.Количество());
вот это строка не работает(
39 Карась
 
06.08.12
17:14
Все ту сделала, а теперь вот эта не хочет


Ячейка=ТаблицаООО.getCellByPosition(Кол-1,Сч);
40 smaharbA
 
06.08.12
17:19
Сч-1
41 smaharbA
 
06.08.12
17:23
+ в (37) забыл

Текст.insertTextContent(Курсор,ТаблицаООО,0);
42 Карась
 
06.08.12
17:24
понятно, а он все равно жалуется
43 Бертыш
 
06.08.12
17:35
Дуа блин
44 Карась
 
06.08.12
17:36
(43)ну просвятите
45 Карась
 
06.08.12
17:40
ТаблицаООО=Document.createInstance("com.sun.star.text.TextTable");
ТаблицаООО.initialize(ТЗ.Количество(),ТЗ.Колонки.Количество());
Текст.insertTextContent(Курсор10,ТаблицаООО,0);


Для Сч=1 По ТЗ.Количество() Цикл
   Колонки=ТЗ.Колонки;
   Для Кол=1 По Колонки.Количество() Цикл
       Ячейка=ТаблицаООО.getCellByPosition((Кол-1),(Сч-1));
       Ячейка.getText().setString(""+ТЗ.Получить(Сч-1).Получить(Кол-1));
   КонецЦикла;
КонецЦикл


вот так заработало, осталось это все в нужную закладку передать в нужное место
46 Карась
 
06.08.12
17:41
(43)извините, что Вас эти разозлила
47 smaharbA
 
06.08.12
17:44
нисколько, "разозлило" это (7)
(весело когда постят перепись кода при живом)
48 Карась
 
06.08.12
17:46
(47)а как мне теперь передать это все в определенную закладку?
49 smaharbA
 
06.08.12
17:46
(45)
Перестраивайте под себя (тут много "лишнего", ибо некая совместимость с 77)


Функция СоздатьОбъект(Стр="")
   Возврат Новый COMОбъект(Стр);
КонецФункции

//*******************************************
Функция ПолучитьОбертку()
   ХТМЛ = СоздатьОбъект("htmlfile");
   ХТМЛ.Open("text/html");
   //<-- Подготовим нужные методы
   ХТМЛ.Write("<script type='text/javascript'>
   |var ХТМЛ;
   |ПолучитьЗначение=function(x,y){return x.constructor == Array ? x[y] : x};
   |УстановитьЗначение=function(x,y,z){x[y]=z};
   |РазмерМассива=function(x){return x.length};
   |УстановитьБулево=function(x){x.Value=Boolean(x.Value)};
   |Массив=function(){return new Array()};
   |</script>");
   Док=ХТМЛ.documentElement.document;
   // Внедрение объекта Скрипта в самого себя, для сохранности контекста
   Док.script.ХТМЛ=ХТМЛ;
   // Все подготовке -->
   Возврат Док.script;
КонецФункции    // ПолучитьОбертку(Это)

Функция ОпенОфис(Файл="")
   Перем Параметр;
   Это=ПолучитьОбертку();
   //УРЛ="file:///"+Это.encodeURI(СтрЗаменить(Файл,"\","/"));
   СервисМанагер=СоздатьОбъект("com.sun.star.ServiceManager");
   Обновлялка=СервисМанагер.createInstance("com.sun.star.reflection.CoreReflection");
   Проводник=СервисМанагер.createInstance("com.sun.star.ucb.FileContentProvider");
   УРЛ=Проводник.getFileURLFromSystemPath("",Файл);
   Сообщить(УРЛ);
   Массив=Это.Массив(0);
   Параметр=Это.Массив(0);
   Для Сч=0 По 1 Цикл
       Обновлялка.forName("com.sun.star.beans.PropertyValue").createObject(Параметр);
       Это.УстановитьЗначение(Массив,Сч,Это.ПолучитьЗначение(Параметр,0));
   КонецЦикла;
   
   Параметр=Это.ПолучитьЗначение(Массив,0);
   Параметр.Name="Hidden";
   Параметр.Value=0; //Если 0 или любое пустое значение то Ложь, иначе Истина
   Это.УстановитьБулево(Параметр);
   
   Параметр=Это.ПолучитьЗначение(Массив,1);
   Параметр.Name="Password";
   Параметр.Value="123";

   Для Сч=0 По Это.РазмерМассива(Массив)-1 Цикл
       Сообщить(Это.ПолучитьЗначение(Массив,Сч).Name);
       Сообщить(Это.ПолучитьЗначение(Массив,Сч).Value);
   КонецЦикла;
   
   Десктоп = СервисМанагер.createInstance("com.sun.star.frame.Desktop");
   //Док = Десктоп.LoadComponentFromURL("private:factory/scalc", "_blank", 0, Массив );
   Док = Десктоп.LoadComponentFromURL(УРЛ, "_blank", 0, Массив );
   ИмяЗакладки="Закладка1";
   Текст=Док.getText();
   Контроллер=Док.CurrentController;
   Курсор=Контроллер.getViewCursor();
   Закладки=Док.getBookmarks();
   Попытка
       Закладка=Закладки.getByName(ИмяЗакладки);
   Исключение
       Сообщить("Фигня какая то с закладкой """+ИмяЗакладки+"""!!!");
       Возврат(1);
   КонецПопытки;
   Якорь=Закладка.getAnchor();
   Курсор.gotoRange(Якорь, 0);
//    Текст.insertString(Курсор, "Тут была закладка """+ИмяЗакладки+"""", 0 );

   ДокВыборка=Документы.ПриемНаРаботуВОрганизацию.Выбрать();
   Пока ДокВыборка.Следующий() Цикл
       ТЗ=ДокВыборка.ПолучитьОбъект().РаботникиОрганизации.Выгрузить();
       ТаблицаООО=Док.createInstance("com.sun.star.text.TextTable");
       ТаблицаООО.initialize(ТЗ.Количество()+1,ТЗ.Колонки.Количество());
       Текст.insertTextContent(Курсор,ТаблицаООО,0);
         Колонки=ТЗ.Колонки;
       Для Кол=1 По Колонки.Количество() Цикл
           Ячейка=ТаблицаООО.getCellByPosition(Кол-1,0);
           Ячейка.getText().setString(""+Колонки.Получить(Кол-1).Имя);
       КонецЦикла;
       Для Сч=1 По ТЗ.Количество() Цикл
           Колонки=ТЗ.Колонки;
           Для Кол=1 По Колонки.Количество() Цикл
               Ячейка=ТаблицаООО.getCellByPosition(Кол-1,Сч);
               Ячейка.getText().setString(""+ТЗ.Получить(Сч-1).Получить(Кол-1));
           КонецЦикла;
       КонецЦикла;
       Прервать;
   КонецЦикла;
КонецФункции
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Перем Имя,Путь;
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = "Выберите файл";
   Диалог.ПолноеИмяФайла = "";
   Диалог.ПредварительныйПросмотр = Истина;
   Диалог.Фильтр = "Файлы офиса|*.odt;*.doc;*.rtf";
   Если Не Диалог.Выбрать() Тогда
       Возврат;
   КонецЕсли;
   ОпенОфис(Диалог.ПолноеИмяФайла);
   // Вставить содержимое обработчика.
КонецПроцедуры
50 smaharbA
 
06.08.12
17:47
+ в восьмерке абсолютный профан
51 Карась
 
06.08.12
17:57
Во так делает как надо, вставляет куда необходимо

Закладки10=ТЗ;

ТаблицаООО=Document.createInstance("com.sun.star.text.TextTable");
ТаблицаООО.initialize(ТЗ.Количество(),ТЗ.Колонки.Количество());
Курсор10.gotoRange(Якорь10, 0);
Текст.insertTextContent(Курсор10,ТаблицаООО,0);


Для Сч=1 По ТЗ.Количество() Цикл
   Колонки=ТЗ.Колонки;
   Для Кол=1 По Колонки.Количество() Цикл
       Ячейка=ТаблицаООО.getCellByPosition((Кол-1),(Сч-1));
       Ячейка.getText().setString(""+ТЗ.Получить(Сч-1).Получить(Кол-1));
   КонецЦикла;
КонецЦикла;
52 smaharbA
 
06.08.12
18:06
идеологически правильнее для восьмерки наверное делать Для Каждого Из...

(метаданные восьмерки абсолютно не знаю)
53 Vladal
 
06.08.12
18:09
(52) Я вот с ИТС взял конфигурацию демо ОпенОффис

   // Если у документ OpenOffice до сих пор не создан
   Если OOДокумент = Неопределено Тогда

       // Открыть OpenOffice
       ServiceManager = Новый COMОбъект("com.sun.star.ServiceManager");
       Reflection = ServiceManager.createInstance("com.sun.star.reflection.CoreReflection");
       Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
       Broadcaster = ServiceManager.createInstance("com.sun.star.frame.GlobalEventBroadcaster");

       // Удалить временный файл, если есть
       Если ВременныйФайл <> Неопределено Тогда
           УдалитьФайлы(ВременныйФайл);
       КонецЕсли;

       // Получить имя временного файла для хранения документа
       ИмяФайла = ПолучитьИмяВременногоФайла(".odt");

       // Получим данные файла
       ДанныеФайла = СправочникОбъект.Файл.Получить();
       Если ДанныеФайла = Неопределено Тогда
           // Создать новый документ, если не был создан до этого
           Args = Новый COMSafeArray("VT_DISPATCH", 1);
           OOДокумент = Desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Args);
           // И сохранить его во временный файл
           OOДокумент.storeAsURL(ПреобразоватьВURL(ИмяФайла), Args);
       Иначе
           // Записать данные во временный файл
           ДанныеФайла.Записать(ИмяФайла);

           // Открыть документ OpenOffice и добавить обработчик закрытия документа
           Args = Новый COMSafeArray("VT_DISPATCH", 1);
           OOДокумент = Desktop.loadComponentFromURL(ПреобразоватьВURL(ИмяФайла), "_blank", 0, Args);
       КонецЕсли;

       // Добавим обработчик события от документа OpenOffice
       OOОбработчик = Новый COMОбъект("OOEvents.EventHandler");
       ДобавитьОбработчик OOОбработчик.notifyEvent, ОбработкаСобытий;
       Broadcaster.AddEventListener(OOОбработчик);
   КонецЕсли;

   // Если документ открыт, активизировать его
   OOДокумент.getCurrentController().getFrame().getContainerWindow().setFocus();
54 smaharbA
 
06.08.12
18:25
(53) это хорошо когда есть сейфмассив, но не всегда это так
55 smaharbA
 
06.08.12
18:26
и когда ИТС есть, то же хорошо
56 Карась
 
06.08.12
20:49
Я с ИТС только начинаю дружить, но понимаю-вещь полезная!
57 smaharbA
 
06.08.12
20:51
в случае ООо вещь никчемная - это невозможно понять, в это надо просто верить.
58 smaharbA
 
06.08.12
20:52
кто не верит, возвращается, а не редко еще и учит тех кто устриц не то что бы кушал, а прямо Жрал.
59 Карась
 
06.08.12
21:18
(58)Ну мне очень повезло, что Вы оказались на этом форуме
60 smaharbA
 
06.08.12
21:21
мне льстит и важности добавляет
61 Карась
 
06.08.12
21:25
ну а что Вы хотите, чтобы я еще что-нибудь спросила, я могу, вопросов много))
62 smaharbA
 
06.08.12
21:28
нехочу, у меня такая же доча учится асуп

по существу веток - убей руководителя практики. Совет искренен, пусть купят нормальный софт и не умничают.
63 smaharbA
 
06.08.12
21:31
+ руководитель 27 - 28 летний пацан ?
64 Карась
 
06.08.12
21:32
Неа, ему 39
65 Карась
 
06.08.12
21:33
А с софтом я надеюсь в скором времени все решится, очень надеюсь)
66 smaharbA
 
06.08.12
21:33
конченый неадекват, не исправимо
67 Карась
 
06.08.12
21:35
Ну не знаю, я не берусь судить, маленькая еще
68 smaharbA
 
06.08.12
21:38
да ладно, эмоционален может где. Не нравятся "адепты" ооо кои в большинстве представления об оном не имеющие
а так - полезно и ооо позырить, начнете понимать что есть не есть.
69 smaharbA
 
06.08.12
21:39
успехов
70 Карась
 
06.08.12
21:39
Спасибо)
71 Oleg_Kag
 
07.08.12
07:55
Внесите в книгу знаний, т.к. с начала и до конца разобран пример работы с кальком
72 Карась
 
07.08.12
11:34
(71)это не Calc это writer
73 Карась
 
07.08.12
11:34
Я в нем работала, но в принципе суть метода та же
74 Карась
 
07.08.12
12:34
Маленький нюанс, если надо, чтобы выводились все колонки табличной части, то можно использовать этот код, он будет выводить и колонку со значениями ссылок.
Но если колонка со ссылками не нужна то в строке


ТаблицаООО.initialize(ТЗ.Количество(),ТЗ.Колонки.Количество()-1);
указываем Количество()-1 и в строке

Для Кол=1 По Колонки.Количество()-1 Цикл
так же ставим минус1, тогда последняя колонка со ссылками включаться не будет
75 Карась
 
07.08.12
12:35
возможно, совсем простые вещи объяснила, но для меня это оказалось важно
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший