Имя: Пароль:
1C
 
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).

Я тихо рыдаю......
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.