Для 8.х заменить СоздатьОбъект( на Новый COMОбъект(
Код 1C v 7.x
ServiceManager = СоздатьОбъект( "com.sun.star.ServiceManager" ) ;
Desktop = ServiceManager. createInstance( "com.sun.star.frame.Desktop" ) ;
script = СоздатьОбъект( "ScriptControl" ) ;
script. Language = "vbs" ;
script. AddCode
(
"Dim Parameters()
|
|Sub InitParameters(Size)
|
| Erase Parameters
|
| If Size > 0 Then
| Redim Parameters(Size - 1)
| End If
|
|End Sub
|
|Sub SetParameter(ServiceManager, Name, Value, Index)
|
| Set PropertyValue = ServiceManager.Bridge_GetStruct("" com.sun.star.beans.PropertyValue"" )
| PropertyValue.Name = Name
| PropertyValue.Value = Value
|
| Set Parameters(Index) = PropertyValue
|
|End Sub
|
|Sub SetBooleanParameter(ServiceManager, Name, Value, Index)
|
| SetParameter ServiceManager, Name, Cbool(Value), Index
|
|End Sub
|
|Function LoadDocument(ComponentLoader, URL, TargetFrameName, SearchFlags)
|
| Set LoadDocument = ComponentLoader.loadComponentFromURL(URL, TargetFrameName, SearchFlags, Parameters)
|
|End Function
|
|Sub CloseDocument(Document)
|
| Document.Close True
|
|End Sub"
) ;
script. Run( "InitParameters" , 2 ) ;
script. Run( "SetBooleanParameter" , ServiceManager, "ReadOnly" , 1 , 0 ) ;
script. Run( "SetBooleanParameter" , ServiceManager, "Hidden" , 1 , 1 ) ;
URL = ПреобразоватьВURL( КаталогПриказов + НомерПриказа + ".rtf" ) ;
Документ = script. Run( "LoadDocument" , Desktop, URL, "_blank" , 0 ) ;
Таблица = Документ. TextTables. getByIndex( 0 ) ;
ВсегоСтрок = Таблица. getRows( ) . getCount( ) ;
ВсегоСтолбцов = Таблица. getColumns( ) . getCount( ) ;
Для ИндексСтроки = 1 По ( ВсегоСтрок - 1 ) Цикл
Для ИндексСтолбца = 0 По ( ВсегоСтолбцов - 1 ) Цикл
Ячейка = Таблица. getCellByPosition( ИндексСтолбца, ИндексСтроки) ;
ТекстЯчейки = Ячейка. getString( ) ;
КонецЦикла ;
КонецЦикла ;
script. Run( "CloseDocument" , Документ) ;
Процедура, которая "примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего:
Код 1C v 8.х Процедура РасчетШириныКолонок(ТабличныйДокумент)
Перем МаксимальноеКоличествоСтрок, МаксимальнаяШиринаКолонки;
Перем КонечнаяСтрока, НачальнаяСтрока, ТекущаяКолонка, ТекущаяСтрока, НачалоДанных;
Перем ОбластьШапки, ОбластьПодвала;
Перем ШиринаКолонки, ТекстЯчейки, НомерСтрокиТекста;
Перем КоличествоУровнейГруппировокСтрок, Отступ;
Перем ШириныКолонок;
МаксимальноеКоличествоСтрок = 50 ;
МаксимальнаяШиринаКолонки = 50 ;
ШириныКолонок = Новый Массив;
КоличествоУровнейГруппировокСтрок = ТабличныйДокумент. КоличествоУровнейГруппировокСтрок( ) ;
НачальнаяСтрока = 0 ;
НачалоДанных = 0 ;
ОбластьШапки = ТабличныйДокумент. Области. Найти( "ШапкаТаблицы" ) ;
Если ТипЗнч( ОбластьШапки) = Тип( "ОбластьЯчеекТабличногоДокумента" ) Тогда
НачальнаяСтрока = ОбластьШапки. Верх;
НачалоДанных = ОбластьШапки. Низ + 1 ;
Иначе
ОбластьШапки = ТабличныйДокумент. Области. Найти( "ШапкаСтрок" ) ;
Если ТипЗнч( ОбластьШапки) = Тип( "ОбластьЯчеекТабличногоДокумента" ) Тогда
НачальнаяСтрока = ОбластьШапки. Верх;
НачалоДанных = ОбластьШапки. Низ + 1 ;
КонецЕсли ;
КонецЕсли ;
ОбластьПодвала = ТабличныйДокумент. Области. Найти( "Подвал" ) ;
Если ТипЗнч( ОбластьПодвала) = Тип( "ОбластьЯчеекТабличногоДокумента" ) Тогда
КонечнаяСтрока = ОбластьПодвала. Верх - 1 ;
Если КонечнаяСтрока - НачальнаяСтрока > МаксимальноеКоличествоСтрок Тогда
КонечнаяСтрока = НачальнаяСтрока + МаксимальноеКоличествоСтрок;
КонецЕсли ;
Иначе
КонечнаяСтрока = НачальнаяСтрока + МаксимальноеКоличествоСтрок;
КонецЕсли ;
КонечнаяСтрока = Мин( КонечнаяСтрока, ТабличныйДокумент. ВысотаТаблицы) ;
Для ТекущаяКолонка = 1 По ТабличныйДокумент. ШиринаТаблицы Цикл
АвтоОтступ = 0 ;
Для ТекущаяСтрока = НачальнаяСтрока По КонечнаяСтрока Цикл
ШиринаКолонки = 0 ;
ОбластьЯчейки = ТабличныйДокумент. Область( ТекущаяСтрока, ТекущаяКолонка) ;
Если ОбластьЯчейки. Лево < > ТекущаяКолонка Или ОбластьЯчейки. Верх < > ТекущаяСтрока Тогда
Продолжить;
КонецЕсли ;
Если КоличествоУровнейГруппировокСтрок > 0 И ТекущаяСтрока = НачалоДанных Тогда
АвтоОтступ = ОбластьЯчейки. АвтоОтступ;
КонецЕсли ;
ТекстЯчейки = ОбластьЯчейки. Текст;
Для НомерСтрокиТекста = 1 По СтрЧислоСтрок( ТекстЯчейки) Цикл
ШиринаТекстаЯчейки = СтрДлина( СтрПолучитьСтроку( ТекстЯчейки, НомерСтрокиТекста) ) ;
Если АвтоОтступ < > Неопределено И АвтоОтступ > 0 Тогда
ШиринаТекстаЯчейки = ШиринаТекстаЯчейки + КоличествоУровнейГруппировокСтрок * АвтоОтступ;
КонецЕсли ;
ШиринаКолонки = Макс( ШиринаКолонки, ШиринаТекстаЯчейки) ;
КонецЦикла ;
Если ШиринаКолонки > МаксимальнаяШиринаКолонки Тогда
ШиринаКолонки = МаксимальнаяШиринаКолонки;
КонецЕсли ;
Если ШиринаКолонки < > 0 Тогда
КоличествоКолонок = ОбластьЯчейки. Право - ОбластьЯчейки. Лево;
Для НомерКолонки = 0 По КоличествоКолонок Цикл
Если ШириныКолонок. ВГраница( ) > ТекущаяКолонка - 1 + НомерКолонки Тогда
Если ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] = Неопределено Тогда
ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] = ШиринаКолонки / ( КоличествоКолонок + 1 ) ;
Иначе
ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки] =
Макс( ШириныКолонок[ТекущаяКолонка - 1 + НомерКолонки], ШиринаКолонки / ( КоличествоКолонок + 1 ) ) ;
КонецЕсли ;
Иначе
ШириныКолонок. Вставить( ТекущаяКолонка - 1 + НомерКолонки, ШиринаКолонки / ( КоличествоКолонок + 1 ) ) ;
КонецЕсли ;
КонецЦикла ;
КонецЕсли ;
КонецЦикла ;
КонецЦикла ;
Для ТекущаяКолонка = 0 По ШириныКолонок. ВГраница( ) Цикл
Если ШириныКолонок[ТекущаяКолонка] < > Неопределено Тогда
ТабличныйДокумент. Область( , ТекущаяКолонка + 1 , НачалоДанных, ТекущаяКолонка + 1 ) . ШиринаКолонки = ШириныКолонок[ТекущаяКолонка] + 1 ;
КонецЕсли ;
КонецЦикла ;
КонецПроцедуры
Очень полезная штука при условии, что у Вас заранее невозможно определить размер итоговых колонок в печатной форме. А так, надо просто "натравить" процедуру с соответствующими параметрами на нужные ячейки таблицы, и они сами "выровняются" и приобретут необходимый размер (ширину).
Код 1C v 7.x
Процедура глУстШиринуЯчейки(Таб, Строка1, Столбец1, Строка2, Столбец2, ДлТекста = 0) Экспорт
Если ДлТекста = 0 Тогда
врДлина = СтрДлина( СокрЛП( Таб. Область( Строка1 , Столбец1 , Строка2 , Столбец2 ) . Текст) ) ;
Иначе
врДлина = ДлТекста;
КонецЕсли ;
Таб. Область( Строка1 , Столбец1 , Строка2 , Столбец2 ) . ШиринаСтолбца( Макс( Таб. Область( Строка1 , Столбец1 , Строка2 , Столбец2 ) . ШиринаСтолбца( ) , врДлина) ) ;
КонецПроцедуры