Типы данных формы. ВниМАние!
Типы данных формы В управляемой форме можно выделить следующие категории типов, с которыми она работает: „ Типы встроенного языка, предназначенные для использования как в управляемых формах, так и вне них. Например, Число, СправочникСсылка. < имя>, ГрафическаяСхема, ТабличныйДокумент и т. д. „ Типы встроенного языка, предназначенные исключительно для того, чтобы представить в форме данные прикладных объек- тов (справочников, документов и т. д. ). Это такие типы, как Дан- ныеФормыСтруктура, ДанныеФормыКоллекция и другие. „ Отдельно следует упомянуть тип ДинамическийСписок, который используется в управляемых формах для отображения списков прикладных объектов. Все типы прикладных объектов (такие как СправочникОбъект и т. д. ) не существуют на стороне тонкого и веб-клиентов, они существуют только на сервере. Однако данные этих объектов нужно отображать в управляемых формах. Поэтому для представления в форме данных этих прикладных типов введены специальные типы данных, предназначенные для работы именно в управляемых формах. Используются следующие типы данных: „ ДанныеФормыСтруктура – содержит набор свойств произвольного типа. Свойствами могут быть другие структуры, коллекции или структуры с коллекциями. Таким типом представляется, напри- мер, в форме СправочникОбъект. „ ДанныеФормыКоллекция – это список типизированных значений, похожий на массив. Доступ к элементу коллекции осуществля- ется по индексу или по идентификатору. Доступ по идентифика- тору может отсутствовать в некоторых случаях. Это обусловлено типом прикладного объекта, который представлен этой коллек- цией. Идентификатором может быть любое целое число. Таким типом представляется, например, в форме табличная часть.
„ ДанныеФормыСтруктураСКоллекцией – это объект, который пред- ставлен в виде структуры и коллекции одновременно. С ним можно обращаться как с любой из этих сущностей. Таким типом представляется, например, в форме набор записей. „ ДанныеФормыДерево – объект предназначен для хранения иерар- хических данных. Прикладной объект представлен либо одним, либо несколькими элементами данных формы. В общем виде иерархия и состав данных формы зависят от сложности и взаимосвязи прикладных объектов управляемой формы. Например, документ, содержащий табличную часть, будет пред- ставлен объектом типа ДанныеФормыСтруктура (собственно документ), которому подчинен объект типа ДанныеФормыКоллекция (табличная часть документа).
ВниМАние! Во время разработки конфигурации важно помнить, что прикладные объекты доступны только на сервере, в то время как объектами данных форм можно пользоваться и на сервере, и на клиенте.
Фактически можно сказать, что данные формы – это унифициро- ванное представление данных различных прикладных объектов, с которыми форма работает единообразно и которые присутствуют и на сервере, и на клиенте. В редакторе формы (у реквизитов формы) вместо имен этих типов обычно отображаются те прикладные типы, данные которых содержит реквизит. Например, если реквизит Объект содержит данные элемента спра- вочника Клиенты, то в колонке Тип отображается ненастоящий тип этого реквизита формы – ДанныеФормыСтруктура, а тип прикладного объекта, данные которого содержатся в этом реквизите – Справоч- никОбъект. Клиенты. Причем чтобы было понятно, что это «нена- стоящий тип» реквизита, тип прикладного объекта показывается в круглых скобках. Таким образом форма содержит некоторую «проекцию» данных прикладных объектов в виде своих собственных типов данных и автоматически выполняет преобразование между ними при необ- ходимости.
Однако если разработчик конфигурации реализует свой алгоритм обработки данных, то преобразование данных (из специализиро- ванных типов в прикладные и обратно) он должен выполнять само- стоятельно. Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов: „ ЗначениеВДанныеФормы() типа в данные формы; – преобразует объект прикладного „ ДанныеФормыВЗначение() – преобразует данные формы в объект прикладного типа. Аналогичные методы, предназначенные для конвертирования значений реквизитов формы в прикладные объекты и обратно, суще- ствуют и у самой управляемой формы: „ ЗначениеВРеквизитФормы() – преобразует объект прикладного типа в реквизит управляемой формы; „ РеквизитФормыВЗначение() – преобразует реквизит управляемой формы в значение прикладного типа. Методы, работающие с прикладными объектами, доступны только в серверных процедурах формы. При выполнении стандартных действий формы с основным реквизитом (открытие формы, выполнение стандартной команды Записать и т. д. ) преобразование выполняется автоматически. Приведем пример преобразования данных, которое может потребо- ваться в собственных алгоритмах. Например, у нас есть особенная форма, в которой в качестве одного из реквизитов (ТоварДляМодификации) используются данные элемента справочника Товары. При создании формы на сервере мы по некото- рому алгоритму определяем, какой именно это товар, и читаем его данные в реквизит формы. При этом используется преобразование данных ЗначениеВДанныеФормы(), листинг 27. 1.
листинг 27. 1. Пример преобразования данных прикладных объектов в данные формы В некоторый момент работы формы мы решаем, что измененные данные нашего товара необходимо записать в базу данных, и тогда выполняем обратное преобразование данных формы в прикладной объект (ДанныеФормыВЗначение()) и записываем его. Как мы уже упомянули, у формы также есть методы, позволяющие преобразовать прикладные данные в реквизит формы и наоборот. Использование данных методов обычно удобнее, так как они имеют, например, информацию о типе реквизита формы. Кроме этого, метод РеквизитФормыВЗначение() выполняет установку соответствия
данных формы и объекта, которая используется при формировании сообщений. Приведем пример использования этих методов. В серверной процедуре формы мы получаем прикладной объект из реквизита формы и выполняем метод этого прикладного объекта Пересчитать(). Затем данные объекта, измененные в результате пересчета, преобра- зуем обратно в реквизит формы (листинг 27. 2).
листинг 27. 2. Пример преобразования данных прикладных объектов в данные формы
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|