Имя: Пароль:
1C
 
сохранение макета из 1с в ms word в альбомном формате
0 LivingStar
 
08.12.14
07:06
В 1с у документа есть красочная печатная форма, с таблицами, изображением и прочими данными. Нужно её сохранить в ms word в альбомном формате. Можно ли сохранить сразу весь этот макет предварительно программно сформировав его по документу?
1 LivingStar
 
08.12.14
07:20
никто не подскажет примером?
2 anaed
 
08.12.14
07:51
можно
табдок.записать(<имяфайла>,типфайлатабличногодокумента.DOCX);
3 LivingStar
 
08.12.14
08:07
(2) скачал пример, пробую делать через active document
то что вы говорите сильно просто думаете просто так сработает? Зачем тогда приведены эти сложные примеры?

Сейчас такое предктновение, создаю active document, загружаю туда документ .docx в альбомном формате, но он не создается (((( При нажатии на готово никакой реакции.
4 anaed
 
08.12.14
08:15
(3) почему бы сначала не попробовать простой способ?
5 LivingStar
 
08.12.14
08:20
(4) попробую
6 LivingStar
 
08.12.14
08:34
(4) слушай ниче так получилось одной строкой, только почему то приходится программу выбирать юля просмотра, по умолчанию без привязки лежит к ms word почему то(( ну и ещё мож какие преткновения этого метода потом выявятся!
7 LivingStar
 
08.12.14
08:42
(4) А как в этом случае задать альбомный формат? Не подскажете? Открывается в портретном...
8 LivingStar
 
08.12.14
08:43
мож так ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
9 LivingStar
 
08.12.14
08:46
такой ход не помог, предварительный просмотр все равно в портретной ориентации

    ТабДокумент.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт;
    ТабДокумент.Записать("Y:\Check_"+Прав(Номер,4)+".docs",типфайлатабличногодокумента.DOCX);
10 LivingStar
 
08.12.14
08:55
как подобраться к ms word задать ориентацию страницу ландшафт, почему не работает (9) ?
11 LivingStar
 
08.12.14
09:04
как то решал такой вопрос в эксель, подобное сюда прикручу

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    ИмяФайла        = ПутьКФайлу;
    //_Ориентация      = ОриентацияСтраницы.Ландшафт;
    ПолеСлева       = 0;
    ПолеСправа      = 0;
    ПолеСверху      = 0;
    ПолеСнизу       = 0;
    АвтоВысотаСтрок = Ложь;
    Попытка
        Excel                          = Новый COMОбъект("Excel.Application");
        Excel.Visible                  = False;
        Workbook                       = Excel.Workbooks.Open(ИмяФайла);
        Лист                           = Workbook.Sheets(1);
        Лист.PageSetUp.Zoom            = False;
        Лист.PageSetUp.FitToPagesWide  = 1; // По ширине листа
        Лист.PageSetUp.FitToPagesTall = False;
        //Если Ориентация = ОриентацияСтраницы.Ландшафт Тогда
            Лист.PageSetup.Orientation = 2; // xlLandscape
        //Иначе
        //   Лист.PageSetup.Orientation = 1; // xlPortrait
        //КонецЕсли;
        //Лист.PageSetup.LeftMargin   = Excel.Application.InchesToPoints(ПолеСлева  / 25.4); // Поле слева
        //Лист.PageSetup.RightMargin  = Excel.Application.InchesToPoints(ПолеСправа / 25.4); // Поле справа
        //Лист.PageSetup.TopMargin    = Excel.Application.InchesToPoints(ПолеСверху / 25.4); // Поле сверху
        //Лист.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу  / 25.4); // Поле снизу
        //
        Лист.PageSetup.LeftMargin   = Excel.Application.InchesToPoints(ПолеСлева);  // Поле слева
        Лист.PageSetup.RightMargin  = Excel.Application.InchesToPoints(ПолеСправа); // Поле справа
        Лист.PageSetup.TopMargin    = Excel.Application.InchesToPoints(ПолеСверху); // Поле сверху
        Лист.PageSetup.BottomMargin = Excel.Application.InchesToPoints(ПолеСнизу);  // Поле снизу
        //
        Если АвтоВысотаСтрок Тогда
            // Устанавливаем высоту строк
            НомерСтроки = 1;
            Пока НомерСтроки < 100000 Цикл
                Ячейка = Лист.Cells(НомерСтроки, 1);
                Строка = Ячейка.EntireRow();
                Строка.AutoFit();
                Если ПустаяСтрока(Ячейка.Value) Тогда
                    Прервать;
                КонецЕсли;
                НомерСтроки = НомерСтроки + 1;
            КонецЦикла;
        КонецЕсли;
        Excel.DisplayAlerts = False;
        Workbook.Save();
        Workbook.Close();
        Workbook = Неопределено;
        Excel.Quit();
        // 2014_09_19 LivingStar ->
        Excel.Visible         = True;
        Excel.DisplayAlerts = True;
        // <-
        Excel                 = Неопределено;
    Исключение
    КонецПопытки;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
12 LivingStar
 
08.12.14
09:39
как в ворде подобно (11) задать ораентацию страницы подскажет кто?
13 LivingStar
 
08.12.14
09:52
up!
14 vicof
 
08.12.14
09:53
(0) down!
15 LivingStar
 
08.12.14
10:04
подскажите не найду ни одного примера как изменить ориентацию страницы в форд
16 vicof
 
08.12.14
10:05
запиши макрос в "форде"
17 LivingStar
 
08.12.14
10:06
(16) да какой макрос! в Excel я делал как в (11) сохраняешь файл на диск а следом обрабатываешь его из 1с тем же макросом

для ворда реально не найду ни одно примера, там методы различные с (11)
18 vicof
 
08.12.14
10:10
(17) Ты не знаешь, что такое макрос в пакете мс офис - поищи в интернете.
19 LivingStar
 
08.12.14
10:23
(18) зачем мне макрос в ворде???? я его и делаю из 1с, не прикалывайся!!!!
20 vicof
 
08.12.14
10:26
21 Любопытная
 
08.12.14
10:28
Если в вашем приложении используется печать, чаще всего без использования этого объекта не обойтись. Он позволяет программным образом настроить то, что на графическом экране настраивается через меню Файл->Параметры страницы. Объект PageSetup является вложенным в объекты Document, Selection и Range, и обычно обращение к нему происходит через эти объекты. Например, чтобы при печати документа он был выведен в альбомной ориентации, можно воспользоваться командой

ThisDocument.PageSetup.Orientation = wdOrientLandscape

http://www.askit.ru/custom/vba_office/m10/10_06_07_word_pagesetup_object.htm
22 Любопытная
 
08.12.14
10:29
(20) Отличная картинка! :)
23 LivingStar
 
08.12.14
10:55
(21) я это видел спасибо, я не могу подобраться к ThisDocuments
24 vicof
 
08.12.14
10:56
25 LivingStar
 
08.12.14
11:04
(21)
как будет правильно?

        Word                          = Новый COMОбъект("Word.Application");
        Word.Visible                  = False;
        Word.Documents.Open(ИмяФайла);
        ThisDocument = Word.ActiveDocument();        
        ThisDocument.PageSetup.Orientation = Orientation.wdOrientLandscape;
26 Любопытная
 
08.12.14
11:06
(25) так не работает?
27 LivingStar
 
08.12.14
11:10
Word                          = Новый COMОбъект("Word.Application");
        Word.Visible                  = False;
        ThisDocument                  = Word.Documents.Open(ИмяФайла);
        ThisDocument.PageSetup.Orientation = Orientation.wdOrientLandscape;        

|

после вот этой строки слетает, как нужно?

        ThisDocument.PageSetup.Orientation = Orientation.wdOrientLandscape;
28 vicof
 
08.12.14
11:12
И откуда 1с должна знать про какую-то там Orientation?
29 LivingStar
 
08.12.14
11:24
Попытка
        Word                          = Новый COMОбъект("Word.Application");
        Word.Visible                  = False;
        ThisDocument                  = Word.Documents.Open(ИмяФайла);
        ThisDocument.PageSetup.Orientation = 1;        
        Word.DisplayAlerts = False;
        ThisDocument.Save();
        ThisDocument.Close();
        //Workbook.Save();
        //Workbook.Close();
        Workbook = Неопределено;
        Word.Quit();
        // 2014_09_19 LivingStar ->
        Word.Visible        = True;
        Word.DisplayAlerts = True;
        // <-
        Word                = Неопределено;
    Исключение
    КонецПопытки;
30 Любопытная
 
08.12.14
11:32
(29) Ну вроде ж везде в примерах без Orientation в правой части пишут.
31 LivingStar
 
08.12.14
11:33
(30) так вообще не будет работать, они где то выше определили её значит
32 vicof
 
08.12.14
11:47
(31) "они".
Инопланетяне?
33 Любопытная
 
08.12.14
11:51
(31) Класс WdOrientation, но что-то в com соединении оно не работает
34 LivingStar
 
08.12.14
11:59
ну вот так в кратце
|
    Попытка
        Word                                = Новый COMОбъект("Word.Application");
        Word.Visible                        = False;
        ThisDocument                        = Word.Documents.Open(ИмяФайла);
        ThisDocument.PageSetup.Orientation  = 1;        
        ThisDocument.PageSetup.BottomMargin = 10;
        ThisDocument.PageSetup.RightMargin  = 10;
        ThisDocument.PageSetup.LeftMargin   = 10;
        ThisDocument.PageSetup.TotMargin    = 10;
        Word.DisplayAlerts                     = False;
        ThisDocument.Save();
        ThisDocument.Close();
        Word.Visible        = True;
        Word.DisplayAlerts = True;        
        Word.Quit();
        Word                = Неопределено;
    Исключение
    КонецПопытки;
|

но вот заметил на производительности это не очень сказывается, подвисает при создании этого ворда

оптимизировать если это нужно делать через Active document макет, но я пробовал создать макет, выбирая нужный шаблон из ворд, так по готово никакой реакции, что туда нужно добавлять то? Из за чего может не принимать?
35 vicof
 
08.12.14
12:06
(34) Поток сознания
36 LivingStar
 
08.12.14
12:32
так что там нужно загружать в макет Active documents? .docx почему не идет? там изображение таблица разноцветная, текст...