1с управляемые формы растянуть по горизонтали

Обновлено: 04.07.2024

Увеличьте высоту шапки, напишите наименование колонки в свойстве "Заголовок", Shift+Enter для переноса слов.

(12) sannt, многострочный режим в заголовках не айс. В методичке по разработке управляемого интерфейса 1С настоятельно рекомендует этого не делать. Лучше сделать короткий заголовок колонки, а полное название вывести в подсказку (13) kser87, Очень интересно. Нет, к сожалению, методички. И как же они объясняют свою настоятельность? (15) kser87, Понятно. Просто сами пишут рекомендации, сами же их игнорируют. Например, не писать запросы в цикле. (16) sannt, Не путайте божий дар с яичницей. Это рекомендации, а не жесткие требования. Есть моменты, когда от этого не уйти. Все пропало и Маня не заработает очередной миллион

(20) sannt, у вас отличный подход к делу:

а, это рекомендация 1С. Можно не читать, они запросы в цикле делают. Могу делать что хочу

(21) kser87, Да не. )) Я не собирался принижать достоинств разработчиков 1С. Просто не понятна Ваша антипатия на использование многострочных заголовков. Я же не призываю везде и вся это делать. Ваши же слова

многострочный режим в заголовках не айс. В методичке по разработке управляемого интерфейса 1С настоятельно рекомендует этого не делать.

Это рекомендации, а не жесткие требования. Есть моменты.

немного перефразирую. "когда ну очень нужно сделать заголовок в 2 строки".

Вот что мне помогло:
1) Всем колонкам назначить короткий заголовок без пробелов, т.к. платформа задает ширину по имени конки, если нет заголовка (например вместо НоменклатураКРезервуЦенаСоСкидкой - дать ЦенаСоСк - уменьшается в три раза)
2)задать размер всех колонок жестко и без "растягивать по горизонтали", кроме одной колонки, которая возьмет все "растягивание" на себя
3) сбросить настройки формы в пользовательском режиме

+ Заметил, что форма запоминает ширину элементов от самого большого монитора, на котором открывалась.

Мучался с этой проблемой минут 20 :) Помогло вот что - Заходим в свойства "табличного поля" и указываем в свойстве "Фиксация слева" количество колонок, которое не хотим растягивать. Надеюсь, кому то окажется полезным :) (25) спасибо помогло!
и более того: убрал фиксацию и теперь нормально отображает! :) ура-а-а, глюк победил! (26) EvgeniuXP, я в притык не вижу свойство фиксация слева. Где оно? (28) забей, там всё-равно слетает :( то ли модуль откорректируешь и сохранишь, форма снова меняется и вылазит. мучал долго, сейчас не помню уже, но плюнул.

более того, даже видимость колонок если программно меняется, последняя колонка не вылезает теперь за пределы, меняет колонку ту, у которой ширина авто - одну всё-таки лучше выставлять авто :)

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

но проблема исправилась!

Аналогично траблы с шириной колонок.
Причем если вид: поле флажка или поле картинки - вообще непонятно какую ширину выдает, и поле задания ширины прячется из свойств! И даже если заголовок сделать в 1 символ - все равно ширина поля флажка равна 5-10 Только что удалось добиться чего-то приличного, покопавшись в настройках формы в пользовательском режиме. Люди, а кто подскажет как отлаженную обработку загрузки в "Универсальном обмене данными в формате XML" запускать впредь автоматически? Делала выгрузку из ТИС 979 в БП 2.0, исправила ошибки загрузки в отладчике, создала вн.обработку, все сработало. А на следующий раз надо все повторять сначала, хотя обработка уже есть. Как ее применять в следующие разы? Ни у кого не было такой ситуации, что сначала форма работает хорошо, а после определённых манипуляций пользователя все поля в табличной части документа начинают жить своей жизнью. Где, например, в "Рознице 8.3" хранятся настройки полей табличной части поступления? Может они как-то ломаются. (39) zemskov, В настройках пользователя, если через "Все действия" - "Изменить форму. " (в Такси "Ещё" - "Изменить форму. ") можно скрыть, добавить (не всегда, но для ссылочных типов можно) элементы формы и изменить их порядок итд. Там же можно вернуть настройки по умолчанию. Ну или сделать чтоб "забылись" все настройки можно почитсить кеш. Спасибо за ответ. Вернуть настройки по умолчанию не помогает. А вот насчёт кэша попробую. Где это только? (41) zemskov, удалить базу из списка баз и добавить снова уберите галочки в полях отбора и будет регулировка нормальная Бух 8.3. Такси. Просмотр движения регистров документа. Под одним пользователем колонки не помещались по ширине на экран и ни в какую не менялась ширина колонок и еще не было видно разделителей колонок. Еще. Изменить форму. не помогло. Баг 8.3, короче. Помогло следующее: Администрирование -> Настройки пользователей и прав -> Очистка настроек. Выбираем все или только нужные. Я выбрал все. Перезашел под этим пользователем, зашел в просмотр движений.
А там все ОК :) Все колоночки на экране. (49) делается проще. Действия - Изменить форму - все действия - "Установить стандартные настройки" Также помогает если в свойствах списка изменить "Отображение списка" с Иерархический список на просто Список.


Здравствуйте! Кто-нибудь знает как получить текущую длину/ширину элемента управления?
Отладчик показывает только заданные значения в конфигураторе.
проблема решается следующим образом: устанавливаете свойство растягивать по горизонтали в значение нет, задаете ширину колонки, применяете изменения, в режиме 1С предприятие заходите в меню изменить форму и жмете кнопку установить стандартные настройки (58) alexskiff, Ваш предложенный способ работает. Но каждый раз при открытии формы платформа (8.3.6.2100) все-равно приказывает колонкам "плясать". Все сбивается нафиг Это издевательство. только в 1С такое может быть. Только сектанты такое могут сделать! =) Тоже намучился, ответ с растягивать в да немного помог.

Частично решил проблему следующим образом, об этом уже немного говорили. У меня в дереве все колонки создаются программно. Если нужно сделать то, что делаю я, только на форме - нужно просто найти эти свойства у колонок.

У всех колонок, кроме последней (пустой) делаю так:

КолонкаМагазина.Ширина = НужнаяШирина;
КолонкаМагазина.ФиксацияВТаблице = ФиксацияВТаблице.Лево;
КолонкаМагазина.РастягиватьПоГоризонтали = Ложь;

У последней, пустой колонки, делаю так:

КолонкаМагазина.Ширина = НужнаяШирина;
КолонкаМагазина.ФиксацияВТаблице = ФиксацияВТаблице.Лево;
КолонкаМагазина.РастягиватьПоГоризонтали = Истина;

Т.о. отличие только в одном значении.

Довольно неплохо помог такой способ. Колонки немного съезжают, но вполне терпимо. Намного лучше, чем было.

Чтобы было понятно, о чём идёт речь в этой статье, необходимо сделать небольшое пояснение.

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

Так вот, та часть платформы, которая формирует визуальное представление формы, называется механизмом размещения элементов в форме.

Почему понадобился новый механизм?

Во-первых, прежний механизм, к сожалению, имел недостатки. Наиболее значительный из них заключался в том, что многие изменения свойств элементов формы, выполняемые на клиенте, требовали обязательного обращения к серверу. А любое обращение к серверу ведёт к замедлению работы.

Во-вторых, мы оценивали опыт использования управляемых форм и обнаружили ряд критичных потребностей, которые необходимо было реализовать.

И, в-третьих, мы хотели заложить в новый механизм возможности будущего развития.

Основные изменения

Схематично представить работу прежнего механизма можно следующим образом:


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

Основное действие, которое выполнялось на сервере при создании описания визуальной формы, это расчет длин строк. Имеются в виду всевозможные заголовки, надписи и так далее. Зная длины строк можно уже просчитать расположение элементов в форме.

Так как эта операция выполнялась на сервере, присутствовали два негативных момента. Во-первых, для расчёта использовались не те шрифты, которые будут использованы на клиенте, а те, которые установлены на сервере. А они могут отличаться, особенно если речь идёт о разных платформах (Windows, Linux). Или даже нужные шрифты могут быть совсем не установлены на сервере. Во-вторых, для расчёта длин использовался тот «движок» растеризации шрифтов, который есть на сервере. А он может работать не совсем так, как механизм рендеринга текстовых строк, существующий на клиенте в интернет-браузере, например. В результате могли появляться формы либо с «обрезанными» текстами, либо, наоборот, с чересчур широкими надписями.

Другая проблема заключалась в том, что отсутствовала какая-либо адаптация к размеру окна, в котором форма будет показана у клиента. Фактически на сервере описание формы создавалось исходя из минимально возможного размера окна, и дальнейший успех её отображения зависел уже от того, насколько хорошо она «умеет» растягиваться.

В новом механизме генерацию описания визуальной формы, которая раньше целиком выполнялась на сервере, мы разделили на две части, серверную и клиентскую:


Серверная часть стала существенно меньше. В ней не выполняется никаких расчётов. На сервере создаётся только «заготовка» описания, которая не содержит точных длин текстовых полей, и в ней не разрешены элементы адаптивности. На сервере обрабатывается видимость элементов, но только та, которая определяется функциональными опциями, и та, которая установлена пользователем. Но тут и нельзя иначе, потому что сами функциональные опции доступны только на сервере. А интерактивное изменение настроек пользователем в любом случае приведёт к серверному вызову.

В результате получается некий «полуфабрикат» визуального представления формы, который передаётся на клиента.

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

Благодаря тому, что расчёт длин строк производится на клиенте, удалось избавиться от ненужных и неаккуратных «щелей» между элементами. А отработка видимости на клиенте без обращения к серверу позволила ускорить работу форм. Потому что включение/выключение видимости элементов формы это одна из наиболее частых операций.

Некоторые новые возможности

Элементы адаптивного интерфейса

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

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


Если в форме есть длинные строки, которые можно разбить на отдельные слова, то такие строки переносятся, если в этом есть необходимость. Соответственно высота формы увеличивается, потому что нижняя её часть «отъезжает» вниз. В результате форма будет выглядеть нормально даже на узких экранах. Более того, этот механизм работает динамически, а значит, вы можете сжимать форму в реальном режиме времени, и вместе с этим будут переноситься длинные строки.

Автоматический перенос работает для заголовков элементов, заголовков групп, текстовых декораций и текста в кнопках, имеющих вид Гиперссылка.

Вторым элементом адаптивности является изменение ориентации групп. У групп и у формы в целом появился новый вариант ориентации - «Горизонтально, если возможно». В этом варианте, если клиентский дисплей позволяет расположить элементы горизонтально, они располагаются горизонтально. Если нет, то они располагаются вертикально.

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

Горизонтальное и вертикальное выравнивание

Раньше такая возможность отсутствовала, и для реализации нестандартного выравнивания приходилось выдумывать разные «хитрости». Теперь форме и группе можно указать, каким образом должны выравниваться её элементы по вертикали и по горизонтали. Например, на рисунке ниже, группа кнопок показывает три возможных варианта выравнивания: Лево, Центр и Право:


На этом рисунке кнопки размещены в обычной группе, которая растягивается по горизонтали. Расположение кнопок внутри группы управляется свойством группы ГоризонтальноеПоложениеПодчиненных.

Управление внешним выравниванием

Например, у вас есть форма, в которой расположены поле Подразделение, группы Адрес и Телефон. Прежний механизм выравнивал поля этих групп так, как показано на левом рисунке. Поля в форме выравнивались между собой, и поля в каждой группе выравнивались между собой.


Теперь у вас есть возможность устанавливать группам сквозное выравнивание, в результате чего, например, все поля формы будут выровнены одинаково. Этот вариант показан на правом рисунке.

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


Выравнивание элементов и заголовков

Ещё одна новая возможность, которая появилась, это возможность управлять взаимным расположением элементов и заголовков. Как во всей форме, так и в отдельных группах. Например, заголовки и элементы вы можете «растянуть» к разным краям формы, или наоборот, «стянуть» их друг к другу, выровняв заголовки вправо, а элементы - влево.


Ограничение максимальной ширины элементов

Раньше, если вы указывали элементу, что он должен растягиваться, то элемент растягивался до тех пор, пока это возможно. Например, на весь экран. Для одних элементов это было хорошо (например, поле HTML), а для других элементов это могло быть и не очень хорошо. Например, для числовых полей. Потому что числовые данные, или кнопки, управляющие полем, оказывались где-то далеко справа.

Теперь у элементов появились булевы свойства, с помощью которых можно установить режим автоматического растягивания по ширине или высоте. В этом режиме платформа самостоятельно определяет, до каких границ можно растягивать поле. Если автоматический режим отключить, тогда платформа будет вести себя так же, как и раньше. Если вы указываете конкретную ширину/высоту поля, будет использоваться она. А если вы указываете значение 0, то элемент будет растягиваться до тех пор, пока это возможно.

Управление расстоянием между элементами

Также появилась возможность управлять горизонтальным и вертикальным интервалами между элементами. Например, на следующем рисунке у левой группы вертикальный интервал увеличен, а у правой - уменьшен.


Отключение растягивания формы

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

Отключение прокрутки у страниц

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

Резюме

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

Процедура, которая "примерно" делает автоширину колонок (навроде, как если бы выделить все колонки и дважды щелкнуть мышкой по границе заголовка колонки). Привожу текст, работает неахти, но лучше чем ничего:
Код 1C v 8.х

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

Разместил: E_Migachev  Версии: | 7.x | 8.x |  Дата: 06.12.2009   Прочитано: 61328

Распечатать

Похожие FAQ

Еще в этой же категории

Как программно изменить текст, цвет, фон ячейки или области табличного документа?  6
Ниже приведено несколько полезных шаблонов кода по работе с табличным документом: //Пример получения текста ячейки ПолеТабДок = ЭлементыФормы.тдПолеТабличногоДокумента; ПолеТабДок.Область("R1C2").Текст = спрНоменклатура.Наименование; ПолеТабДок Загрузка данных из файла табличного документа в управляемом приложении  3
В управляемом приложении (если конечно вы не работаете в Толстом клиенте) можно столкнутся с такой проблемой, что многие функции работают только на сервере. Что делать, если у Вас есть файл-макет с данными, которые надо прочитать (обработать)? Надо Как при печати выводить шапку на каждой странице (ПовторятьПриПечатиСтроки)?  1
Необходимо при печати, если происходит переход на следующую страницу таблицы, выводить шапку таблицы вверху на новой странице. для печати шапки на каждой странице в языке программирования есть специальный метод - ПовторятьПриПечатиСтроки Прим Как преобразовать MXL файл в Таблицу Значений?  0
Встретилась задачка, нужно было загружать данные из mxl файлов выгруженных из другой базы 1С. Файл MXL – это созданный в программе «1С: Предприятие» (последних версий 7.7 или 8) табличный документ. вот код быстрой конвертации mxl в тз ТабДок Как сделать Расшифровку в табличном документе  0
Вопрос: Подскажите пожалуйста, каким образом можно сделать следующее. У меня есть выводимый в табличный документ результат запроса, к ячейке есть расшифровка. Я хочу чтобы при двойном клике на ячейку выполнялась процедура которая к примеру зап Посмотреть все в категории Табличный документ

BeLuY --> BeLuY



Просмотр профиля


29a --> 29a



Просмотр профиля BeLuY @ Сегодня, 16:45 ,
Разместить их в одной группе, разделив их текстовой декорацией. Moloko --> Moloko



Просмотр профиля BeLuY @ Вчера, 16:45 ,
Выделить эти реквизиты (Ctrl - левая кн. мыши). Затем в главном меню: Форма - Выравнивание - Выровнять по левому краю. fly --> fly



Просмотр профиля

BeLuY @ Вчера, 16:45 ,

в управляемых формах - непосредственно конструирование формы на клиенте выполняет платформа.
разработчик особо не регламентирует размеры/привязки - форма подстраивается под системные параметры той рабочей станции/браузера, на которой происходит открытие.
т.е. разработчик имеет огранниченный функционал на отображение формы.

Все что можете в вашем вопросе сделать, это все 4 группы перенести в одну "общую" группу, внутри группы система автоматически подстроит все элемнеты под "общую" группу.

alx389d --> alx389d



Просмотр профиля BeLuY @ 05.02.21, 16:45 ,
Свойство групп СквозноеВыравнивание = Использовать и Свойство формы ВыравниваниеЭлементовИЗаголовков = Авто(или Элементы авто, заголовки лево) BeLuY --> BeLuY



Просмотр профиля

Moloko @ 06.02.21, 11:09 ,
Меню "Форма" в Главном меню?

alx389d @ Вчера, 8:09 ,
К сожалению, не работает.

fly @ 06.02.21, 13:59 ,
Спасибо, надеялся, что все же есть какой-то метод выравнивания

sava1 --> sava1



Просмотр профиля

Читайте также: