7.7 zoom-ZOOM. Зумируем формы в 1С

16.11.09

Разработка - Инструментарий разработчика

Легко и непринужденно делаем кнопки на весь экран... Зачем? Попробую объяснить!

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Демонстрационная база
.zip 980,74Kb
198
198 Скачать (1 SM) Купить за 1 850 руб.

Помню свой (не совсем свой) первый плоский монитор, который был куплен нашему генеральному директору (ясен пень - кому же еще). После первого знакомства с этим девайсом я был немного в шоке - в любом разрешении, отличном от рекомендуемого (в том частном случае 1024х768) картинка размытая до рези в глазах - работать практически невозможно. Конечно, мои авторитетные заявления боссу, что "чем меньше шрифт - тем больше видно информации" возымели определенный эффект, но мой энтузиазм по поводу закупки новейших мониторов быстро сник - я представил себе определенную часть наших пользователей (которые и в разрешении 800х600 посдлеповато щурятся в монитор) истошно вопящую "верни все взад". Тогда я не знал как решить эту проблему, а опыт и знания, к сожалению, приходят только со временем.

И вот буквально на днях пришлось столкнуться с похожей проблемой: готовлю к открытию небольшой склад-магазин с тремя кассами. В качестве POS-терминалов стандартные компы, но два из них с 15" ЭЛТ мониторами (типа для оптового отдела - никто их не увидит) и один "парадный" - современный 19" монитор, нормально показывающий только в HD-Ready (1376x768 или около того). Понятно что работают все в одной базе, а разбег между разрешениями велик - вот и пришлось что-то универсальное "мутить".

Это было небольшое отступление, а теперь более конкретно:

Представляю класс 1С++ (рабочее название Общие.Форма.Зум), позволяющий изменять размеры и шрифты элементов формы. Класс предназначен не только для решения проблем, описанных выше - это был всего лишь пример.

Методы класса:

  • Подключить(Контекст); подключает класс
  • Отключить(Контекст); отключает класс (вызов необязателен)
  • УстановитьШрифтАтрибута(Атрибут="Форма",Имя="MS Sans Serif",Размер=8,Жирный=0,Курсив=0,Подчеркивание=0,Зачеркивание=0)

Устанавливает шрифт для атрибута формы. Для указания шрифта самой формы в параметре Атрибут необходиму указать строку "Форма". Для указания шрифта многострочной части в параметре Атрибут необходиму указать строку "МногострочнаяЧасть".
Значение по умочанию:шрифт "MS Sans Serif", размер 8 пунктов.
Для элементов, не определенных данным методом применяется шрифт, установленный для формы.
Все параметры необязательны. Вызов метода не обязателен.

Параметры класса:
РежимЗумирования          строка - возможные значения: "Авто", "Вручную"

При значении "Авто" - размеры элементов автоматически зумируются соотвественно изменению размеров самой формы относительно размеров, заданных в конфигураторе. При значении "Вручную" - элементы формы зумируются с помощью комбинации: зажатая кнопка Ctrl и скрол колесом мыши.
Значение по умолчанию "Авто".


СохранятьПропорции         Число - Флаг сохранения пропорций элементов (0,1). По умолчанию-0.

Теперь немного подробнее про УстановитьШрифтАтрибута(): Этот метод используется для задания начального значения шрифта. Тоесть если вся форма имеет размер шрифта 8 (по умолчанию в формах 1С 7.7), а для Многострочной части отдельно задать размер шрифта 10, то при увеличении размеров формы в два раза - все элементы будут прозумированы до размера шрифта 16, а многострочная часть - до размера в 20 пунктов.

Использовать класс в своей форме элементарно просто:

Процедура ПриОткрытии()
    Зум=СоздатьОбъект("Общие.Форма.Зум");
    Зум.Подключить(Контекст);
    Зум.УстановитьШрифтАтрибута("МногострочнаяЧасть","Times New Roman",10); //так мы описываем элементы, отличные по оформлению от формы
КонецПроцедуры

Для внедрения в свою конфигурацию скопируйте Процедуру ПриНачалеРаботыСистемы и две обработки из текущей конфы. И не забудьте положить в каталог базы файлы 1cpp.dll и Formex.dll (мой респект разработчикам!)

Во вложении демонстрационная база вместе с ВК 1С++ и Formex

На всякий случай: я знаю про возможность менять шрифт форм в 1С:Предприятие (Сервис-Параметры) и про класс "Общие.Форма.Привязка" тоже в курсе, но эти методы не полностью решали мои задачи. И вообще - это мой первый класс 1С++ ;)

Обновил:

Добавился метод ЗумироватьЭлементы(ПроцентЗумированияГ=100,ПроцентЗумированияВ=100) для программного зумирования элементов (как по горизонтали, так и по вертикали)

Добавился параметр Центрировать (флаг - 1 или 0) - отвечает за центрирование элементов на форме.

Изменено интерактивное изменение зума: зажатая кнопка Ctrl и колесо мыши для пропорционального зумирования, Ctrl+Alt+колесо мыши - для зумирования только по горизонтали, Ctrl+Shift+колесо мыши - только по вертикали.

11.11.09 Добавлен самый народный метод:

УстановитьОтносительныйРазмерФормы(ШиринаВПроцентах,ВысотаВПроцентах)

позволяет установить размер формы в процентах от главного окна - ваши формы при любом разрешении экрана всегда будут одинакового размера!

Метод доступен только после физического открытия формы (процедура ПослеОткрытия и позже).

См. также

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    22407    57    Gvozdod    8    

16

Инструментарий разработчика Системный администратор Программист Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    168838    1888    Alexoniq    1600    

499

Инструментарий разработчика Программист Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    33488    61    O-Planet    78    

49

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21929    Reptile    5    

35

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Встала недавно задача для одной организации, которая все еще на 1С 7.7 немного автоматизировать работу отдела продаж. А именно уйти от ручного заполнения договоров, сделанных юристами в MS Word. Договора от разных фирм и разного назначения отличались. Переводить их в таблицы 1С очень не хотелось и нашел способ прямо в файлах Word сделать небольшие дополнения, чтобы можно было печатать, используя именно эти заготовки юристов.

1 стартмани

14.07.2013    27747    56    adamx    11    

14

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18401    36    MarSeN    14    

17

Инструментарий разработчика Программист Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36419    51    venger    7    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. CheBurator 2688 10.11.09 01:46 Сейчас в теме
Хорошо!
но:
1. какую обкатку прошел класс? тестировался? как долго был в пробно/боевой эксплуатации??
2. как долго будет автором поддерживаться и сопровождаться класс? как оперативно будут устраняться найденные ошибки?
..
а то ятут РедакторТЗ заюзал - ну так автор - в отрубе, ошибки самому приходилось править по мелочи, непродуманный функционал - спасибо ЕПРСТУ! - докручивать... - смысл в том, что разбираться в программах/классах - это хорошо, но хочется, чтобы это не отнимало кучу времени...
5. vip 10.11.09 04:02 Сейчас в теме
(1) Про РедакторТЗ ты уже много раз отметился на всех форумах.
Уже напоминаешь известный персонаж с клювом.
Ты абсолютно не хочешь понимать разницы между пользовательскими и внутренними классами.
20. CheBurator 2688 10.11.09 15:19 Сейчас в теме
(5)
Ты абсолютно не хочешь понимать разницы между пользовательскими и внутренними классами.

- а ты объясни. РедакторТЗ - это пользовательский класс - т.е. который я могу при необходимости поправить/изменить или написать новый.
.
а то я что я дятел -так это - ничего страшного. если выкладывается одним умным дятлом недодолбленный продукт - то другим дятлам (не таким умным) приходится его долбить самим, долго и упорно. а то пчто при этом - стук по всему лесу - не вижу ничего зазорного сообщать что умный дятел выложил недопиленный продукт.
.. вот так вот ;-) долблю в меру своих сил... ибо, как показывает опыт - проблемы других решаются не сильно охотно/быстро...
9. Noy 1079 10.11.09 09:10 Сейчас в теме
(1) Прям крик души...
Che, ты возьми класс на вооружение, и мы его быстро допилим
(4) Да, меня тоже несколько беспокоит вопрос с GDI (хотя я не настолько разбираюсь в архитектуре ОС). Попробую сегодня переписать - что бы не деражть в памяти лишних шрифтов. Спасибо за подсказки (про "Multycolumn" вообще не знал :o ).
12. vip 10.11.09 10:04 Сейчас в теме
(9) Про GDI поверь на слово.
Проблема действительно очень серьезная. Сталкивался сам.
Проявится или падением 1С с ошибкой в bkend.dll или полным ступором Windows с пропаданием иконок на кнопках и т.п.
13. Noy 1079 10.11.09 10:51 Сейчас в теме
(12) Диспетчера задач (taskman) достаточно для отслеживания GDI, или надо применять спецсофт для отладки подобной бяки?
15. vip 10.11.09 11:30 Сейчас в теме
(13) Достаточно.
(14) К сожалению проверить не могу, по доступу к скачиванию приравнен к лишенцам.
16. пользователь 10.11.09 11:36
Сообщение было скрыто модератором.
...
17. vip 10.11.09 11:47 Сейчас в теме
(16) Сенькс.
(0) Вот теперь грамотно.
18. Noy 1079 10.11.09 12:08 Сейчас в теме
(17) сенькс.

всем:
Планирую добавить в параметр РежимЗумирования значение "Программно" и метод УстановитьРазмерФормы(ВПроцентахОтОригинальногоРазмера). Как думаете - полезный метод?
19. vip 10.11.09 12:12 Сейчас в теме
21. CheBurator 2688 10.11.09 15:27 Сейчас в теме
(18)
Планирую добавить в параметр РежимЗумирования значение "Программно" и метод УстановитьРазмерФормы(ВПроцентахОтОригинальногоРазмера). Как думаете - полезный метод?

- думаю да. Также думаю, что было бы очень полезно типа Зум.ЗазумироватьДоРазмеровРодительскогоОкнаИотцентрировать() - т.е. форма масштабируется так, чтобы максимально возможно вписаться в размер родительского окна и при этом центрируется. - получим аналог "разворота на весь экран" - но аналог намного более полезный!!!! - автоматом решится проблема дизайна форм под разные разрешения...!!!
(правда при этом на больших экранах некоторые формы получатся НУ ОЧЕНЬ КРУПНЫМИ! но это - не беда!!!)
.
- даешь поголовное зумирование!!!!
22. Noy 1079 10.11.09 15:29 Сейчас в теме
(21)
т.е. форма масштабируется так, чтобы максимально возможно вписаться в размер родительского окна и при этом центрируется

я так понимаю имелось ввиду:
т.е. елементы формы масштабируются так, чтобы максимально возможно вписаться в размер родительского окна и при этом центрируются.

Если так - то как раз такая же мысль посетила ;)
сделаю!
23. CheBurator 2688 10.11.09 15:50 Сейчас в теме
(22) эээ немножко не так... (???)
сначала - увеличивается форма-подложка
потом на форме - масштабируются элементы формы...
потом форма - центируется - получаем окно на "весь экран" но оно при этом не максимизировано!
.
а то что ты пишешь можно интепрретировать так - что в родительском окне я увижу ТЗ или кнопку (один или нескольок элементов фомы - но не все!) - которые увеличиены "до максимума".
.
т.е. например я сдизайнерил формочку для 800*600, запускаю ее на 1024-768 - жмиак кнопку! она у меня пропорционально увеличилась до полного вписывания в родительское окно!
(ну и наоборот) - если форма вдруг здизайнерена для 1024-768, я жмакая - получаю пропорциаонально смасштабированную до 800*600 (правла при этом все может получиться мелко-мелко - но это уже другой вопрос - я же тогда могу зазумировать! ту часть которая мне нужна!!!)
.
а то сидел у клиента - наваял форму ему для удобства под большой экран, домой принес - а у меня разрешение-то поменьше... не влазит.. пришлось передизайнерять...

- что реально имеется в виду?
26. vip 10.11.09 18:17 Сейчас в теме
(23) > - что реально имеется в виду?

Реально имеется в виду то, что я давно себе сделал - форма подстраивается под разрешение юзерского монитора.

И ты бы давно такое сделал, если бы не гремел во все панфары на всех форумах про глючность каких-то там пользовательских классов (которые никто тебя не заставляет использовать).
Я, кстати, ни один пользовательский класс не использовал и не буду. Гораздо проще написать свое, чем разгребать чужое.
29. CheBurator 2688 10.11.09 18:28 Сейчас в теме
(26) угу.. не заставляет использовать.. угу .. согласен... однако же - я же не просто ору все плохо - в редакторе классов - я привел целый сонм глюков и недоделок... автор - молчит...
отсюда пролонгируя - нафига тогда вообще 1С++ - будет глюк всплыт - к кому стучаться, когда исправят? или все как обычно - никто ничего ни за что не отвечает...??? - меня вот это больше всего напрягает... что используя доработки платформы - надо кучу костыликов вокруг понаставлять...
.
а что делать? будем плакать и жрать кактус.. ;-)
.
кстати, сейчас оцениваю время как переломное в плане 7 в 8 - народ потихоньку мигрирует на 8-ку... и тех, кто будет дорабатывать и развивать и своевременно СМОЖЕТ оказать помощь по 7.7 с "докурутками" в плане 1С++ и других полезных вещей - будет все меньше и меньше.. это и сейчас уже чувствуется...
31. vip 10.11.09 18:49 Сейчас в теме
(29) 1. Опять путаешь возможности 1С++ и возможности узкого прикладного авторского решения.
2. Про 8. Вот уж от тебя не ожидал.
Хоть убей, не замечаю тенденции. За исключением ларечников и суперпродвинутых.
Не хочу разводить холивар. С задачами моих рабочих, весьма крупных проектов (никакого отношения не имеющих к классической торговле, например) прекрасно справляется семерка.
32. CheBurator 2688 10.11.09 18:56 Сейчас в теме
(31) по (29) покажи мне возможности 1С++ отдельно от прикладного решения. Да, что-то наверное есть, что дает сам факт подключения внешней компоненты (типа турбобл), но все остальное - оно живет отдельно от прикладных решений?

2. да и для моих решений 7.7 - вполне хватает. +напрягает то, что прикладного чего-то нового на 8-ке - НУ ОЧЕНЬ МАЛО.
33. vip 10.11.09 19:40 Сейчас в теме
(32) Полностью откажись от чужого прикладного решения. И я с удовольствием помогу.
2. Судя по всему, долгожданный прорыв только в 8.2. Предыдущие версии восьмерки от лукавого. Только надо учитывать, что типовое решение от 1С это идеал. Потенциал 8.х очень велик.
34. CheBurator 2688 10.11.09 21:05 Сейчас в теме
(33) по (32) хитрый какой ;-)
готов отказаться от редактораТЗ при предоставлении сопоставимого функционала. - это значит, что подключение и использование данного сопоставимого функционала по количеству строк д.б. не более 10-15 строк кода. - класс редакторТЗ вот этим мне и понравился (пару строк на подключение - дальше сам все делает...)... - что предложите взамен??? (ТП и ТЗ в качестве поставщика данных?)
37. Abadonna 3969 13.11.09 12:12 Сейчас в теме
(21)>- даешь поголовное зумирование!!!!
Слепошарых надо с работы гнать, а не зуммировать :D
40. nicxxx 255 03.11.10 10:21 Сейчас в теме
(37) я конечно некропостер....но за такие слова не грех в голову с ноги зарядить
2. CheBurator 2688 10.11.09 02:20 Сейчас в теме
надо попробовать.. потому как аналогичная задача и у меня...
3. CheBurator 2688 10.11.09 02:22 Сейчас в теме
также было бы хорошо зумировать не только скролом мыши, нои комбинацией клаиш типа контрол+шифт+ПлюсНумпад и МинусНумпад
- комбинация клавиш - по умолчанию, если не передана классу из программы...
4. vip 10.11.09 03:58 Сейчас в теме
(0) Все это хорошо, но...
Работать со шрифтами нужно крайне аккуратно.
Похвальна попытка удаления шрифтов в деструкторе, но при работе с формой вогнать систему в ступор можно очень легко.
Просто посмотри, с какой скоростью у тебя увеличивается число объектов GDI (очень наглядно, например, при зуммировании мышью).
Лимит числа объектов GDI исчерпается очень быстро.
У 1С вообще проблемы с освождением объектов GDI, а тут прямое издевательство над системой.

Кстати, название "МногострочнаяЧасть" прокатывает не на всех операционных системах.
На английской W2K3 нужно использовать "Multycolumn".

ЗЫ. Не нужно вкладывать ВК в демо, лучше дать прямые ссылки (тем более во вложении не последние версии).
JohnyDeath; Арчибальд; +2 Ответить
6. Арчибальд 2709 10.11.09 07:46 Сейчас в теме
7. vip 10.11.09 08:15 Сейчас в теме
(6) Это я-то ворчлив?
Я чего-то не то сказал?
8. Арчибальд 2709 10.11.09 08:46 Сейчас в теме
(7) Пардон, 1-4 читать как 1-3. А с твоими словами я согласился.
10. Noy 1079 10.11.09 09:29 Сейчас в теме
странно что Ёпрст поставил плюс без замечаний...
11. Ёпрст 1065 10.11.09 09:30 Сейчас в теме
(10) я пока обдумываю полезность..
:)
14. Noy 1079 10.11.09 11:01 Сейчас в теме
Поправил и перезалил файл - теперь (судя по taskman) GDI в порядке!
24. Noy 1079 10.11.09 15:57 Сейчас в теме
т.е. например я сдизайнерил формочку для 800*600, запускаю ее на 1024-768 - жмиак кнопку! она у меня пропорционально увеличилась до полного вписывания в родительское окно!


ну это вроде как и реализовано...


я же тогда могу зазумировать! ту часть которая мне нужна!!!)

А вот это сложнее - мой класс зумирует все элементы формы


давай я обновлю класс (думаю через минут 30 будет готово) - тогда скачаешь и обсудим
25. Noy 1079 10.11.09 18:11 Сейчас в теме
Обновил:

Добавился метод ЗумироватьЭлементы(ПроцентЗумированияГ=100,ПроцентЗумированияВ=100) для программного зумирования элементов (как по горизонтали, так и по вертикали)

Добавился параметр Центрировать (флаг - 1 или 0) - отвечает за центрирование элементов на форме.

Изменено интерактивное изменение зума: зажатая кнопка Ctrl и колесо мыши для пропорционального зумирования, Ctrl+Alt+колесо мыши - для зумирования только по горизонтали, Ctrl+Shift+колесо мыши - только по вертикали.

Также обновлена демка
27. vip 10.11.09 18:19 Сейчас в теме
(25) Совет - не усложняй.
Никто не запомнит таких сочетаний клавиш. И, соответственно, пользоваться никто не будет.
30. Арчибальд 2709 10.11.09 18:31 Сейчас в теме
+(27) Лучшее - враг хорошего, имхо. :)
28. CheBurator 2688 10.11.09 18:24 Сейчас в теме
(25) центрирование элементов на форме????? то есть элементы формы при зуммировании формы не зумируются а просто в центр помещаются? круто!!! ;-)
35. Noy 1079 11.11.09 11:14 Сейчас в теме
11.11.09 Добавлен самый народный метод:

УстановитьОтносительныйРазмерФормы(ШиринаВПроцентах,ВысотаВПроцентах)

позволяет установить размер формы в процентах от главного окна - ваши формы при любом разрешении экрана всегда будут одинакового размера!

Метод доступен только после физического открытия формы (процедура ПослеОткрытия и позже).
36. CheBurator 2688 12.11.09 02:10 Сейчас в теме
такс.. хотел в субботу испытать, но придется отложить ибо занят...
нов копилку...
38. O-Planet 6449 15.11.09 15:50 Сейчас в теме
Меня волнует больше другое. Почему до сих пор ни кто не написал, что 7.7 уже не актуальна? :?: :D
41. San40s 1 21.03.12 12:17 Сейчас в теме
(38) O-Planet,
Я думаю 7.7 будет актуальна еще долго.
39. script 128 15.11.09 23:12 Сейчас в теме
Потому что никто с этим не согласен. :!:
iddqd; Зеленоград; astonvilla; Ёпрст; urmir; wing; Boog; SPonomareff; +8 Ответить
42. MsDjuice 114 16.12.13 15:02 Сейчас в теме
Очень помогла разработочка, спасибо.
Оставьте свое сообщение