1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

1С+word

Тема в разделе "Базы данных и администрирование", создана пользователем SeverBap, 24 окт 2008.

  1. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    :) ли создовать документ в фомате word из 1С??? и обратно импортировать в 1С 7.7 (если конечно документ соответсвует шаблону)????
    Где можно достать информацию с примерами по использованию worda????

    Много как всегда хочу!!! Но что поделать!!!

    Задумка простая, прикольно но у меня wordа как такового не установлено (у меня опен офисссссссссссссс - блин) вот так я работаю!!!!
     
  2. kaa

    kaa Гость

    Репутация:
    0
    [codebox]Если СокрЛП(ПутьКПечФорме)<>"" Тогда
    Если Найти(ПутьКПечФорме,".odt")>0 Тогда //OpenOffice
    Состояние("Создаем документ OO Writer...");

    scr=СоздатьОбъект("MSScriptControl.ScriptControl");
    scr.language="javascript";
    scr.eval("Massiv=new Array()");
    Massiv=scr.eval("Massiv"); //создали массив на ява
    ServiceManager=СоздатьОбъект("com.sun.star.ServiceManager");
    Scr.AddObject("ServiceManager",ServiceManager);
    Desktop=ServiceManager.createInstance("com.sun.star.frame.Desktop"); //сом объект

    FileNameSh = СокрЛП(ПутьКПечФорме);
    URL = СтрЗаменить(FileNameSh," ","%20");
    URL = СтрЗаменить(URL,"\","/");
    URL ="file://localhost/" + URL;

    Попытка
    DocumentSh=Desktop.LoadComponentFromURL(URL,"_blank",0, Massiv ); //шаблон текста
    Document=Desktop.LoadComponentFromURL("private:factory/swriter","_blank",0, Massiv ); //новый документ
    Исключение
    КонецПопытки;

    dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper"); //компанента для копирования

    dispatcher.executeDispatch(DocumentSh.CurrentController.Frame, ".uno:SelectAll", "", 0, Massiv);//выделить все
    dispatcher.executeDispatch(DocumentSh.CurrentController.Frame, ".uno:Copy", "", 0, Massiv);//копировать
    dispatcher.executeDispatch(Document.CurrentController.Frame, ".uno:Paste", "", 0, Massiv);//вставить в новый документ

    DocumentSh.Close(0); //закрываем шаблон

    Для Инд=1 По Закладки.РазмерСписка() Цикл
    Закладка = СокрЛП(Закладки.ПолучитьЗначение(Инд));
    ЗакладкаЦ = Закладка;
    Текст = Подстановка(Закладка);
    // ишем и заменяем
    SearchDesc=Document.createReplaceDescriptor();//компанента для поиска
    SearchDesc.SearchString = Закладка;//искомый текст
    SearchDesc.ReplaceString = Текст;//замена
    Document.replaceAll(SearchDesc);// заменяем все по шаблону
    КонецЦикла;

    //Сетка
    TextTables = Document.getTextTables();//список таблиц документа
    Table = TextTables.getByIndex(12);//получаем нужную таблицу
    Rows = Table.getRows();//список строк таблицы

    ТТрафика = СоздатьОбъект("Справочник.ТипыТрафика");
    ТСетка = СоздатьОбъект("Справочник.СеткаТарифов");

    ТТрафика.ИспользоватьВладельца(Тариф);
    Валюта = Подстановка("ТарифВалюта");
    ПервыйПроход=0;
    Н=3;
    ТТрафика.ВыбратьЭлементы();
    Пока ТТрафика.ПолучитьЭлемент()=1 Цикл

    Если ТТрафика.ЯвляетсяТарифицируемым = 0 Тогда
    Продолжить;
    КонецЕсли;
    //шапка

    Если ПервыйПроход=0 Тогда
    Table.getCellByPosition(0,Н).setString(ТТрафика.Наименование);
    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 0;//0 по левому краю
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку
    Table.getCellByPosition(0,Н).setString("Объем трафика");

    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 1;//1 по правому краю

    Table.getCellByPosition(2,Н).setString("Стоимость");
    ПервыйПроход=1;
    Иначе
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку
    Table.getCellByPosition(0,Н).setString(ТТрафика.Наименование);

    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 0;//0 по левому краю
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку
    Table.getCellByPosition(0,Н).setString("Объем трафика");

    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 1;//1 по правому краю

    Table.getCellByPosition(2,Н).setString("Стоимость");
    КонецЕсли;
    //сетка
    ЗнакОбъема = ?(Тариф.ТарифМегабайт=1," Mб."," Гб.");
    SearchDesc.SearchString = "ЗнакОбъема";//искомый текст
    SearchDesc.ReplaceString = ЗнакОбъема;//замена
    Document.replaceAll(SearchDesc);


    ТСетка.ИспользоватьВладельца(ТТрафика.ТекущийЭлемент());
    ТСетка.ПорядокРеквизита("Интервал");
    ТСетка.ВыбратьЭлементы();
    ПерваяСтрочкаСетки=0;
    Пока ТСетка.ПолучитьЭлемент() = 1 Цикл
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку

    Если ПерваяСтрочкаСетки=0 Тогда
    Table.getCellByPosition(0,Н).setString("1 Мб.");
    Table.getCellByPosition(1,Н).setString(?(ТСетка.Интервал>=9999999.000,"и более",Строка(ТСетка.Интервал)+ЗнакОбъема));
    Table.getCellByPosition(2,Н).setString(СокрЛП(Строка(Формат(ТСетка.Стоимость,"Ч15.2. "))));
    Table.getCellByPosition(3,Н).setString(Строка(Валюта + ". за 1 "+ЗнакОбъема));
    ИнтервалОт=Строка(ТСетка.Интервал);
    ПерваяСтрочкаСетки=1;
    Иначе
    Table.getCellByPosition(0,Н).setString(ИнтервалОт+ЗнакОбъема);
    Table.getCellByPosition(1,Н).setString(?(ТСетка.Интервал>=9999999.000,"и более",Строка(ТСетка.Интервал)+ЗнакОбъема));
    Table.getCellByPosition(2,Н).setString(СокрЛП(Строка(Формат(ТСетка.Стоимость,"Ч15.2. "))));
    Table.getCellByPosition(3,Н).setString(Строка(Валюта + ". за 1 "+ЗнакОбъема));
    ИнтервалОт=Строка(ТСетка.Интервал);
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    dispatcher.executeDispatch(Document.CurrentController.Frame, ".uno:GoToStartOfDoc", "", 0,Massiv);//в начало документа
    Иначе//MS Word
    Состояние("Создаем документ MS Word...");
    Если ФС.СуществуетФайл(ПутьКПечФорме) = 0 Тогда
    Предупреждение("Файл шаблона не найден");
    Возврат;
    КонецЕсли;
    Word=СоздатьОбъект("Word.Application");
    Word.Options.CheckSpellingAsYouType = 0;
    Word.Options.CheckGrammarAsYouType = 0;
    Word.Options.CheckGrammarWithSpelling = 0;

    Word.Documents.Add(ПутьКПечФорме);
    Document=Word.ActiveDocument;

    //
    ЗнакОбъема = ?(Тариф.ТарифМегабайт=1," Mб."," Гб.");
    //
    к = Закладки.РазмерСписка();
    Для н = 1 по к Цикл
    Закладка = СокрЛП(Закладки.ПолучитьЗначение(н));
    ЗакладкаЦ = Закладка;
    Текст = Подстановка(Закладка);
    // Заменяем пока закладки не кончатся
    ц = 0;
    Пока ц < 10 Цикл
    Метка2Текст(ЗакладкаЦ, Текст);
    ц = ц + 1;
    ЗакладкаЦ = Закладка + СокрЛП(ц);
    КонецЦикла;
    КонецЦикла;

    // Сетка
    BookMark = Document.Bookmarks("НачалоСетки");
    BookMark.Select();

    ТТрафика = СоздатьОбъект("Справочник.ТипыТрафика");
    ТСетка = СоздатьОбъект("Справочник.СеткаТарифов");

    ТТрафика.ИспользоватьВладельца(Тариф);
    ТТрафика.ВыбратьЭлементы();
    Валюта = Подстановка("ТарифВалюта");
    первый = 1;
    Пока ТТрафика.ПолучитьЭлемент() = 1 Цикл
    Если ТТрафика.ЯвляетсяТарифицируемым = 0 Тогда
    Продолжить;
    КонецЕсли;
    ВидТрафика = ТТрафика.ТекущийЭлемент();
    Для н = 1 по к Цикл
    Закладка = СокрЛП(Закладки.ПолучитьЗначение(н));
    ЗакладкаЦ = Закладка;
    Текст = Подстановка(Закладка);
    // Заменяем пока закладки не кончатся
    ц = 0;
    Пока ц < 10 Цикл
    Метка2Текст(ЗакладкаЦ, Текст);
    ц = ц + 1;
    ЗакладкаЦ = Закладка + СокрЛП(ц);
    КонецЦикла;
    КонецЦикла;
    Если первый = 0 Тогда
    Word.Selection.InsertRowsBelow(1);
    КонецЕсли;
    первый = 0;
    Word.Selection.TypeText(СокрЛП(ТТрафика));
    Word.Selection.ParagraphFormat.Alignment = 0;
    Word.Selection.Borders(-4).LineStyle = 0;
    Word.Selection.MoveRight(1);
    Word.Selection.Borders(-4).LineStyle = 0;
    Word.Selection.MoveRight(1);
    Word.Selection.Borders(-4).LineStyle = 0;
    Word.Selection.MoveRight(1);
    Word.Selection.InsertRowsBelow(1);
    Word.Selection.TypeText("Объем трафика");
    Word.Selection.ParagraphFormat.Alignment = 2;
    Word.Selection.Borders(-4).LineStyle = 0;
    Word.Selection.MoveRight(1);
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.MoveRight(1);
    Word.Selection.TypeText("Стоимость");
    Word.Selection.Borders(-4).LineStyle = 0;
    Word.Selection.MoveRight(1);
    Word.Selection.MoveRight(1);
    Word.Selection.InsertRowsBelow(1);
    ТСетка.ИспользоватьВладельца(ТТрафика.ТекущийЭлемент());
    ТСетка.ПорядокРеквизита("Интервал");

    ТСетка.ВыбратьЭлементы();
    Если ТСетка.ПолучитьЭлемент() = 1 Тогда
    Интервал = ТСетка.Интервал;
    Стоимость = ТСетка.Стоимость;
    Word.Selection.TypeText("1 Мб");
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.MoveRight(1);
    Если ТСетка.ПолучитьЭлемент() = 0 Тогда
    Word.Selection.TypeText("и более");
    Последний = 1;
    Иначе
    Word.Selection.TypeText(СокрЛП(Интервал)+ЗнакОбъема);
    Последний = 0;
    КонецЕсли;
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.MoveRight(1);
    Word.Selection.TypeText(Формат(СокрЛП(Стоимость),"Ч15.2. "));
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.MoveRight(1);
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.TypeText(Валюта + ". за 1 "+ЗнакОбъема);
    Word.Selection.Borders(-4).LineStyle = 1;
    КонецЕсли;
    Пока Последний = 0 Цикл
    Стоимость = ТСетка.Стоимость;
    Word.Selection.InsertRowsBelow(1);
    Word.Selection.TypeText(СокрЛП(Интервал)+ЗнакОбъема);
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.MoveRight(1);
    Интервал = ТСетка.Интервал;
    Если ТСетка.ПолучитьЭлемент() = 0 Тогда
    Word.Selection.TypeText("и более");
    Последний = 1;
    Иначе
    Word.Selection.TypeText(СокрЛП(Интервал)+ЗнакОбъема);
    КонецЕсли;
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.MoveRight(1);
    Word.Selection.TypeText(Формат(СокрЛП(Стоимость),"Ч15.2. "));
    Word.Selection.Borders(-4).LineStyle = 1;
    Word.Selection.MoveRight(1);
    Word.Selection.TypeText(Валюта + ". за 1 "+ЗнакОбъема);
    Word.Selection.Borders(-4).LineStyle = 1;
    КонецЦикла;
    КонецЦикла;

    Word.Visible=1;
    КонецЕсли;[/codebox]
    Есть еще по мелочам :)
     
  3. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    Ты просто крут!!!!!! Спасибо!!!
    Что у тебя есть по мелочам??? :blink: :)
     
  4. kaa

    kaa Гость

    Репутация:
    0
    Долго живу много работаю :)
     
  5. sergeyji

    sergeyji Гость

    Репутация:
    0
    Книга Андрея Михайлова 1С предприятие системное прграммирование
     
  6. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    sergeyji
    да есть оно уже у меня вот читал!!!
     
  7. sergeyji

    sergeyji Гость

    Репутация:
    0
    так а что конкретно надо
     
  8. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    Как альтернатива опен офиса???

    Ведь не у всех установлен офис, но и опен!!!!
    у кого есть пример с работой?
     
  9. sergeyji

    sergeyji Гость

    Репутация:
    0
    А что такое open?
     
  10. SeverBap

    SeverBap Well-Known Member

    Репутация:
    0
    Регистрация:
    18 сен 2007
    Сообщения:
    451
    Симпатии:
    0
    Опен офис - альтернатива майкрософта!!!
     
  11. kaa

    kaa Гость

    Репутация:
    0
    Код:
    Состояние("Создаем документ OO Writer...");
    
    scr=СоздатьОбъект("MSScriptControl.ScriptControl");
    scr.language="javascript";
    scr.eval("Massiv=new Array()");
    Massiv=scr.eval("Massiv"); //создали массив на ява
    ServiceManager=СоздатьОбъект("com.sun.star.ServiceManager");
    Scr.AddObject("ServiceManager",ServiceManager);
    Desktop=ServiceManager.createInstance("com.sun.star.frame.Desktop"); //сом объект
    
    FileNameSh = СокрЛП(ПутьКПечФорме);
    URL = СтрЗаменить(FileNameSh," ","%20");
    URL = СтрЗаменить(URL,"\","/"); 
    URL ="file://localhost/" + URL;
    
    Попытка
    DocumentSh=Desktop.LoadComponentFromURL(URL,"_blank",0, Massiv ); //шаблон текста
    Document=Desktop.LoadComponentFromURL("private:factory/swriter","_blank",0, Massiv ); //новый документ
    Исключение  	
    КонецПопытки;
    
    dispatcher = ServiceManager.createInstance("com.sun.star.frame.DispatchHelper"); //компанента для копирования
    
    dispatcher.executeDispatch(DocumentSh.CurrentController.Frame, ".uno:SelectAll", "", 0, Massiv);//выделить все
    dispatcher.executeDispatch(DocumentSh.CurrentController.Frame, ".uno:Copy", "", 0, Massiv);//копировать
    dispatcher.executeDispatch(Document.CurrentController.Frame, ".uno:Paste", "", 0, Massiv);//вставить в новый документ
    
    DocumentSh.Close(0); //закрываем шаблон
    
    Для Инд=1 По Закладки.РазмерСписка() Цикл
    Закладка = СокрЛП(Закладки.ПолучитьЗначение(Инд));
    ЗакладкаЦ = Закладка;
    Текст = Подстановка(Закладка); 
    // ишем и заменяем
    SearchDesc=Document.createReplaceDescriptor();//компанента для поиска
    SearchDesc.SearchString = Закладка;//искомый текст
    SearchDesc.ReplaceString = Текст;//замена
    Document.replaceAll(SearchDesc);// заменяем все по шаблону
    КонецЦикла;
    
    //Сетка
    TextTables = Document.getTextTables();//список таблиц документа
    Table = TextTables.getByIndex(12);//получаем нужную таблицу
    Rows = Table.getRows();//список строк таблицы
    
    ТТрафика = СоздатьОбъект("Справочник.ТипыТрафика");
    ТСетка = СоздатьОбъект("Справочник.СеткаТарифов");
    
    ТТрафика.ИспользоватьВладельца(Тариф);
    Валюта = Подстановка("ТарифВалюта");
    ПервыйПроход=0; 
    Н=3;
    ТТрафика.ВыбратьЭлементы();
    Пока ТТрафика.ПолучитьЭлемент()=1 Цикл 
    
    Если ТТрафика.ЯвляетсяТарифицируемым = 0 Тогда
    Продолжить;
    КонецЕсли;
    //шапка
    
    Если ПервыйПроход=0 Тогда
    Table.getCellByPosition(0,Н).setString(ТТрафика.Наименование); 
    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 0;//0 по левому краю
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку
    Table.getCellByPosition(0,Н).setString("Объем трафика");
    
    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 1;//1 по правому краю
    
    Table.getCellByPosition(2,Н).setString("Стоимость");
    ПервыйПроход=1;
    Иначе
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку 																			
    Table.getCellByPosition(0,Н).setString(ТТрафика.Наименование);
    
    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 0;//0 по левому краю
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку
    Table.getCellByPosition(0,Н).setString("Объем трафика"); 
    
    Cell=Table.getCellByPosition(0,Н); //Ячейка таблицы
    CellCursor = Cell.createTextCursor();//выделяем текст
    CellCursor.paraAdjust = 1;//1 по правому краю
    
    Table.getCellByPosition(2,Н).setString("Стоимость");					
    КонецЕсли;
    //сетка
    ЗнакОбъема = ?(Тариф.ТарифМегабайт=1," Mб."," Гб.");
    SearchDesc.SearchString = "ЗнакОбъема";//искомый текст
    SearchDesc.ReplaceString = ЗнакОбъема;//замена
    Document.replaceAll(SearchDesc);
    
    
    ТСетка.ИспользоватьВладельца(ТТрафика.ТекущийЭлемент());
    ТСетка.ПорядокРеквизита("Интервал");
    ТСетка.ВыбратьЭлементы();
    ПерваяСтрочкаСетки=0;
    Пока ТСетка.ПолучитьЭлемент() = 1 Цикл
    Н=Н+1;
    Rows.insertByIndex(Н,1);//добавляем строку 
    
    Если ПерваяСтрочкаСетки=0 Тогда
    Table.getCellByPosition(0,Н).setString("1 Мб.");		 		
    Table.getCellByPosition(1,Н).setString(?(ТСетка.Интервал>=9999999.000,"и более",Строка(ТСетка.Интервал)+ЗнакОбъема));
    Table.getCellByPosition(2,Н).setString(СокрЛП(Строка(Формат(ТСетка.Стоимость,"Ч15.2. ")))); 
    Table.getCellByPosition(3,Н).setString(Строка(Валюта + ". за 1 "+ЗнакОбъема));
    ИнтервалОт=Строка(ТСетка.Интервал);
    ПерваяСтрочкаСетки=1;
    Иначе
    Table.getCellByPosition(0,Н).setString(ИнтервалОт+ЗнакОбъема); 
    Table.getCellByPosition(1,Н).setString(?(ТСетка.Интервал>=9999999.000,"и более",Строка(ТСетка.Интервал)+ЗнакОбъема));
    Table.getCellByPosition(2,Н).setString(СокрЛП(Строка(Формат(ТСетка.Стоимость,"Ч15.2. ")))); 
    Table.getCellByPosition(3,Н).setString(Строка(Валюта + ". за 1 "+ЗнакОбъема));
    ИнтервалОт=Строка(ТСетка.Интервал);
    КонецЕсли;
    КонецЦикла;					
    КонецЦикла;
    dispatcher.executeDispatch(Document.CurrentController.Frame, ".uno:GoToStartOfDoc", "", 0,Massiv);//в начало документа
    OpenOffice.org.BASIC Guide найди мне в свое время очень помогло
     

Поделиться этой страницей