Для чего служит основной реквизит формы
Перейти к содержимому

Для чего служит основной реквизит формы

  • автор:

Основной реквизит формы

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

Форма сама по себе и ее элементы управления обособлены от объектов конфигурации. Для того, чтобы форма отображала какие — либо данные, необходимо задать связь самой формы и большинства из ее элементов управления с данными. При использовании конструктора форм, конфигуратор создает такие связи автоматически. Если разработчик создает форму вручную — он может определить эти связи путем задания свойств формы и элементов управления. В любом случае, эти связи могут быть изменены средствами встроенного язьпса в процессе вьшолнения программы.

Связь формы и элементов управления с данными осуществляется при помощи реквизитов формы.

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

Среди всех реквизитов формы, как правило, существует один основной реквизит (в списке реквизитов он выделен жирным шрифтом). Основной реквизит определяет источник данных для формы в целом. От типа значения основного реквизита формы зависит не только то, какие данные будут отображены в элементах управления формы, но и поведение самой формы. Например, если основному реквизиту формы указать тип , то при закрьггии формы программа будет запрашивать подтверждение записи и проведения документа. Если же основному реквизиту формы указать тип значения , то подобного подтверждения при закрытии формы не будет.

К онструиторы форм

Для каждого объекта конфигурации, в составе которого могут находится подчиненные объекты типа , при добавлении новой формы запускается Конструктор формы. Это специальный мастер, с помощью которого производится выбор типа формы и размещаются реквизиты объекта конфигурации. Несмотря на существенные различия типов объектов, для которых производится создание формы, конструкторы имеют много общего. Рассмотрим работу конструктора на примере конструктора формы справочника.

Создадим в каркасной конфигурации форму элемента справочника «Валюты». В окне редактирования объекта справочника «Валюты» на закладке «Формы» в поле для

отображения списка форм по кнопке ^’ или выбрав из контекстного меню пункт «Добавить» добавим форму. При создании новой формы объекта на экран выводится конструктор формы. Группа элементов управления «Выберите тип формы» предназначена для выбора типа формы (состав определяется видом выбранного объекта конфигурации, для которого создается форма). Выберем форму элемента справочника

Ч исло форм по каждому типу форм не ограничено. Если у объекта несколько форм одного типа, то одну из них можно выбрать в качестве основной. Для указания основной формы установим флажок «Назначить форму основной». Если выбрана произвольная форма, то основной реквизит не создается — форма имеет типовое поведение. При выборе формы в качестве основной создается основной реквизит и поведение формы отлично от типового. Данные отличия описываются объектами «Расширение формы».

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

ВАЖНО. Конструктор формы не включает в список те реквизиты, чей тип не имеет визуального представления (например Хранилище значений).

В дальнейшем можно изменить состав реквизитов с помощью окна «Размещение данных». Для вызова окна выберите пункт «Форма/ Размещение данных» главного меню.

При создании формы в ней могут быть размещены две стандартные командные панели. Для панелей конструктор указывает в качестве источника действий значение «Форма». Источник действий в дальнейшем может быть изменен, а состав команд может быгь расширен пользовательскими командами. Состав команд командных панелей определяется источником действий и типом основного реквизита формы.

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

Реквизиты управляемой формы (1Cv8)

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

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

Имеется возможность назначить Основной реквизит формы, т. е. реквизит, который будет определять стандартную функциональность формы (расширение формы). Следует помнить, что основной реквизит у формы может быть только один.

Расширение формы – это дополнительные свойства, методы и параметры формы объекта УправляемаяФорма, характерные для объекта, являющегося основным элементом формы.

В процессе разработки формы можно явно задать возможность просмотра и редактирования конкретных реквизитов формы, в разрезе ролей, с помощью свойств Просмотр и Редактирование (подробнее смотрите раздел «Ролевая настройка формы» главы «Редакторы»). Кроме того, доступность того или иного реквизита в самой форме можно настраивать с помощью функциональных опций (подробнее о функциональных опциях можно посмотреть в главе «Управление интерфейсом конфигурации»).

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

Типы данных, доступные в управляемой форме

Управляемая форма отличается от обычной формы также и типами данных, с которыми она работает. Если обычная форма работает с большинством типов, которые предоставляет 1С:Предприятие (в том числе и вида СправочникОбъект, ДокументОбъект и т. д.), то в управляемой форме можно выделить следующие категории типов:

  • типы, которые непосредственно используются в форме – это те типы, которые существуют на стороне тонкого и Веб-клиента (например, Число, СправочникСсылка.Товары, ГрафическаяСхема, ТабличныйДокумент);
  • типы, которые будут преобразованы в специальные типы данных – типы данных управляемой формы. Такие типы отображаются в списке реквизитов формы в круглых скобках, например (СправочникОбъект.Товары);
  • динамический список (подробнее см. раздел «Динамический список» данной главы).

Преобразование прикладных объектов в данные формы

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

Используются следующие типы данных:

  • ДанныеФормыСтруктура – содержит набор свойств произвольного типа. Свойствами могут быть другие структуры, коллекции или структуры с коллекциями. Таким типом представляется, например, в форме СправочникОбъект.
  • ДанныеФормыКоллекция – это список типизированных значений, похожий на массив. Доступ к элементу коллекции осуществляется по индексу или по идентификатору. Доступ по идентификатору может отсутствовать в некоторых случаях. Это обусловлено типом прикладного объекта, который представлен этой коллекцией. Идентификатором может быть любое целое число. Таким типом представляется, например, в форме табличная часть.
  • ДанныеФормыСтруктураСКоллекцией – это объект, который представлен в виде структуры и коллекции одновременно. С ним можно обращаться как с любой из этих сущностей. Таким типом представляется, например, в форме набор записей.
  • ДанныеФормыДерево – объект предназначен для хранения иерархических данных.

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

Например, документ, содержащий табличную часть, будет представлен объектом типа ДанныеФормыСтруктура (собственно документ), которому подчинен объект типа ДанныеФормыКоллекция (табличная часть документа).

Важно! Во время разработки конфигурации важно помнить, что прикладные объекты доступны только на сервере, в то время как объектами данных форм можно пользоваться и на сервере, и на клиенте.

Передача данных между клиентской и серверной частями управляемой формы

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

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

  • Для реквизита, подчиненного динамическому списку (колонке динамического списка):
    • свойство включено – реквизит всегда считывается из базы данных и включается в данные формы;
    • свойство выключено – реквизит считывается из базы данных и включается в данные формы только тогда, когда есть видимый в данный момент элемент формы, связанный с реквизитом или его подчиненным реквизитом.
    • Для реквизита, подчиненного коллекции движений:
      • свойство включено – движения документа считываются из базы данных и будут присутствовать в данных формы;
      • свойство выключено – движения документа не будут считываться из базы данных и не попадут в данные формы (если нет элемента формы, ссылающегося на движения документа).
      • Остальные реквизиты формы:
        • свойство включено – реквизит будет присутствовать в данных формы вне зависимости от того, есть или нет хоть один элемент формы, который связан с реквизитом или его подчиненным реквизитом;
        • свойство выключено – реквизит будет присутствовать в данных формы только в том случае, если есть элемент формы, связанный с реквизитом или его подчиненным реквизитом. В отличие от реквизитов динамического списка, здесь не играет роли видимость элемента, связанного с реквизитом.

        Примечание. Следует помнить, что свойство, установленное у родительского реквизита, действует на все подчиненные реквизиты. Например, если свойство Использовать всегда снято у табличной части документа, то система считает, что это свойство снято и у всех подчиненных реквизитов (несмотря на фактическое состояние свойства).

        Методы для преобразования данных прикладных объектов в данные формы

        Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:

        • ЗначениеВДанныеФормы(),
        • ДанныеФормыВЗначение(),
        • КопироватьДанныеФормы().

        Важно! Методы, работающие с прикладными объектами, доступны только в серверных процедурах. Метод для копирования значений между данными формы доступен на сервере и на клиенте, так как не требует прикладных объектов в качестве параметров.

        Во время конвертирования данных формы в прикладной объект нужно учитывать их совместимость.

        • ЗначениеВДанныеФормы() – преобразует объект прикладного типа в данные формы;
        • ДанныеФормыВЗначение() – преобразует данные формы в объект прикладного типа;
        • КопироватьДанныеФормы() – производит копирование данных формы, обладающих совместимой структурой. Возвращает значение Истина, если копирование произведено, или Ложь, если структура объектов несовместима.

        Примечание. При выполнении стандартных действий (открытие формы, выполнение стандартной команды Записать и т. д.) формы с основным реквизитом, преобразование выполняется автоматически.

        Приведем пример, как использовать преобразование данных в собственных алгоритмах.

        &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ОбъектТовар = Справочники.Товары.НайтиПоНаименованию(«Кофейник»).ПолучитьОбъект(); ЗначениеВДанныеФормы(ОбъектТовар, Объект); КонецПроцедуры &НаКлиенте Процедура Записать() ЗаписатьНаСервере(); КонецПроцедуры &НаСервере Процедура ЗаписатьНаСервере() ОбъектТовар = ДанныеФормыВЗначение(Объект, Тип(«СправочникОбъект.Товары»)); ОбъектТовар.Записать(); КонецПроцедуры

        Также у объекта УправляемаяФорма существуют методы, доступные на сервере:

        • ЗначениеВРеквизитФормы() – выполняет преобразование объекта прикладного типа в заданный реквизит формы.
        • РеквизитФормыВЗначение() – преобразует реквизит данных формы в объект прикладного типа.

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

        Приведем пример использования этих методов.

        &НаСервере Процедура ПересчитатьНаСервере() // Преобразует реквизит Объект в прикладной объект. Документ = РеквизитФормыВЗначение(«Объект»); // Выполняет пересчет методом, определенным в модуле документа. Документ.Пересчитать(); // Преобразует прикладной объект обратно в реквизит. ЗначениеВРеквизитФормы(Документ, «Объект»); КонецПроцедуры

        Программный интерфейс

        ДанныеФормыДерево (FormDataTree)

        • НайтиПоИдентификатору (FindById)
        • ПолучитьЭлементы (GetItems)

        Предназначен для моделирования дерева в данных управляемой формы.

        Доступность: клиент, сервер, тонкий клиент, веб-клиент. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту определяется в пространстве имен . Имя типа XDTO:

        ПолучитьЭлементы (GetItems)

        Получает коллекцию элементов дерева верхнего уровня.

        Доступность: клиент, сервер, тонкий клиент, веб-клиент.

        НайтиПоИдентификатору (FindById)

        Тип: Число. Идентификатор элемента дерева.

        Получает элемент коллекции по идентификатору.

        Доступность: клиент, сервер, тонкий клиент, веб-клиент.

        ДанныеФормыЭлементДерева (FormDataTreeItem)

        • ПолучитьИдентификатор (GetId)
        • ПолучитьРодителя (GetParent)
        • ПолучитьЭлементы (GetItems)
        • Свойство (Property)

        Элемент дерева данных формы.

        Доступность: клиент, сервер, тонкий клиент, веб-клиент. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту определяется в пространстве имен . Имя типа XDTO:

        ДанныеФормыКоллекцияЭлементовДерева (FormDataTreeItemCollection)

        Элементы коллекции: ДанныеФормыЭлементДерева

        Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс элемента.

        • Вставить (Insert)
        • Добавить (Add)
        • Индекс (IndexOf)
        • Количество (Count)
        • Очистить (Clear)
        • Получить (Get)
        • Сдвинуть (Move)
        • Удалить (Delete)

        Коллекция элементов дерева.

        Доступность: клиент, сервер, тонкий клиент, веб-клиент.

        • ДанныеФормыЭлементДерева, метод ПолучитьЭлементы
        • ДанныеФормыДерево, метод ПолучитьЭлементы

        Особенности работы с деревом значений

        Обновление дерева

        Существует проблема падения платформы при обновлении дерева.

        Если в дереве был развернут какой-либо узел и выбран подчиненный узел, то при обновлении дерева функцией ЗначениеВДанныеФормы происходит падение платформы.

        Решение: перед обновлением нужно очищать дерево.

        &НаСервере Процедура ОчиститьДерево(элементы) Для каждого элемент из элементы Цикл ОчиститьДерево(элемент.ПолучитьЭлементы()); КонецЦикла; элементы.Очистить(); КонецПроцедуры &НаСервере Процедура ЗаполнитьДеревоПонятий() дзПонятия = срСвойства.ПостроитьДеревоПонятий(НаДату, Мета.ТекущаяИБ()); ОчиститьДерево(ДеревоПонятий.ПолучитьЭлементы()); ЗначениеВДанныеФормы(дзПонятия, ДеревоПонятий); КонецПроцедуры &НаКлиенте Процедура НаДатуПриИзменении(Элемент) ЗаполнитьДеревоПонятий(); КонецПроцедуры
        • Страницы с ошибками в подсветке синтаксиса
        • Формы 1Cv8

        Основной реквизит формы 1С

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

        • какие же именно данные будет отображать эта форма, и
        • каково будет ее поведение.

        Все формы, сами по себе, имеют одинаковое поведение, независимо от того, какие данные они отображают.

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

        Реквизиты формы предназначены для хранения данных, которые редактируются в форме.

        Один из реквизитов может быть назначен основным реквизитом формы.

        Основной реквизит формы 1С предназначен для определения:

        1. источника данных для формы в целом;
        2. стандартных возможностей платформы для работы формы с данными типа, заданного у основного реквизита.
        Для назначения реквизита формы основным реквизитом необходимо:
        1. произвольной управляемой форме — в свойствах реквизита формы установить флажок «Основной реквизит»;

        Рисунок «Основной реквизит формы 1С»

        Основной реквизит формы 1С

        При назначении основного реквизита формы происходит следующее:

        • поведение формы изменяется в соответствии с типом этого реквизита;
        • изменяется контекстмодуля формы (наряду с методами и свойствами формы, в нем становятся доступны методы и свойства объекта, являющегося значением основного реквизита).

        Вследствие объединения контекстов формы и объекта могут возникать конфликты имен методов и свойств. Методы и свойства формы имеют приоритет над методами и свойствами объекта.

        Обращение к свойству объекта можно осуществлять через имя основного реквизита формы.

        Есть форма с двумя реквизитами: ДокументОбъект , Реквизит1 .

        Реквизит ДокументОбъект является основным реквизитом и имеет в свою очередь реквизиты с именами Реквизит1 , Реквизит2 . Тогда обращение к реквизитам в модуле формы будет осуществляться следующим образом:

        Основной реквизит формы и расширения формы в 8.2

        > Функциональность формы определяется реквизитами формы и связанными с ними элементами управления. В большинстве случаев функциональность формы обеспечивается за счет выбора основного реквизита формы. Он определяет наличие расширения формы и обеспечивает поведение формы, специфическое для конкретного прикладного объекта.

        У меня 2 вопроса к уважаемым участникам форума.

        1) Что такое «основной реквизит формы»? Это то, что в окне с формой на закладке «Реквизиты» выделяется жирным шрифтом? Его как-то можно задать вручную? Или он только задаётся автоматически при создании формы и всё?

        2) Что в этой фразе имеется в виду под расширением формы? И как именно основной реквизит формы определяет наличие расширения формы?

        По теме из базы знаний

        • Эволюция расширения конфигурации
        • Поддержка пользователей [Alt+S] (подключаемое расширение)
        • Параметризация печатных форм под контрагентов (подключаемое расширение)
        • Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
        • Расширение для интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
        • Дата
        • Дата
        • Рейтинг всех уровней
        • Рейтинг 1-го уровня
        • Древо развёрнутое
        • Древо свернутое

        Свернуть все
        2. shiaju 25 10.03.16 06:02 Сейчас в теме

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

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

        Изменить этот реквизит можно точно также как и любой другой (например правой кнопкой мыши — изменить).

        Anna_arbuz; + 1 – Ответить
        3. DWZ2 10.03.16 12:34 Сейчас в теме
        Однако один из реквизитов формы может быть назначен для нее основным

        в этом случае стандартное поведение формы и ее свойства будут дополнены в зависимости от того, какой тип имеет основной реквизит формы.

        То есть изменение стандартного поведения формы и её дополнительные свойства и называются расширением формы?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *