|
|
|
v8: Програмно установить параметры страницы. | ☑ | ||
|---|---|---|---|---|
|
0
vudo
21.10.09
✎
11:35
|
Как програмно установить параметры страницы при печати географической схемы, а именно печать "Заданной области"? Горю и горюю! Очень нужно!!!!!!!!!
|
|||
|
1
Aprobator
21.10.09
✎
11:43
|
Вроде никак. А зачем все это нужно?
|
|||
|
2
vudo
21.10.09
✎
11:50
|
Необходимо распечатать с карты города только один квартал.
На просмотр вывожу через ОграничивающийПрямоуголник и ПоддержкаМасштаба, теперь то что на экране надо распечатать?????!!!!! Как HEEEEELP!!!!!! |
|||
|
3
vudo
21.10.09
✎
11:58
|
Через Файл-Параметры страницы-Масштаб можно выбрать "Заданна область" и установить координаты Слева-Справа-Сверху-Снизу. Как сделать програмно????? Может недокументированные методы?.. Кто нибудь!!!!!!! Помогите!!!
|
|||
|
4
vudo
23.10.09
✎
20:53
|
К выше сказаному вот написал решение...
Есть конечно операции по поводу удаления апендикса через прямую кишку, то я добрался уже до самых гланд... Да-аааа.... Изврат... Излагаю.... Вот как можно распечатать ОтображаемуюОбласть ГеографическойСхемы (писалось для 8.2) в принципе можно и для 8.1 надо только переписать эмуляцию нажатия клавиш: Перем УстановилиСлева; Перем УстановилиСнизу; Перем УстановилиСправа; Перем УстановилиСверху; Процедура НастройкиПараметровСтраницы(Кнопка) //Добираемся через эмуляцию нажатий клавиш до "Параметры страницы" //- это АПЕНДИКС!!! WHSShell = Новый COMОбъект("WScript.Shell"); WHSShell.SendKeys("%"); WHSShell.SendKeys("~"); WHSShell.SendKeys("{DOWN 1}"); WHSShell.SendKeys("{RIGHT}"); WHSShell.SendKeys("{DOWN 8}"); WHSShell.SendKeys("~"); WHSShell.SendKeys("{TAB 8}"); УстановилиСлева = Ложь; УстановилиСнизу = Ложь; УстановилиСправа = Ложь; УстановилиСверху = Ложь; // Можно только через обработчик ожидания т.к. окно выбора //градусов,минут, и секунд открывается поверх модального окна //и вся эмулция нажатий идет в это окно // - пробовал в цикле 100 нажатий CTRL+ENER; // - задержку выполнение процедуры ч-з цикл; // - уже собирался писать скрипт для использования sleep() (видел пример на нашем форуме), но обошлось... // вот, как раз,- и ГЛАНДЫ!!!... ПодключитьОбработчикОжидания("Ожидание",1,Истина); КонецПроцедуры Процедура Ожидание() //Переходим между полями Слева-Снизу-Справа-Сверху WHSShell = Новый COMОбъект("WScript.Shell"); WHSShell.SendKeys("{TAB 1}"); ОтображаемаяОбласть = ЭлементыФормы.ОсновноеПолеГеографическойСхемы.ОтображаемаяОбласть; Градусов = "";Минут = "";Секунд = ""; Если не УстановилиСлева Тогда ОпределитьКоординатыВГрадусыМинуты(ОтображаемаяОбласть.ДолготаЗападнойГраницы,Градусов,Минут,Секунд); УстановилиСлева = Истина; ПодключитьОбработчикОжидания("Ожидание",1,Истина); ИначеЕсли не УстановилиСнизу Тогда ОпределитьКоординатыВГрадусыМинуты(ОтображаемаяОбласть.ШиротаЮжнойГраницы,Градусов,Минут,Секунд); УстановилиСнизу = Истина; ПодключитьОбработчикОжидания("Ожидание",1,Истина); ИначеЕсли не УстановилиСправа Тогда ОпределитьКоординатыВГрадусыМинуты(ОтображаемаяОбласть.ДолготаВосточнойГраницы,Градусов,Минут,Секунд); УстановилиСправа = Истина; ПодключитьОбработчикОжидания("Ожидание",1,Истина); ИначеЕсли не УстановилиСверху Тогда ОпределитьКоординатыВГрадусыМинуты(ОтображаемаяОбласть.ШиротаСевернойГраницы,Градусов,Минут,Секунд); УстановилиСверху = Истина; Иначе КонецЕсли; КонецПроцедуры Процедура ОпределитьКоординатыВГрадусыМинуты(Значение,Градусов,Минут,Секунд) //Переводим координаты из десятичного представления в минуты, секунды. СтроковоеПредставление = Формат(Значение,"ЧЦ=49; ЧДЦ=12; ЧС=0; ЧРД=.; ЧГ=0"); Градусов = Сред(СтроковоеПредставление,1,Найти(СтроковоеПредставление,".")-1); Минут = Число("0." + Сред(СтроковоеПредставление,Найти(СтроковоеПредставление,".")+1,СтрДлина(СтроковоеПредставление))) * 60; СтроковоеПредставление = Формат(Минут,"ЧЦ=49; ЧДЦ=12; ЧС=0; ЧРД=.; ЧГ=0"); Минут = Сред(СтроковоеПредставление,1,Найти(СтроковоеПредставление,".")-1); СекундПолное = Окр(Число("0." + Сред(СтроковоеПредставление,Найти(СтроковоеПредставление,".")+1,СтрДлина(СтроковоеПредставление)))* 60,3); СтроковоеПредставление = Формат(СекундПолное,"ЧЦ=49; ЧДЦ=12; ЧС=0; ЧРД=.; ЧГ=0"); Секунд = Сред(СтроковоеПредставление,1,Найти(СтроковоеПредставление,".")-1); СекундПолное = Сред(СтроковоеПредставление,Найти(СтроковоеПредставление,".")+1,СтрДлина(СтроковоеПредставление)); Секунд = Секунд + "," + Лев(СекундПолное,3); WHSShell = Новый COMОбъект("WScript.Shell"); //Открываем окно настройки координаты WHSShell.SendKeys("{F4}"); WHSShell.SendKeys(Градусов); WHSShell.SendKeys("{TAB 7}"); WHSShell.SendKeys(Минут); WHSShell.SendKeys("{TAB 7}"); WHSShell.SendKeys(Секунд); //Закрываем и сохраняем WHSShell.SendKeys("^~"); КонецПроцедуры Если кто-то из компании 1С читает эти строки, то дяденьки или тетеньки, внимательно прочитайте выше изложенный код и ответьте на вопрос: "Сколько можно доводить программистов до подобных извращений!". А надо было всего-то прописать свойства ГеографическойСхемы для вывода на печать, сам-то вывод на печать уже реализован... Ждем 30.11.2009г.(официальный выход исправленной версии 8.2). Я тихо рыдаю...... |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |