Управление размером формы (ключ сохранение положения окна)
Бывают ситуации когда форма открывается не в том размере, который ожидаешь и появляются скроллы слева и справа. Чтобы восстановить положение нужно поработать мышкой или нажать волшебное сочетание клавиш - Alt + Shift + R (восстановить положение окна).
Это происходит из-за того, что форма по умолчанию запоминает свои размеры при закрытии и восстанавливает их при открытии. Но, например, в пошаговых помощниках конечное состояние формы сильно отличается от начального. На таких формах часто используют Страницы и на каждой странице набор реквизитов разный.
По создании формы размер подстраивается под видимые в текущий момент реквизиты. Если позже эти реквизиты изменятся, например, ПриОткрытии или ПриЗагрузкеПользовательскихДанных, то форма в каких-то случаях оставляет свой старый размер и реквизиты не помещаются. С простыми формами платформа справляется хорошо. А вот на сложных такой эффект проявляется и форма открывается либо меньше, либо больше чем нужно.
Чтобы этого избежать, следует управлять специальным свойством формы - КлючСохраненияПоложенияОкна. В разрезе этих ключей хранится размер и положение окна. При управлении формой следует менять этот реквизит.
Форма в этом случае будет восстанавливать (или устанавливать новый) размер под текущий набор реквизитов для этого ключа. Затем при открытии формы мы укажем нужный нам ключ и форма построится корректно.
КлючСохраненияПоложенияОкна - это свойство со строковым типом значения. Можно записать в него имя страницы, которая отображается. Если форма сложная, например, на странице будут отображаться или скрываться крупные блоки, то описание о них также стоит добавить в реквизит. После изменения этого свойства форма сама перестроится, никаких дополнительных методов вызывать не требуется.
Пример кода:
```
&НаКлиентеНаСервереБезКонтекста
Процедура УправлениеФормой(Форма, Шаг)
Элементы = Форма.Элементы;
Если Шаг = 1 Тогда
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаВход;
Элементы.СтраницаВход.Видимость = Истина;
Элементы.СтраницаРеквизиты.Видимость = Ложь;
Элементы.СтраницаУспешно.Видимость = Ложь;
ИначеЕсли Шаг = 2 Тогда
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаРеквизиты;
Элементы.СтраницаВход.Видимость = Ложь;
Элементы.СтраницаРеквизиты.Видимость = Истина;
Элементы.СтраницаУспешно.Видимость = Ложь;
Иначе
Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы.СтраницаУспешно;
Элементы.СтраницаВход.Видимость = Ложь;
Элементы.СтраницаРеквизиты.Видимость = Ложь;
Элементы.СтраницаУспешно.Видимость = Истина;
КонецЕсли;
Форма.КлючСохраненияПоложенияОкна = СтрШаблон("СостояниеФормыШаг%1", Шаг);
КонецПроцедуры
```
Обратить внимание следует на:
Форма.КлючСохраненияПоложенияОкна = СтрШаблон("СостояниеФормыШаг%1", Шаг);