Имя: Пароль:
1C
 
1С и Word
0 mzelensky
 
28.12.09
09:43
Доброго времени суток! Собственно задача следующая - встала необходимость перебрасывать сформированные отчеты (из табличного документа) в Word. Как перекидывать строки я нашел, но вот как быть, если мне нужно перенести в ворд табличку??? (т.е. полностью сформировать в ворде туже структуру, что и в табличном документе)???
1 RomaH
 
naïve
28.12.09
09:44
... создать или перенести?
2 mzelensky
 
28.12.09
09:46
Ну чтобы сперва отчет сформировался в 1с-ке, как табличный документ ,а потом по нажатию кнопки перенесся в ворд!
3 mzelensky
 
28.12.09
11:06
ап
4 FIXXXL
 
28.12.09
11:11
таблички в Ворде - зло, юзай Эксель
5 Масянька
 
28.12.09
11:12
(4) Да (+5)
Word - зачем?
6 Ъзнакъ
 
28.12.09
11:19
(0) Ну это, пишешь макрос, и конвертируеше его в 1с. В чем конкретно-то трабл? Не знаешь, сколько строк/столбцов в таблице?
ЗЫ: В ворде у табличек нет имен, только индексы.
7 Триша
 
28.12.09
11:25
Ну если обязательно в Word, то можно в Word'е создать готовый шаблон таблицы отчета, а потом из 1С открывать его и заполнять ячейки.
Что-то вроде:
Док = ПолучитьCOMОбъект("D:\Бланк отчета.docx");
...
Таб = Док.Tables(1);  ;
Таб.Cell(1, 2).Range.Text   = Значение1;
Таб.Cell(2, 1).Range.Text   = Значение2;
8 mzelensky
 
28.12.09
11:38
(7) а если колонки есть объединенные, то как они нумеруются?
9 mzelensky
 
28.12.09
11:42
(6) Макросами никогда не занимался....есть примерчик какой-нить?!
10 Ъзнакъ
 
28.12.09
11:44
(9) Пользуйся. Как-то наткнулся на этот пример на Мисте:

макрос экселя
Range("D11:F14").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection.Merge



конвертация в код 1С - вместе с обрамлением

Excel = СоздатьОбъект("Excel.Application");
Excel.Displayalerts = 0;//отключить встроенные предупреждения Excel
Excel.Workbooks.Add();//Создать новую книгу
Excel.Range("D11:F14").Select();//Выделить область
//замена оператора With
Selection = Excel.Selection;
Selection.HorizontalAlignment = -4108;//Горизонтальное выравнивание текста
Selection.VerticalAlignment = -4107;//Вертикальное выравнивание текста
Selection.WrapText = 0;//1 - переносить текст по словам, 0 - нет
Selection.Orientation = 0;//0 - текст горизонтально, 90 - сверху вниз, -90 - снизу вверх
Selection.AddIndent = 0;//Величина отступа (от края или середины )
Selection.IndentLevel = 0;
Selection.ShrinkToFit = 0;//1 - автоподбор ширины, 0 - нет
Selection.ReadingOrder = -5002;
Selection.MergeCells = 0;//1 - объединить выбранные ячейки, 0 - нет
//
Excel.Selection.Merge();

Excel.Visible = 1;//1 - открыть приложение
11 mzelensky
 
28.12.09
11:52
(10) Спасибо!

А еще такой вопрос. Я попробовал - обычным Ctrl+C/Ctrl+V табличный документ прекрасно переносится в ворд. Соответственно совместимость между ними нормальная! Так может можно как-то прям экспортировать данные, т.е. перетянуть весь табличный документ в ворд целиком? Или скажем тупо симулировать нажатие клавишь Ctrl+A Ctrl+C Ctrl+V ? На Делфяке даже есть функции по помещению данных в буфер обмена и изъятию их оттуда!
12 mzelensky
 
28.12.09
16:05
ап
13 dk
 
28.12.09
16:08
SendKey в помощь, но это так себе решение - ole надежнее и правильнее
14 Aprobator
 
28.12.09
17:09
(0) сохранить табличный документ в формате HTML и потом открыть вордом не прокатывает?
15 mzelensky
 
29.12.09
12:23
(14) Да не хотелось бы просто создавать промежуточных файлов. Т.е. мне бы лучше сразу в ворд, без каких либо сохранений!
16 anatoly
 
29.12.09
12:34
17 mzelensky
 
29.12.09
12:45
(16) спасибо!!! Интересные вещи!!!