8.х Съезжает вид формы при программной работе с привязками

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем rii, 2 фев 2010.

  1. TopicStarter Overlay
    rii
    Offline

    rii Опытный в 1С

    Регистрация:
    2 фев 2010
    Сообщения:
    133
    Симпатии:
    0
    Баллы:
    26
    Добрый день.

    Есть форма, в которой есть три панели и разделитель. Одна панель основная, на которой расположены две остальных и разделитель. На одной панели выведены настройки для вывода отчета. Хочется сделать так, что при нажатии на кнопку панели управления формы панель с настройками скрывалась.
    Для этого установил необходимые привязки, протестировал в конфигураторе. Разделитель изменяет размеры моих панелей, если его двигать мышкой. Дальше написал обработчик моей волшебной кнопки.
    Сворачивание происходит по алгоритму: привязываю основную панель к границе разделителя, сворачиваю разделитель, привязываю основную панель к панели настроек, сворачиваю панель настроек. Алгоритм разворачивания аналогичный. В1С:Предприятие 8.1 (8.1.14.72) это работает (основная панель растягивается до размеров окна формы и обратно восстанавливается при появлении панели настроек) но до тех пор, пока пользователь не делает окно формы очень маленьким (на столько, что панель убранная до этого в видимую часть формы не попадает).
    После этого обработчик пытается открыть мою панель, но у него ничего не получается (значения высоты панели настроек и разделителя остаются нулевыми). После такой процедуры все настройки размеров у формы съезжают при видимом сохранении привязок панелей (основная панель наползает и перекрывает другую).
    Если кто-то решал данную проблему или делал это другим путем, помогите, пожалуйста. Ниже мой код сворачивания/разворачивания моей панели настроек. При разворачивании явным образом еще раз прописываю привязки, описанные в конфигураторе. Пробывал различные варианты настроек привязок, пробывал уже принудительно рассчитывать и присваивать необходимые размеры окон, однако, все равно ничего не получается.

    Код:
    Если мПанель.Свертка = РежимСверткиЭлементаУправления.Низ Тогда // Видна
    ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, мПанель, ГраницаЭлементаУправления.Верх);
    мПанель.Свертка = РежимСверткиЭлементаУправления.Нет;
    ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, Разделитель, ГраницаЭлементаУправления.Верх);
    Разделитель.Свертка = РежимСверткиЭлементаУправления.Нет;
    ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, Разделитель, ГраницаЭлементаУправления.Верх);
    Разделитель.УстановитьПривязку(ГраницаЭлементаУправления.Верх, ЭтаФорма.ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
    Разделитель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭтаФорма.ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
    мПанель.УстановитьПривязку(ГраницаЭлементаУправления.Верх, Разделитель, ГраницаЭлементаУправления.Низ);
    мПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭтаФорма.ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
    Иначе // Скрыта     
    ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, Разделитель, ГраницаЭлементаУправления.Верх);
    Разделитель.Свертка = РежимСверткиЭлементаУправления.Низ;
    ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, мПанель, ГраницаЭлементаУправления.Верх);
    мПанель.Свертка = РежимСверткиЭлементаУправления.Низ;
    ОсновнаяПанель.УстановитьПривязку(ГраницаЭлементаУправления.Низ, ЭтаФорма.ЭтаФорма.Панель, ГраницаЭлементаУправления.Низ);
    КонецЕсли; 
    

Поделиться этой страницей