Имя: Пароль:
1C
1С v8
Выгрузка в файл excel с установленными параметрами печати
0 gaspik
 
15.11.16
08:56
Здравствуйте, коллеги.
Развейте мои сомнения. Конфигурация ЗУП 2.5, документ "Табель учёта рабочего времени". Из печатной формы этого документа есть возможность отправить табель по эл. почте, в том числе и в формате эксель. Когда пользователь получает по почте файл и печатает его, то по умолчанию печатается книжная страница и, соответственно, таблица не влезает. Приходится предварительно, перед печатью настраивать в экселе параметры печати, чтобы распечатать табель правильно.
Я там понимаю, что параметры печати это свойство приложения эксель, а не файла и нет возможности сформировать файл табеля таким образом, чтобы пользователю не приходилось делать настроек перед печатью. Это так?
Другими словами, можно ли выгрузить из 1С экселевский файл с настроенными параметрами печати (альбомная ориентация и по ширине страницы)?
1 gaspik
 
15.11.16
12:16
апну разок
2 aka AMIGO
 
15.11.16
12:40
Если файл Excel формируется целиком обработкой (не помню функцию в v8), то можно во-время подсунуть команду форматирования. Вид команды можно узнать, запустив макросы в Excel"е.
Если это готовый табличный 1с-овский документ, то макрос не подсунешь. 1с готовит as/is, т.е.плохо. И доступа к нему в процессе сохранения - нет, и не будет
И потому надо проинструктировать получателей, как получить приемлемую форму.
уж форматирование-то пользователи должны выполнять с закрытыми глазками.. В любимом всеми Excel"е

ЗЫ. всё - ИМХО..
3 aka AMIGO
 
15.11.16
12:57
В v7 еще более отвратительно. Файл в 2 странички, сохраненный в формате xls, открываю в LibreOffice, и при выводе на печать выходит 36 и более пустых страниц.
Написал инструкцию по созданию приличного документа нашей финансовой директорше, для отсылки по почте, ибо другого способа не предвидится.
4 Fish
 
15.11.16
12:57
(2) "Если это готовый табличный 1с-овский документ, то макрос не подсунешь. 1с готовит as/is, т.е.плохо. И доступа к нему в процессе сохранения - нет, и не будет " - Можно же подсунуть команду форматирования и после сохранения.
5 aka AMIGO
 
15.11.16
12:58
(4) Так рассказывай!! :)
6 torgm
 
15.11.16
12:59
(4) сохраняешь в эксель форму
открываешь из экселя
добиваешь файл танцем
сохраняешь
отправляешь
7 Базис
 
naïve
15.11.16
12:59
(3) Финдиру программа должна готовить нормальные формы, не издевайся над ключевым пользователем. Пустые строки/столбцы удалил? Область печати задал? Все .Опции() установил принудительно?
8 torgm
 
15.11.16
13:00
(4) запись макросов в экселе есть, так что все флаги в руки.
9 aka AMIGO
 
15.11.16
13:01
(7) Угу,всё это есть. И всё это - не работает :)
10 Fish
 
15.11.16
13:04
(5) Вот такой макрос получился:
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.7)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
End Sub


Ключевое тут, я так понимаю:
.Orientation = xlLandscape
11 azernot
 
15.11.16
13:04
(8) +1
12 aka AMIGO
 
15.11.16
13:05
(7) Щас попробую.. минутку..
13 gaspik
 
15.11.16
13:05
(8) т.е. я правильно понимаю, что можно в процессе формирования файла что то прописать внутри на VBA чтобы при выводе на печать печаталось как надо?
14 azernot
 
15.11.16
13:05
XlPageOrientation

xlLandscape    2
xlPortrait    1
15 Базис
 
naïve
15.11.16
13:08
РабочаяКнига.WorkSheets().Add();
        РабочаяКнига.Activate();
        ExcelApp.ActiveWindow.Zoom = 55; // Масштаб на экране
        РабочаяКнига.ActiveSheet.PageSetup.Zoom = 38; //33; // Масштаб при печати
        РабочаяКнига.ActiveSheet.PageSetup.Orientation = 2; // Landscape
        
        // Установим поля печати:
        РабочаяКнига.ActiveSheet.PageSetup.LeftMargin    = ExcelApp.CentimetersToPoints(1.7); //(0.7);
        РабочаяКнига.ActiveSheet.PageSetup.TopMargin     = ExcelApp.CentimetersToPoints(0.6); //(0.2);(1.2);
        РабочаяКнига.ActiveSheet.PageSetup.RightMargin    = ExcelApp.CentimetersToPoints(0.6); //(1);
        РабочаяКнига.ActiveSheet.PageSetup.BottomMargin    = ExcelApp.CentimetersToPoints(0.6); //(0.2);(0.7);            
        РабочаяКнига.ActiveSheet.PageSetup.HeaderMargin    = 0;
        РабочаяКнига.ActiveSheet.PageSetup.FooterMargin    = 0;
        
        // Задаём ширину колонок
        ExcelApp.Columns(1).ColumnWidth = 7;
        ExcelApp.Columns(2).ColumnWidth = 26;
ExcelApp.Columns(3).ColumnWidth = 15;
16 torgm
 
15.11.16
13:09
(15)  Ну вот, дал человеку рыбу.
17 Барматолог
 
15.11.16
13:10
(13) зачем VBA когда есть OLE
18 gaspik
 
15.11.16
13:15
(15) спасибо, стало что то понятно
19 aka AMIGO
 
15.11.16
13:17
Попробовал. Применил функцию 1с v7 - типа областьпечати().
Результат: не 36, а 82 пустых страницы.

(17) По оле, конечно, макрос можно подсунуть во-время. Но у ТС 1с-ный табличный документ сохраняется в формате эксцеля..
20 Fish
 
15.11.16
13:18
(19) "Но у ТС 1с-ный табличный документ сохраняется в формате эксцеля" - А кто мешает потом открыть сохранённый файл по ОЛЕ, подсунуть туда параметры и сохранить?
21 Масянька
 
15.11.16
13:18
(19) У меня в Йокселе так работает:
                ТабДокумент = СоздатьОбъект ("ТабличныйДокумент");
                ТабДокумент.ЗагрузитьИзТаблицы (АктивныйКонтекст);
                ТабДокумент.ПараметрыПечати.Ориентация = 1;
                ТабДокумент.Записать(СохранитьМакетВфайл, 1);
22 aka AMIGO
 
15.11.16
13:21
(20) Можно.. Если Excel установлен на компе.
(21)  Вот это - интересно.. Побежал в конфигуратор..
23 gaspik
 
15.11.16
13:23
(21) спасибо, попробую
24 Масянька
 
15.11.16
13:25
(22) (23) По Йокселю помощник: http://yoksel.net.ru/Ob%27ektyVstroennogoJazyka
25 aka AMIGO
 
15.11.16
13:44
(24) Попробовал.. У нас не приживется :(
Шеф категорически против всех ВК.
Причина мне неизвестна..
ЗЫ. у нас 5 филиалов в УРБД, боится угробить базу.
26 Масянька
 
15.11.16
13:46
(25) Ну, пусть шеф сам колбасит exl-файлы.
27 Масянька
 
15.11.16
13:50
(25) У меня шеф (сам бывший программист, причем, с большой буквы) тоже был против. Но после очередной задачи (причем, со с точки зрения программирования - примитив, раскраска журнала док-ов) и объяснения, что ВК бесплатны - согласился.
Раздолье :)
28 Tatitutu
 
15.11.16
14:08
Старо , как мир !

Как из 1С правильно УКАЗАТЬ MS EXCEL как нужно печатать документы !

http://catalog.mista.ru/public/62648/
29 aka AMIGO
 
15.11.16
15:00
(28) Перенаправляет в "Исключение"
30 darius357
 
15.11.16
16:10
ну как всегда побакланили, и нифига толку
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший