Имя: Пароль:
1C
1С v8
Создать таблицу в doc из 1с
,
0 ozon0
 
26.01.15
21:41
Создавать doc из 1с умею. Как вставить в нее таблицу, если количество строк меняется в зависимости от табличной части?
1 spectre1978
 
26.01.15
21:44
Сделайте запись макроса, вставьте таблицу с нужным количеством строк и столбцов, завершите запись макроса. Посмотрите получившийся код. Оформите соответствующий вызов OLE в 1С.
2 nordbox
 
26.01.15
21:44
ozon0, а по нормальному вопрос можно?
если нужна таблица так ее и используй только в екселе я так думаю.
а текстовый редактор для текста вообще то
3 spectre1978
 
26.01.15
21:47
(2) почему? Ворд позволяет работу с таблицами в теле документа, тут никаких противоречий особенных нет. Можно так, можно этак. Если документ преимущественно табличный, лучше эксель. Если преимущественно текстовый и табличка в теле текста, то лучше ворд.
4 nordbox
 
26.01.15
21:50
ну он же говорит что:
>>количество строк меняется в зависимости от табличной части
Возможно и колонки меняются
явно что табличные данные
5 spectre1978
 
26.01.15
22:25
(4) да, но он не говорит сколько текста. Возможно что его помимо таблицы много
6 ozon0
 
26.01.15
22:36
я имел в виду такую конструкцию
Таблица = ПолучитьМакет("Пример2");
    MsWord = Таблица.Получить();
    //макет является ActiveDocwment с загруженым в него Word-файлом
    Попытка
        
        MsWord.Application.Visible = 0;
        Word = MsWord.Application;
        Док=Word.Documents(1);
        Док.Activate();    
    
        
        Если Массив.Количество()>1 Тогда
            //Переместиться вниз на 10 строк от начала документа
            Word.Selection.MoveDown(,15); //10 строка - первая строка таблицы
            //назад на 1 символ (окончание строки таблицы)
            Док.Paragraphs.Add();
            Rng = Word.Selection.Range;
            Rng.InsertAfter("№ n/n*ФИО Сотрудника*Номер карты /счета*Сумма перечислений");
            Rng.InsertParagraphAfter();
            //Rng.InsertAfter("№ n/n*ФИО Сотрудника*Номер карты /счета*Сумма перечислений");
            //Rng.InsertParagraphAfter();

                    
            Для каждого Сотрудник Из СсылкаНаОбъект.Зарплата Цикл
               Rng.InsertAfter(Строка(Сотрудник.НомерСтроки)+"*"+Строка(Сотрудник.Физлицо.Наименование)+"*"+
                                   Строка(Сотрудник.Начислено));
               Rng.InsertParagraphAfter();
           КонецЦикла;
           Rng.ConvertToTable("*");
        КонецЕсли;
7 ozon0
 
26.01.15
22:49
Теперь вопрос 2: Таблица полученного doc без горизонтальных и вертикальных разделительных линий. В ворде пишу макрос - у созданной таблицы меняю стиль. Выходит строка:
word.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter;
word.Selection.ParagraphFormat.Alignment = rng.wdAlignParagraphCenter;
как теперь добавить в свою процедуру?
8 ozon0
 
26.01.15
22:50
* просто word.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter;
9 фобец
 
26.01.15
22:56
(8) так и пиши в своей процедуре. Осталось узнать значение константы wdAlign... Для этого правой кнопке на ней и quick info
10 ozon0
 
26.01.15
23:07
http://saveimg.ru/show-image.php?id=8e15dba9aeefe3dd414315db015ecc33
может Definition?
Const wdAlignParagraphCenter = 1
в 1с пишу word.Selection.ParagraphFormat.Alignment = 1 ноль движения
11 mdocs
 
26.01.15
23:42
Нафига эти пляски.
Рисуешь табличку в ворде ручками, добавляешь к ней нужное количество строк програмно.
12 Куро
 
26.01.15
23:47
если надо границы показать то 2 варианта есть
ActiveDocument.Tables (1) .Borders.Enable = TRUE
и так
Set myTable = ActiveDocument.Tables(1)
With myTable.Borders
.InsideLineStyle = wdLineStyleSingle
.OutsideLineStyle = wdLineStyleDouble
End With

а вообще все на MSDN есть...
13 Куро
 
26.01.15
23:48
да и Alignment тока ровняет по сторонам значение (лево, право, центр)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший