Помогите с привязками

1. Незнайка 204 16.07.18 02:57 Сейчас в теме
Обычная форма. На форме слева панель, справа от нее табличное поле, между ними разделитель. чуть выше этой связки два флажка, условно D и Q. Не могу добиться нужного мне поведения реквизитов на форме.
Что хочу?
А) При включенном флажке D и выключенном Q видна только панель и она растягивается от левой границы формы к правой
Б) При включенном флажке Q и выключенном D видно только табличное поле и оно растягивается от левой границы формы к правой
В) При включенных флажках D и Q видны и панель и табличное поле. Правая граница панели привязана к левой границе разделителя, левая граница табличного
поля привязана к правой границы разделителя и меняя положение разделителя мы пропорционально увеличиваем/уменьшаем ширину и панели и табличного
поля.
Что сделал?
В конфигураторе установил следующие горизонтальные привязки:
- Панель: левая граница привязана к левой границе формы
правая граница привязана к правой границе формы (до левой границы разделителя)
- Табличное поле: правая граница привязана к правой границе формы
левая граница привязана к левой границе формы (до правой границы разделителя)
- Разделитель: нет привязок
При изменении состояния флажков программно изменяю привязки и свертку:
1) Флажок D = Истина и флажок Q = Ложь:
панель: правая граница привязывается к правой границе формы
Свертка = нет
табличное поле: Свертка = право
разделитель: видимость = Ложь
2) Флажок D = Ложь и флажок Q = Истина:
панель: Свертка = Лево
табличное поле: Свертка = Нет
левая граница привязывается к левой границе формы
разделитель: видимость = Ложь
3) Флажок D = Истина и флажок Q = Истина:
панель: Свертка = Нет
правая граница привязана к правой границе формы (до левой границы разделителя)
табличное поле: Свертка = Нет
левая граница привязана к левой границе формы (до правой границы разделителя)
разделитель: видимость = Истина
левая граница не привязана
правая граница не привязана

Проблема: При двух включенных флажках все работает замечательно, при одном включенном флажке видимый реквизит не хочет растягиваться
до границы формы (панель до правой границы, а табличное поле до левой границы) . Ощущение, что и панель и табличное поле растягиваются только
до разделителя.
Попробовал разделитель создавать программно только при включенных обоих флажках, а в других случаях удалять, но... проблема не ушла. В общем заблудился в трех соснах. Подскажите, пожалуйста, куда копать или скиньте готовый *.erf
+
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
12. SlavaKron 20.07.18 15:17 Сейчас в теме +5 $m
Процедура УстановитьПривязки()
	
	ШиринаРабочейОбласти = Ширина - 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
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 16.07.18 08:16 Сейчас в теме
(1) выложили бы уже свою обработку чтоб на ней доделать )
Jen1978; +1
6. Незнайка 204 16.07.18 12:27 Сейчас в теме
(2) Заказчик, думаю, будет против...
+
7. Sashares 34 16.07.18 12:30 Сейчас в теме
(1) Сделать 3 страницы на форме.
На каждой странице сделать видимой нужную табличную часть, или обе табличной части.
В зависимости от флажков переключать видимость на нужную страницу.
Таблицы значений как реквизита будет 2, а элементов формы с данными этих таблиц - на каждой странице формы - те какие нужны.
И не нужно заморачиваться с привязками, которые и так хреново работают.
pafkas89; +1
10. Xershi 1484 20.07.18 13:38 Сейчас в теме
(1) можно использовать сворачивание элементов плюс установка границ элементов. Будет немного криво работать если не сохранять промежуточные значения, но результат получится. Тут главное понять что скрытый элемент или свернутый все равно на форме есть и это надо учитывать!
+
3. Timur.V 78 16.07.18 11:06 Сейчас в теме
Пример с двумя Таблицами значений, прикрепил.
Прикрепленные файлы:
Тест22.epf
+
4. BackinSoda 16.07.18 11:58 Сейчас в теме
(3) Только у вас обработка для управляемых форм, где нет таких хлопот с привязками.
+
5. Незнайка 204 16.07.18 12:25 Сейчас в теме
(3) У меня формы обычные. В том то и дело, что на УФ проблем нет, а на обычных....
+
8. Timur.V 78 16.07.18 12:33 Сейчас в теме
(5) Может есть возможность при создании формы выбрать УФ ? чтобы не мучится с привязками.
Прикрепленные файлы:
+
9. Sashares 34 16.07.18 12:46 Сейчас в теме
(8)Если обработка внешняя, то в обычном приложении нельзя будет ее открыть.
В обычном приложении не работают внешние обработки на управляемых формах.
+
11. Xershi 1484 20.07.18 13:38 Сейчас в теме
Также есть ход конем. Сделать панель с не видимыми страницами. И при переключении галок открывается та или иная страница!
+
12. SlavaKron 20.07.18 15:17 Сейчас в теме +5 $m
Процедура УстановитьПривязки()
	
	ШиринаРабочейОбласти = Ширина - 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
+
13. Незнайка 204 21.07.18 01:13 Сейчас в теме
for SlavaKron: спасибо. где-то я все-таки допустил ошибку. делал всё, как и вы, но у вас работает, у меня нет :-)
Я пошел другим путем, все элементы формы (панели + табличное поле + разделитель) создал программно, программно же установил размеры, привязки и т.д.
, немножко геморройно, но все заработало....
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот