Размеры управляемой формы

31.10.17

Разработка - Работа с интерфейсом

Как рассчитать ширину и высоту управляемой формы или отдельного элемента, чтобы адаптировать интерфейс программно при их изменении.

Файлы

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

Наименование Скачано Купить файл
Подстройка размеров текста
.epf 6,63Kb
54 2 500 руб. Купить
Подстройка размеров диаграмм
.epf 14,74Kb
33 2 500 руб. Купить
Отображение картинок "плиткой"
.epf 8,95Kb
36 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Как известно, у управляемой формы нельзя определить реальные размеры. То есть у нее имеются свойства "Ширина" и "Высота", но при изменении размеров самой формы эти свойства не изменяются.
Если поискать в интернете, то предлагают использовать поле HTML документа. Я применял этот способ несколько раз, поэтому опишу как это делается.

Чтобы рассчитать ширину формы или элемента, необходимо разместить на ней поле HTML документа и установить ему признак "Растягивать по горизонтали". Тогда можно прочитать его "clientWidth" (или "clientHeight" для опреледения высоты). Это делается, например, из подписки "ДокументСформирован". Но как отследить момент, когда размер формы или элемента изменяется? 
Можно поставить обработчик ожидания, который будет постоянно опрашивать поле HTML. Но это плохое решение. 
Гораздо лучше подписаться на изменение размеров документа. Приведу код страницы, и опишу как это работает.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ЭтотОбъект.полеHTML = 
	"
	|<HTML>
	|<BODY onResize='interactionButton.click()' onLoad='interactionButton.click()'>
	|
	|<button id='interactionButton' style='display: none'>Кнопка взаимодействия</button>
	|
	|</BODY>
	|</HTML>
	|";
	
	
КонецПроцедуры


Итак, применяем идею, предложенную в статье  Javascript и 1С. Кросс-платформенное взаимодействие.
Поместим на HTML страницу невидимую кнопку, а в свойстве документа "onresize" пропишем, чтобы при изменении размера страницы выполнился клик по этой кнопке. У элемента поле HTML сработает событие ПриНажатии(). Вот в этом событии и надо будет считать новые размеры страницы и выполнить необходимые действия при изменении. Кроме того, при загрузке страницы тоже вызывается клик, чтобы обработку изменения размера не дублировать в событии ДокументСформирован().

Вот как это выглядит на примере.


Итак, принцип понятен. Отстался один недостаток, само поле HTML будет видно на форме и это выглядит некрасиво. Необходимо его спрятать. 
Если конфигурация имеет режим совместимости 8.3.7 и выше, то можно сделать так. Создаем страницы, на одну страницу помещаем основные элементы, на другую страницу помещаем служебное поле HTML документа. У страницы выставляем "ОтображениеСтраниц"="Нет".
Вот как это выглядит.

Все диаграммы полностью заполняют всю область табличного документа, в котором они выводятся, и при изменении его размера подстраиваются 

Все диаграммы полностью заполняют всю область табличного документа, в котором они выводятся, и при изменении его размера подстраиваются

При изменении размеров формы количество картинок по горизонтали пересчитывается и изменяется, без появления горизонтального скрола

 

К статье прилагаются прототипы, приведенные в статье для тех, кто собирает полезные приемы или кто хочет поподробнее разобраться и поэкспериментировать.
1. Подстройка размеров текста. - Демонстрирует базовый принцип описанного приема. Работает корректно при режиме совместимости 8.3.7 и выше. Работает почти корректно на платформе 8.3 в режиме совместимости 8.2.13 и выше.
2. Подстройка размеров диаграмм. - Демонстрирует рассчет размеров для элементов формы, созданных из конфигуратора. Работает корректно при режиме совместимости 8.3.7 и выше.
3. Отображение картинок "плиткой" - Демонстрирует перестройку интерфейса, когда элементы формы создаются программно. Работает корректно при режиме совместимости 8.3.7 и выше.
 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    87713    62    42    

73

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5246 руб.

29.06.2020    25338    34    6    

53

Консолидация данных Работа с интерфейсом Программист Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 1C:ERP Узбекистан Беларусь Кыргызстан Россия Казахстан Платные (руб)

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

6088 руб.

17.10.2025    2572    3    0    

2

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    8731    2    2    

6

Универсальные функции Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    62419    dimanich70    86    

177

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    27415    YA_418728146    8    

175

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    9470    120    progmaster    23    

6

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    14775    kalyaka    8    

35
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. msfog 09.10.17 10:19 Сейчас в теме
Добрый день. Встречный вопрос: При обработке диаграмм на форме какие методы Вы используете? Я пытаюсь обработать информацию из регистра методом отбора и принудительной установкой значения из выборки данных и обработка не выводит картинку при типе диаграммы круговая. С типом измерительная все получилось...
2. yaroslavkravets 25 10.10.17 10:46 Сейчас в теме
идея интересная, но управляемые формы - позволяют постраивать размеры, только есть особенность:
1- нужно установить "рястягивать по горизонтали"(или вертикали)
2- нужно снять "автоМаксШирина"
3. json 3430 10.10.17 12:16 Сейчас в теме
(2) наверное вы не единственный, кто недополнял суть решаемой проблемы. Поэтому поясню.
Возьмите перейдите на главную страницу инфостарта и попробуйте сузить окошко браузера. Вы увидите, что блоки, из которых состоит страница, не сжимаются, а изменяют свое местоположение. Так называемая блочная верстка. В 1С такого нет. И если вы вдруг захотите, чтобы например, рабочий стол красиво отображался и на больших и на средних и на меленьких мониторах, то просто сжимать элементы - не получится. Нужно будет перемещать блоки программно. Возможно придется также изменять размеры шрифта. А для этого обязательно нужно знать ширину формы.
Другая решаемая задача. Представьте, что на форме отображается диаграмма и другая информация. Как сделать так, чтобы диаграмма точно влезала в табличный документ на форме. При этом не была слишком мелкой и не обрезалась бы границами элемента формы. Сможете это сделать галочками?
adhocprog; AKnyazkov; ixijixi; Merc; Melenya; +5 Ответить
4. yaroslavkravets 25 10.10.17 14:13 Сейчас в теме
(3) тогда тему надо было назвать "адаптивный интерфейс форм" или что-то похоже этому.
Вы назвали статью как "Размеры управляемой формы" - об адаптации и масштабировании элементов здесь можно только догадыватся....
user738147; Symbiat; ixijixi; +3 Ответить
5. dabu-dabu 383 14.12.17 16:05 Сейчас в теме
Как минимум в 8.3.11 диаграммы растягиваются автоматически. Но за идею +
6. vaxhab 16 13.07.18 19:14 Сейчас в теме
7. zlobnyi_troll 26.10.18 16:08 Сейчас в теме
На платформе 8.3.12 и выше обработка не работает: размер окна поменять платформа не даёт. Но это можно обойти, перерисовывая картинки через обработчик ожидания.
8. mars207 27 16.08.19 10:22 Сейчас в теме
В тонком все отлично. В Web клиенте не сработало. Хотя казалось бы скрипт в веб должен был работать.
adhocprog; +1 Ответить
9. 7OH 70 22.04.20 14:45 Сейчас в теме
На компе вроде работает, а вот на мобиле почему-то не хочет.
Размер окна не меняется, как бы я не поворачивал экран
adhocprog; +1 Ответить
10. SergMuravev 907 27.09.22 20:59 Сейчас в теме
В обработке "Подстройка размеров текста" перетягивании вертикального разделителя закрывается все приложение.

То же самое при изменении размеров окна в режиме БлокироватьОкноВладельца.
Для отправки сообщения требуется регистрация/авторизация