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

16.11.09

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

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

Скачать файлы

Наименование Файл Версия Размер
Демонстрационная база
.zip 980,74Kb
198
.zip 980,74Kb 198 Скачать

Помню свой (не совсем свой) первый плоский монитор, который был куплен нашему генеральному директору (ясен пень - кому же еще). После первого знакомства с этим девайсом я был немного в шоке - в любом разрешении, отличном от рекомендуемого (в том частном случае 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    21559    54    Gvozdod    8    

14

StartManager 1.4 - Развитие альтернативного стартера

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

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

1 стартмани

23.04.2014    165715    1864    Alexoniq    1596    

496

Tray Informer

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

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

1 стартмани

04.09.2013    32879    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

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

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

1 стартмани

13.08.2013    21198    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

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

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

1 стартмани

21.02.2013    18030    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

Инструментарий разработчика Платформа 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    36103    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

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

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    34959    248    adhocprog    51    

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

- а ты объясни. РедакторТЗ - это пользовательский класс - т.е. который я могу при необходимости поправить/изменить или написать новый.
.
а то я что я дятел -так это - ничего страшного. если выкладывается одним умным дятлом недодолбленный продукт - то другим дятлам (не таким умным) приходится его долбить самим, долго и упорно. а то пчто при этом - стук по всему лесу - не вижу ничего зазорного сообщать что умный дятел выложил недопиленный продукт.
.. вот так вот ;-) долблю в меру своих сил... ибо, как показывает опыт - проблемы других решаются не сильно охотно/быстро...
9. Noy 1076 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 1076 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 1076 10.11.09 12:08 Сейчас в теме
(17) сенькс.

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

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

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

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

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

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

И ты бы давно такое сделал, если бы не гремел во все панфары на всех форумах про глючность каких-то там пользовательских классов (которые никто тебя не заставляет использовать).
Я, кстати, ни один пользовательский класс не использовал и не буду. Гораздо проще написать свое, чем разгребать чужое.
29. CheBurator 3119 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 3119 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 3119 10.11.09 21:05 Сейчас в теме
(33) по (32) хитрый какой ;-)
готов отказаться от редактораТЗ при предоставлении сопоставимого функционала. - это значит, что подключение и использование данного сопоставимого функционала по количеству строк д.б. не более 10-15 строк кода. - класс редакторТЗ вот этим мне и понравился (пару строк на подключение - дальше сам все делает...)... - что предложите взамен??? (ТП и ТЗ в качестве поставщика данных?)
37. Abadonna 3958 13.11.09 12:12 Сейчас в теме
(21)>- даешь поголовное зумирование!!!!
Слепошарых надо с работы гнать, а не зуммировать :D
40. nicxxx 254 03.11.10 10:21 Сейчас в теме
(37) я конечно некропостер....но за такие слова не грех в голову с ноги зарядить
2. CheBurator 3119 10.11.09 02:20 Сейчас в теме
надо попробовать.. потому как аналогичная задача и у меня...
3. CheBurator 3119 10.11.09 02:22 Сейчас в теме
также было бы хорошо зумировать не только скролом мыши, нои комбинацией клаиш типа контрол+шифт+ПлюсНумпад и МинусНумпад
- комбинация клавиш - по умолчанию, если не передана классу из программы...
4. vip 10.11.09 03:58 Сейчас в теме
(0) Все это хорошо, но...
Работать со шрифтами нужно крайне аккуратно.
Похвальна попытка удаления шрифтов в деструкторе, но при работе с формой вогнать систему в ступор можно очень легко.
Просто посмотри, с какой скоростью у тебя увеличивается число объектов GDI (очень наглядно, например, при зуммировании мышью).
Лимит числа объектов GDI исчерпается очень быстро.
У 1С вообще проблемы с освождением объектов GDI, а тут прямое издевательство над системой.

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

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


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


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

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


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

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

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

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

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

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

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

Метод доступен только после физического открытия формы (процедура ПослеОткрытия и позже).
36. CheBurator 3119 12.11.09 02:10 Сейчас в теме
такс.. хотел в субботу испытать, но придется отложить ибо занят...
нов копилку...
38. O-Planet 6431 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 Сейчас в теме
Очень помогла разработочка, спасибо.
Оставьте свое сообщение