Обычная форма. На форме слева панель, справа от нее табличное поле, между ними разделитель. чуть выше этой связки два флажка, условно D и Q. Не могу добиться нужного мне поведения реквизитов на форме.
Что хочу?
А) При включенном флажке D и выключенном Q видна только панель и она растягивается от левой границы формы к правой
Б) При включенном флажке Q и выключенном D видно только табличное поле и оно растягивается от левой границы формы к правой
В) При включенных флажках D и Q видны и панель и табличное поле. Правая граница панели привязана к левой границе разделителя, левая граница табличного
поля привязана к правой границы разделителя и меняя положение разделителя мы пропорционально увеличиваем/уменьшаем ширину и панели и табличного
поля.
Что сделал?
В конфигураторе установил следующие горизонтальные привязки:
- Панель: левая граница привязана к левой границе формы
правая граница привязана к правой границе формы (до левой границы разделителя)
- Табличное поле: правая граница привязана к правой границе формы
левая граница привязана к левой границе формы (до правой границы разделителя)
- Разделитель: нет привязок
При изменении состояния флажков программно изменяю привязки и свертку:
1) Флажок D = Истина и флажок Q = Ложь:
панель: правая граница привязывается к правой границе формы
Свертка = нет
табличное поле: Свертка = право
разделитель: видимость = Ложь
2) Флажок D = Ложь и флажок Q = Истина:
панель: Свертка = Лево
табличное поле: Свертка = Нет
левая граница привязывается к левой границе формы
разделитель: видимость = Ложь
3) Флажок D = Истина и флажок Q = Истина:
панель: Свертка = Нет
правая граница привязана к правой границе формы (до левой границы разделителя)
табличное поле: Свертка = Нет
левая граница привязана к левой границе формы (до правой границы разделителя)
разделитель: видимость = Истина
левая граница не привязана
правая граница не привязана
Проблема: При двух включенных флажках все работает замечательно, при одном включенном флажке видимый реквизит не хочет растягиваться
до границы формы (панель до правой границы, а табличное поле до левой границы) . Ощущение, что и панель и табличное поле растягиваются только
до разделителя.
Попробовал разделитель создавать программно только при включенных обоих флажках, а в других случаях удалять, но... проблема не ушла. В общем заблудился в трех соснах. Подскажите, пожалуйста, куда копать или скиньте готовый *.erf
Что хочу?
А) При включенном флажке D и выключенном Q видна только панель и она растягивается от левой границы формы к правой
Б) При включенном флажке Q и выключенном D видно только табличное поле и оно растягивается от левой границы формы к правой
В) При включенных флажках D и Q видны и панель и табличное поле. Правая граница панели привязана к левой границе разделителя, левая граница табличного
поля привязана к правой границы разделителя и меняя положение разделителя мы пропорционально увеличиваем/уменьшаем ширину и панели и табличного
поля.
Что сделал?
В конфигураторе установил следующие горизонтальные привязки:
- Панель: левая граница привязана к левой границе формы
правая граница привязана к правой границе формы (до левой границы разделителя)
- Табличное поле: правая граница привязана к правой границе формы
левая граница привязана к левой границе формы (до правой границы разделителя)
- Разделитель: нет привязок
При изменении состояния флажков программно изменяю привязки и свертку:
1) Флажок D = Истина и флажок Q = Ложь:
панель: правая граница привязывается к правой границе формы
Свертка = нет
табличное поле: Свертка = право
разделитель: видимость = Ложь
2) Флажок D = Ложь и флажок Q = Истина:
панель: Свертка = Лево
табличное поле: Свертка = Нет
левая граница привязывается к левой границе формы
разделитель: видимость = Ложь
3) Флажок D = Истина и флажок Q = Истина:
панель: Свертка = Нет
правая граница привязана к правой границе формы (до левой границы разделителя)
табличное поле: Свертка = Нет
левая граница привязана к левой границе формы (до правой границы разделителя)
разделитель: видимость = Истина
левая граница не привязана
правая граница не привязана
Проблема: При двух включенных флажках все работает замечательно, при одном включенном флажке видимый реквизит не хочет растягиваться
до границы формы (панель до правой границы, а табличное поле до левой границы) . Ощущение, что и панель и табличное поле растягиваются только
до разделителя.
Попробовал разделитель создавать программно только при включенных обоих флажках, а в других случаях удалять, но... проблема не ушла. В общем заблудился в трех соснах. Подскажите, пожалуйста, куда копать или скиньте готовый *.erf
По теме из базы знаний
- Обновление справочника "Идентификаторы объектов метаданных" без привязки к конфе и релизу БСП
- Корпоративный фокус
- Разработка и сценарное тестирование с Vanessa-ADD. Концепция, теория и сквозной пример создания сценария
- Программные формы
- Ни в ЗУП ногой!? А мне нравится! Часть 3. Как меня туда занесло?
Найденные решения
Процедура УстановитьПривязки()
ШиринаРабочейОбласти = Ширина - 16;
Если D = Истина И Q = Ложь Тогда
ЭлементыФормы.Разделитель1.Видимость = Ложь;
ЭлементыФормы.Панель1.Видимость = Истина;
ЭлементыФормы.ТабличноеПоле1.Видимость = Ложь;
ЭлементыФормы.Панель1.УстановитьПривязку(ГраницаЭлементаУправления.Право, Панель, ГраницаЭлементаУправления.Право);
ЭлементыФормы.Панель1.Ширина = ШиринаРабочейОбласти;
КонецЕсли;
Если D = Ложь И Q = Истина Тогда
ЭлементыФормы.Разделитель1.Видимость = Ложь;
ЭлементыФормы.Панель1.Видимость = Ложь;
ЭлементыФормы.ТабличноеПоле1.Видимость = Истина;
ЭлементыФормы.ТабличноеПоле1.Лево = 8;
ЭлементыФормы.ТабличноеПоле1.Ширина = ШиринаРабочейОбласти;
ЭлементыФормы.ТабличноеПоле1.УстановитьПривязку(ГраницаЭлементаУправления.Лево, Панель, ГраницаЭлементаУправления.Лево);
КонецЕсли;
Если D = Истина И Q = Истина Тогда
ЭлементыФормы.Разделитель1.Видимость = Истина;
ЭлементыФормы.Панель1.Видимость = Истина;
ЭлементыФормы.ТабличноеПоле1.Видимость = Истина;
ЭлементыФормы.Панель1.Ширина = ЭлементыФормы.Разделитель1.Лево - 8;
ЭлементыФормы.ТабличноеПоле1.Ширина = ШиринаРабочейОбласти - (ЭлементыФормы.Панель1.Ширина + ЭлементыФормы.Разделитель1.Ширина);
ЭлементыФормы.ТабличноеПоле1.Лево = ЭлементыФормы.Разделитель1.Лево + ЭлементыФормы.Разделитель1.Ширина;
ЭлементыФормы.Панель1.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.Разделитель1, ГраницаЭлементаУправления.Лево);
ЭлементыФормы.ТабличноеПоле1.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭлементыФормы.Разделитель1, ГраницаЭлементаУправления.Право);
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ПривязкиОФ.epf
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Сделать 3 страницы на форме.
На каждой странице сделать видимой нужную табличную часть, или обе табличной части.
В зависимости от флажков переключать видимость на нужную страницу.
Таблицы значений как реквизита будет 2, а элементов формы с данными этих таблиц - на каждой странице формы - те какие нужны.
И не нужно заморачиваться с привязками, которые и так хреново работают.
На каждой странице сделать видимой нужную табличную часть, или обе табличной части.
В зависимости от флажков переключать видимость на нужную страницу.
Таблицы значений как реквизита будет 2, а элементов формы с данными этих таблиц - на каждой странице формы - те какие нужны.
И не нужно заморачиваться с привязками, которые и так хреново работают.
(1) можно использовать сворачивание элементов плюс установка границ элементов. Будет немного криво работать если не сохранять промежуточные значения, но результат получится. Тут главное понять что скрытый элемент или свернутый все равно на форме есть и это надо учитывать!
Также есть ход конем. Сделать панель с не видимыми страницами. И при переключении галок открывается та или иная страница!
Процедура УстановитьПривязки()
ШиринаРабочейОбласти = Ширина - 16;
Если D = Истина И Q = Ложь Тогда
ЭлементыФормы.Разделитель1.Видимость = Ложь;
ЭлементыФормы.Панель1.Видимость = Истина;
ЭлементыФормы.ТабличноеПоле1.Видимость = Ложь;
ЭлементыФормы.Панель1.УстановитьПривязку(ГраницаЭлементаУправления.Право, Панель, ГраницаЭлементаУправления.Право);
ЭлементыФормы.Панель1.Ширина = ШиринаРабочейОбласти;
КонецЕсли;
Если D = Ложь И Q = Истина Тогда
ЭлементыФормы.Разделитель1.Видимость = Ложь;
ЭлементыФормы.Панель1.Видимость = Ложь;
ЭлементыФормы.ТабличноеПоле1.Видимость = Истина;
ЭлементыФормы.ТабличноеПоле1.Лево = 8;
ЭлементыФормы.ТабличноеПоле1.Ширина = ШиринаРабочейОбласти;
ЭлементыФормы.ТабличноеПоле1.УстановитьПривязку(ГраницаЭлементаУправления.Лево, Панель, ГраницаЭлементаУправления.Лево);
КонецЕсли;
Если D = Истина И Q = Истина Тогда
ЭлементыФормы.Разделитель1.Видимость = Истина;
ЭлементыФормы.Панель1.Видимость = Истина;
ЭлементыФормы.ТабличноеПоле1.Видимость = Истина;
ЭлементыФормы.Панель1.Ширина = ЭлементыФормы.Разделитель1.Лево - 8;
ЭлементыФормы.ТабличноеПоле1.Ширина = ШиринаРабочейОбласти - (ЭлементыФормы.Панель1.Ширина + ЭлементыФормы.Разделитель1.Ширина);
ЭлементыФормы.ТабличноеПоле1.Лево = ЭлементыФормы.Разделитель1.Лево + ЭлементыФормы.Разделитель1.Ширина;
ЭлементыФормы.Панель1.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.Разделитель1, ГраницаЭлементаУправления.Лево);
ЭлементыФормы.ТабличноеПоле1.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭлементыФормы.Разделитель1, ГраницаЭлементаУправления.Право);
КонецЕсли;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ПривязкиОФ.epf
for SlavaKron: спасибо. где-то я все-таки допустил ошибку. делал всё, как и вы, но у вас работает, у меня нет :-)
Я пошел другим путем, все элементы формы (панели + табличное поле + разделитель) создал программно, программно же установил размеры, привязки и т.д.
, немножко геморройно, но все заработало....
Я пошел другим путем, все элементы формы (панели + табличное поле + разделитель) создал программно, программно же установил размеры, привязки и т.д.
, немножко геморройно, но все заработало....
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот