(0 ) Denisovich , ниже пример(взят от сюда
):
В файле шаблона должны быть заменяемые элементы типа [НомерДок] и в коде ниже ты заменяешь такие элементы на нужные тебе
Код 1C v 8.х
Попытка
ServiceManager = Новый COMОбъект( "com.sun.star.ServiceManager" ) ;
Reflection = ServiceManager. createInstance( "com.sun.star.reflection.CoreReflection" ) ;
Desktop = ServiceManager. createInstance( "com.sun.star.frame.Desktop" ) ;
Args = Новый COMSafeArray( "VT_DISPATCH" , 1 ) ;
OOДокумент = Desktop. loadComponentFromURL( ПреобразоватьВURL( ИмяФайла) , "_blank" , 0 , Args) ;
Для ТекущаяТаблица = 0 ПО OOДокумент. getTextTables( ) . Count- 1 Цикл
мТабличнаяЧасть = Неопределено ;
Для ТекущаяСтрока = 0 ПО OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . Rows. Count- 1 Цикл
Для ТекущаяКолонка = 0 ПО OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . Columns. Count- 1 Цикл
мТабличнаяЧасть = ИмяТабличнойЧастиВСтроке(
ПолучитьСтартПеременной( OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . getCellByPosition( ТекущаяКолонка, ТекущаяСтрока) . string )
, ДокументСсылка) ;
Если мТабличнаяЧасть < > Неопределено Тогда
Прервать ; ;
КонецЕсли ;
КонецЦикла ;
Если мТабличнаяЧасть < > Неопределено Тогда
Прервать ; ;
КонецЕсли ;
КонецЦикла ;
Если мТабличнаяЧасть < > Неопределено Тогда
ВсегоСтрокТЧ = 0 ;
Для Каждого строкаТЧ Из ДокументСсылка[мТабличнаяЧасть. Имя] Цикл
ВсегоСтрокТЧ = ВсегоСтрокТЧ+ 1 ;
КонецЦикла ;
Для ТекущаяСтрокаТЧ = 1 По ВсегоСтрокТЧ Цикл
Если ТекущаяСтрокаТЧ < > ВсегоСтрокТЧ Тогда
OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . Rows. I_nsertByIndex( ТекущаяСтрока+ ТекущаяСтрокаТЧ- 1 , 1 ) ;
КонецЕсли ;
Для ТекКол = 0 ПО OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . Columns. Count- 1 Цикл
Если ТекущаяСтрокаТЧ < > ВсегоСтрокТЧ Тогда
ТекстПеременной = ПолучитьПеременнуюИзСтроки( СокрЛП( OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . getCellByPosition( ТекКол, ТекущаяСтрока+ ТекущаяСтрокаТЧ) . string) ) ;
ТекстПеременной = ? ( ПустаяСтрока( ТекстПеременной) , "" , "[" + "_" + Строка( ТекущаяСтрокаТЧ) + "_" + ТекстПеременной+ "]" ) ;
OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . getCellByPosition( ТекКол, ТекущаяСтрока+ ТекущаяСтрокаТЧ- 1 ) . string = ТекстПеременной;
Иначе
ТекстПеременной = ПолучитьПеременнуюИзСтроки( СокрЛП( OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . getCellByPosition( ТекКол, ТекущаяСтрока+ ТекущаяСтрокаТЧ- 1 ) . string) ) ;
ТекстПеременной = ? ( ПустаяСтрока( ТекстПеременной) , "" , "[" + "_" + Строка( ТекущаяСтрокаТЧ) + "_" + ТекстПеременной+ "]" ) ;
OOДокумент. getTextTables( ) . getByIndex( ТекущаяТаблица) . getCellByPosition( ТекКол, ТекущаяСтрока+ ТекущаяСтрокаТЧ- 1 ) . string = ТекстПеременной;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
ТекстДокумента = ООПолучитьТекст( OOДокумент) ;
Список = ПолучитьСписокПеременных( ТекстДокумента) ;
СтруктураРеквизитов= СтруктураРеквизитовДокумента( ДокументСсылка) ;
ЗначениеРеквизита= "" ;
OOЗамена = OOДокумент. CreateReplaceDescriptor( ) ;
Для Каждого ЭлементСписка Из Список Цикл
Если СтруктураРеквизитов. Свойство( ЭлементСписка. Значение, ЗначениеРеквизита ) Тогда
OOЗамена. SearchString = "[" + ЭлементСписка. Значение+ "]" ;
OOЗамена. ReplaceString = Строка( ЗначениеРеквизита) ;
OOДокумент. ReplaceAll( OOЗамена) ;
Иначе
Сообщить( "-> " + ЭлементСписка. Значение+ " - Не найден в структуре документа" ) ;
OOЗамена. SearchString = "[" + ЭлементСписка. Значение+ "]" ;
OOЗамена. ReplaceString = " " ;
OOДокумент. ReplaceAll( OOЗамена) ;
КонецЕсли ;
КонецЦикла ;
OOДокумент. getCurrentController( ) . getFrame( ) . getContainerWindow( ) . setFocus( ) ;
Исключение
Предупреждение( ОписаниеОшибки( ) ) ;
КонецПопытки ;