Можно ли программно управлять масштабом таблицы (отчета)?
Вопрос собственно говоря в теме. Достают временами полуслепые тетки. А увеличить шрифт в меню "Сервис / Параметры / Интерфейс" не выход. Многие шрифты перестают влазить в ячейки, потому что фактический размер букв вырастает больше, чем 1С увеличивает ширину и высоту ячеек.
P.S. Хотелось бы решение без SendKeys, этот метод кажется несколько ненадежным.
P.S. Хотелось бы решение без SendKeys, этот метод кажется несколько ненадежным.
По теме из базы знаний
- История развития 1С:Торговли, что изменилось в архитектуре учета торговых и складских операций за 15 лет
- Лайфхаки 1С (часть 1). Настройки отчетов и печатных форм 1С
- Интеграционные возможности 1С:ТОИР 2 КОРП на примере реальных кейсов
- Признаки и причины неуспешных внедрений 1С: ERP
- Интеграция Честный Знак и 1C: обмен и синхронизация для УТ11, УНФ, КА2, ERP, Розница: Расширение для работы с СУЗ, ГИС МТ, ЦРПТ
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Потому что отчеты формируются не сразу, фокус ввода может быть на совсем другом приложении. А методы найти и переключиться на нужное окно не отличаются точностью. Искать по заголовку не получится, ни кто не гарантирует его уникальность. Определять PID процесса, искать окна связанные с ним? Ну... если может быть решение без этого, хотелось бы без этого.
Я опять упираюсь в проблему взаимосвязи размера шрифта и размера ячейки. Решать ее можно, но это готовить таблицы пересчета размеров для различных шрифтов, потом все масштабировать... Признаться кажется, что возни многовато, для мелкого желания сделать приятное теткам, с учетом распределенной базы куча разных терминал-серверов, есть и линукс.
Поэтому спасибо за предложенную идею, но пока ищется менее трудоемкое решение.
Почему не надежный ?
Потому что отчеты формируются не сразу, фокус ввода может быть на совсем другом приложении. А методы найти и переключиться на нужное окно не отличаются точностью. Искать по заголовку не получится, ни кто не гарантирует его уникальность. Определять PID процесса, искать окна связанные с ним? Ну... если может быть решение без этого, хотелось бы без этого.
Можешь вообще на форму кинуть настройку для шрифтов/размеров и в уже выведенной Таблице через область сменить шрифт и его размер...
Я опять упираюсь в проблему взаимосвязи размера шрифта и размера ячейки. Решать ее можно, но это готовить таблицы пересчета размеров для различных шрифтов, потом все масштабировать... Признаться кажется, что возни многовато, для мелкого желания сделать приятное теткам, с учетом распределенной базы куча разных терминал-серверов, есть и линукс.
Поэтому спасибо за предложенную идею, но пока ищется менее трудоемкое решение.
Таб.Показать("");
wshShell = createObject("WScript.Shell");
wshShell.sendKeys("%");
wshShell.sendKeys("{right 3}");
wshShell.sendKeys("~");
wshShell.sendKeys("{down 7}");
wshShell.sendKeys("~");
wshShell.sendKeys("{down 5}");
wshShell.sendKeys("~");
wshShell.sendKeys("%");
wshShell.sendKeys("{down 7}");
wshShell.sendKeys("~");
Показать
(7) Гм. Ну если ты утверждаешь, что оно работает, попробую. Хотя мои когда-то бывшие эксперименты с sendKeys уперлись в то, что нажатия посылались не в окно 1С, а в текущее открытое окно. Или вообще непонятно куда. Когда сделал в одной конфиге при начале работы открытие нужного журнала с разворотом на полный экран, работало ненадежно. Если открывать 1С и ждать когда откроется, все было нормально. Если запустить по F11 из конфигуратора и, пока она там грууууузится, медитировать над конфигуратором, никакого разворота на полный экран не происходило.
хм.. а положить на глобальную панель кнопку, при нажатии на которую запустится сторонний экзешник, который реализует ЭКРАННУЮ ЛУПУ - пусть тетки через нее смотрят.. прикольно! можно часть только увеличивать!!! нужную в данный момент для просмотра!!!
(10) Шикарный вариант. Можно еще и для безопасности: компьютер за бронированным стеклом, наблюдение за экраном через бинокль и записью изображения (фискальной), управление лазерной указкой.... :-)
(12) Спасибо, наводка хороша. Вот только почему-то не работает нифига. Даже пример из доки по FormEx:
Правда тут, возможно, Виста виновата, доберусь до сервера, проверю на 2003.
(13) Гм. Надо сильно обдумать. И понять, как бы его вставить так, что бы не сильно перепахивать все отчеты.
(12) Спасибо, наводка хороша. Вот только почему-то не работает нифига. Даже пример из доки по FormEx:
Сервис = СоздатьОбъект("Сервис");
Сервис.SendKeys("%");
Сервис.SendKeys("{LEFT}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}");
Правда тут, возможно, Виста виновата, доберусь до сервера, проверю на 2003.
(13) Гм. Надо сильно обдумать. И понять, как бы его вставить так, что бы не сильно перепахивать все отчеты.
1. Полуслепых теток надо гнать с работы, тем более, что время сейчас такое ;)
2. Гарантировать нажатие кнопок только в нужном нам окне можно через ВК
Пример кода из MiracleV8
procedure TMiracleClass.CloseMessWnd;
begin
// проверили, что на переднем плане именно наше окно
if GetForegroundWindow = h1C then begin
// нажали комбинацию для закрытия окна сообщений
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event($5A, 0, 0, 0);
keybd_event($5A, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
end;
end;
где в свою очередь хэндл рабочего в данный момент окна однозначно определяет родной 1С-кий интерфейс:
function TMiracleClass.h1C: Integer;
var wnd: hwnd;
begin
ExtWndsSupport._AddRef;
ExtWndsSupport.GetAppMainFrame(wnd);
RESULT := wnd;
end;
2. Гарантировать нажатие кнопок только в нужном нам окне можно через ВК
Пример кода из MiracleV8
procedure TMiracleClass.CloseMessWnd;
begin
// проверили, что на переднем плане именно наше окно
if GetForegroundWindow = h1C then begin
// нажали комбинацию для закрытия окна сообщений
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event($5A, 0, 0, 0);
keybd_event($5A, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
end;
end;
где в свою очередь хэндл рабочего в данный момент окна однозначно определяет родной 1С-кий интерфейс:
function TMiracleClass.h1C: Integer;
var wnd: hwnd;
begin
ExtWndsSupport._AddRef;
ExtWndsSupport.GetAppMainFrame(wnd);
RESULT := wnd;
end;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот