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

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

  • автор:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Разбор тестирования 1С:Профессионал и PMP

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

Вопрос 10.05 экзамена 1С:Профессионал по платформе. Для чего служит основной реквизит формы?

  1. Определяет источник данных для формы в целом
  2. Определяет стандартные возможности платформы для работы формы с данными типа, заданного у основного реквизита
  3. Для обеспечения возможности программного обращения к реквизитам объекта из локального контекста формы
  4. Обеспечивает визуализацию реквизитов объекта на диалоге формы
  5. Верны 2 и 3
  6. Верны 1 и 2

Правильный ответ шестой, см. выше.
Вопрос 10.06 экзамена 1С:Профессионал по платформе. Для чего нужны реквизиты формы?

  1. Для описания состава данных, которые отображаются, редактируются или хранятся в форме
  2. Для отображения и редактирования данных в форме
  3. Верны 1 и 2

Правильный ответ третий — и то, и другое.

Вопрос 10.07 экзамена 1С:Профессионал по платформе. Что бы произвольной управляемой форме назначить основной реквизит.

  1. форму нужно сделать основной, основной реквизит при этом определяется автоматически
  2. нужно в свойствах реквизита формы установить флажок «Основной реквизит»
  3. нужно войти в меню «Правка», пункт «Основной реквизит» и выбрать нужное значение
  4. нужно заполнить свойство «Данные» формы, выбрав нужный реквизит формы

Правильный ответ второй:
Основной реквизит выделяется жирным:

Вопрос 10.08 экзамена 1С:Профессионал по платформе. Что бы произвольной обычной форме назначить основной реквизит.

  1. форму нужно сделать основной, основной реквизит при этом определяется автоматически
  2. нужно в свойствах реквизита формы установить флажок «Основной реквизит»
  3. нужно войти в меню «Правка», пункт «Основной реквизит» и выбрать нужное значение
  4. нужно заполнить свойство «Данные» формы, выбрав нужный реквизит формы

Правильный ответ четвертый:
Основной реквизит выделяется жирным:

Вопрос 10.09 экзамена 1С:Профессионал по платформе. При наличии одного основного реквизита формы можно ли добавить еще один основной реквизит?

  1. Это не возможно
  2. Можно посредством назначения соответствующего значения свойства реквизита формы
  3. Можно только программно, при обращении к объекту «Форма»
  4. Можно посредством добавления еще одного значения к соответствующему свойству формы

Правильный ответ первый, основной реквизит строго один, т.к. связь с объектом должна быть однозначна.

Вопрос 10.113 экзамена 1С:Профессионал по платформе. Какой из реквизитов формы, представленной на рисунке, является основным?

  1. СписокКурсовВалют
  2. СправочникОбъект
  3. У форм справочников нет основного реквизита
  4. У форм справочников все реквизиты основные

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Формы

Формы используются для удобного отображения данных базы пользователю. С формами можно работать как пользователь интерактивно, так и программист управляя поведением и внешним видом формы с помощью кода.

Типы форм

Формы делятся на два типа: обычные и управляемые, обычные формы это формы которые были в линейке 8 с самого начала и по текущий момент. Смысл этих форм заключается в том что форма в прямом смысле рисуется разработчиком, он указывает на то место (вплоть до пикселя)где будут располагаться элементы формы. Обычные формы работают только в толстом клиенте, в то время когда управляемые формы работают и в толстом и в тонком клиенте. Управляемые формы доступны в версии 1С начиная с 8.2 и выше и только когда конфигурация настроена как «Управляемое приложение». В тонком клиенте возможно использование только управляемых форм. Управляемую форму нельзя нарисовать мышкой. Элементы в ней не рисуются, а декларируются или объявляются, что накладывает некоторые ограничения. Вы можете указать что реквизиты будут группироваться горизонтально а не вертикально к примеру, но нельзя указать системе: «вон то поле ввода на 2пикселя выше пусть будет». В управляемых формах код делится строго на клиентский и серверный. В обычных формах можно встретить некоторые серверные ограничения только в режиме клиент-сервер и только для функций которые не расположены в модулях форм.

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

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

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

Параметры — параметры передаваемые в форму, с их помощью можно управлять отборами, устанавливать строку в нужном месте, или просто передавать в форму нужные параметры.

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

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

Принадлежность форм

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

Форма элемента справочника\документа
Форма группы справочника
Форма списка справочника\документа
Форма выбора справочникаъ\документа
Форма выбора группы справочника

Разница между элементами формы, и реквизитами объекта.

Для корректной работы с элементами формы, следует для себя четко разделить где нужно пользоваться элементами формы, а где реквизитами объекта. К примеру, Элементы.Организация Отвечает за поведение реквизита на форме, начиная от видимости, заканчивая цветом заголовка. В то время как Объект.Организация Предоставляет доступ непосредственно к данным.

Обращение к данным формы из модуля объекта.

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

«Толстые» объекты на управляемой форме.

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

Преобразование Реквизит – Данные формы и обратно.

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

РеквизитФормыВЗначение (ИмяРеквизита, ТипКоторыйМыХотимПолучитьНаВыходе)

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

ЗначениеВРеквизитФормы(ЗначениеКотороеНадоПоложитьНаФорму, ИмяРеквизитаНаФорме)

Перезаполнение реквизитов формы в случае изменения объекта.

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

ТекущийОбъект = РеквизитФормыВЗначение ("Объект") ИмяМодуля.КакаяТоПроцедура(ТекущийОбъект); //или ТекущийОбъект.ПроцедураФункцияМодуля();

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

ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект")

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

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