Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Глава 3.20. Программное изменение формы
Дальше: Добавление поля

Общие подходы

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

При программном изменении формы нужно управлять всей «троицей»: реквизиты, команды и элементы. Например, чтобы разместить какие-то данные в форме, нужно создать реквизит, создать элемент, связать элемент с реквизитом. Для команды – создать команду, связать ее с имеющимся в модуле формы обработчиком, создать элемент, связать элемент с командой.

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

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

Механика добавления/удаления реквизитов формы принципиально отличается от механики работы с ее элементами и командами.

Элементы и команды можно добавлять/удалять поодиночке, просто обращаясь к коллекциям этих элементов, используя методы Добавить() и Удалить(). Это относительно «безболезненные» операции для формы.

Изменение состава реквизитов, напротив, является сложной и затратной операцией. Поэтому здесь используется следующий подход. Сначала разработчик создает два массива программных объектов, которые описывают реквизиты формы. Один массив – это те реквизиты, которые должны быть добавлены, а другой массив – это те реквизиты, которые нужно удалить. После этого «за один подход» выполняется модификация формы с помощью ее метода ИзменитьРеквизиты(), в который передаются оба этих массива. Сначала выполняется удаление реквизитов, затем – добавление.

С добавлением реквизитов связана еще одна важная особенность. Можно добавить реквизит и установить его свойства. Но из встроенного языка нельзя назначить реквизит основным. Поэтому, например, полностью программно невозможно создать «настоящую» форму списка или объекта.

Теперь в качестве примеров рассмотрим четыре случая программного изменения формы:

Назад: Глава 3.20. Программное изменение формы
Дальше: Добавление поля