Что такое основной реквизит управляемой формы

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

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

***

Вопрос 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. У форм справочников все реквизиты основные

Правильный ответ второй — тот, что жирный.

Вот и конец книжечки… T_T

Как связаны данные и
элементы формы?

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

Что такое основной реквизит формы?
Основной реквизит формы – выделен жирным цветом, может быть только одним.
Собственно, он и задает «стиль» всей форме. От основного реквизита определяет
характер, назначение и поведение формы – например, в зависимости от типа
основного реквизита могут изменятся методы и свойства формы. Простейший пример
– если основной реквизит формы является ДокументОбъект.КакойЛибоДокумент, то
при нажатии на кнопку «ОК» будет осуществляться запись и проведение документа.

Что такое расширение
формы и её элементов?
Расширение – набор дополнительных свойств, методов и событий, появляющихся
у формы или у элемента формы.

Какие существуют типы
данных у формы?
—  типы встроенного языка;
— динамический список;
— ДанныеФормыСтруктура, ДанныеФормыКоллекция – типы встроенного языка,
предназначенные для моделирования структуры данных, редактируемых в управляемой
форме.

Как выполнить
преобразование данных прикладных объектов в данные формы?
С помощью методов ЗначениеВДанныеФормы() и ЗначениеВРеквизитФормы()

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

Видимость редактируется в форме документа на закладке Командный интерфейс:

Как настроить условное
оформление строк формы списка?
Данная настройка идет через палитру свойств реквизита ФормыСписка – поле
Настройка списка, а дальше на вкладке «Условное оформление» проводим то
оформление, которое нам нужно.

Как установить форму
выбора для ссылочного реквизита?
Сначала нужно создать форму для данного ссылочного реквизита, потом выбрать
эту форму в палитре свойств реквизита, в графе «Форма выбора»

Как установить
автоматическую и программную проверку заполнения реквизитов?
Автоматическая – установить проверку в палитре свойств реквизита (именно
реквизита объекта, а не формы!!)

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

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

Как использовать
параметризированные команды в формах?
Очень просто! Создаем команду (правым кликом), задаем её тип, пишем код в
модуле, а далее кнопка по выбору этой команды появится у всех объектов, у
которых есть такой же тип. Находится команда будет во вкладке «Глобальные
команды». Осталось только вынести её на форму.

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

Содержание

  • 1 Реквизиты формы
    • 1.1 Типы данных, доступные в управляемой форме
    • 1.2 Преобразование прикладных объектов в данные формы
    • 1.3 Передача данных между клиентской и серверной частями управляемой формы
    • 1.4 Методы для преобразования данных прикладных объектов в данные формы
  • 2 Программный интерфейс
    • 2.1 ДанныеФормыДерево (FormDataTree)
      • 2.1.1 ПолучитьЭлементы (GetItems)
      • 2.1.2 НайтиПоИдентификатору (FindById)
    • 2.2 ДанныеФормыЭлементДерева (FormDataTreeItem)
    • 2.3 ДанныеФормыКоллекцияЭлементовДерева (FormDataTreeItemCollection)
  • 3 Особенности работы с деревом значений
    • 3.1 Обновление дерева

Реквизиты формы

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

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

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

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

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

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

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

Управляемая форма отличается от обычной формы также и типами данных, с которыми она работает. Если обычная форма работает с большинством типов, которые предоставляет 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)

Описание:

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

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

См. также:

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

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

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

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

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

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

Например:

&НаСервере
Процедура ОчиститьДерево(элементы)
	Для каждого элемент из элементы Цикл
		ОчиститьДерево(элемент.ПолучитьЭлементы());
	КонецЦикла;
	элементы.Очистить();
КонецПроцедуры

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

&НаКлиенте
Процедура НаДатуПриИзменении(Элемент)
	ЗаполнитьДеревоПонятий();
КонецПроцедуры

Основные формы объектов прикладного решения

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

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

Важной особенностью системы 1С:Предприятие 8.0 является механизм форм по умолчанию. Этот механизм освобождает разработчика от необходимости создания всех возможных форм для каждого из объектов прикладного решения. Разработчику достаточно создать новый объект прикладного решения, а система сама сгенерирует в нужные моменты работы пользователя необходимые формы по умолчанию для отображения информации, содержащейся в этом объекте. Таким образом, разработчику нужно создавать собственные формы объектов прикладного решения лишь в том случае, если они должны иметь отличия (другой дизайн или специфическое поведение) от форм, генерируемых системой по умолчанию.

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

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

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

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

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

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

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

Программно они доступны в модуле формы без точки и вне формы через точку как свойства объекта типа «Форма».

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

Реквизиты формы обеспечивают связь элементов формы с данными (с реквизитами и табличными частями объектов) через свойство Данные элементов формы.

Кнопка «Размещение данных» автоматически настраивает эту связь, но пользоваться ей необязательно (в отличие от 7.7).

Для начинающих есть статья на ИТС: «Методические рекомендации» / «Формы» / «Связь формы и элементов управления с данными».

см. также

Книга знаний: v8: Передача данных из одной формы в другую;

Знакомство с управляемой формой 1С лучше всего начинать с реквизитов. Что такое реквизит управляемой формы?  По своей сути, это данные, которые привязаны именно к форме: они создаются, хранятся, отображаются (по возможности) и редактируются на форме. Вне контекста формы эти данные не могут существовать. Сам по себе реквизит не может отображаться на форме. Для этого служат элементы формы, которые связаны с реквизитами форм.

Научимся создавать простые реквизиты формы и размещать их на форме.

Управляемое приложение 1С 8.3

Для этого в конфигураторе 1С создадим пустую форму. Пусть это будет форма некой внешней обработки. В этой форме нас интересует закладка Реквизиты

Пустая управляемая форма

В этой закладке сейчас только один реквизит – основной. Он нас пока не интересует, работа с основным реквизитом эта тема отдельной статьи. Пока разберемся с простыми реквизитами.

Для того, чтобы добавить реквизит необходимо нажать на кнопку «Добавить реквизит» командной панели закладки «Реквизиты»

Добавить реквизит управляемой формы

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

Палитра свойств реквизита управляемой формы

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

Для тренировки создадим четыре реквизита с типом строка:  Фамилия, Имя, Отчество и ФИО. И один реквизит с типом дата: ДатаРождения.

Реквизиты на управляемой форме

Разместим реквизиты на форме. Сделать это просто: необходимо нужный реквизит мышкой «перетащить»  из закладки «Реквизиты» на закладку «Элементы»

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

Реквизиты на управляемой форме 1С

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

Свойство ПутьКДанным элемента формы

Если нажать на кнопку «…» свойства ПутьКДанным, то у разработчика есть возможность поменять привязанный к этому элементу реквизит формы.

Изменяем свойство ПутьКДанным элемента формы

Сейчас научимся использовать реквизиты в программном коде. Из статьи, посвященной архитектуре управляемой формы 1С 8.3 Вы знаете, что выполнение кода на форме возможно под директивами &НаКлиенте &НаСервере и  &НаСервереБезКонтекста.  Доступ к реквизитам формы возможен только в процедурах и функциях, которые выполняются на &НаКлиенте и &НаСервере.

Для наглядности выполним небольшую задачу: создадим команду, при выполнении которой Фамилия, Имя, Отчество и дата Рождения будут складываться в ФИО + Дата рождения.

Создадим локальную команду формы. Для этого на закладке «Команды» в подзакладке «Команды формы» необходимо нажать на кнопку «Добавить»

Добавление команды управляемой формы 1С

После создания команды, справа откроется палитра свойств новой команды, где мы зададим её название.

Название команды управляемой формы 1С

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

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

Мы выберем расположение НаКлиенте, поскольку для тех действий, которые мы хотим осуществить вполне хватит клиентского контекста.

После выбора места расположения обработчика, в модуле формы будет создана процедура под директивой &НаКлиенте, в которой мы напишем несложный код. В этом коде к реквизитам формы мы будем обращаться просто как к переменным. Мы можем это делать в клиентском и серверном контексте.

&НаКлиенте
Процедура СформироватьФИО(Команда)

    ФИО = Фамилия + " " +
               Имя + " " +
               Отчество + ", д.р. " +

    Формат(ДатаРождения, "ДЛФ=D");

КонецПроцедуры

В этом коде, я преобразовал дату в строку при помощи функции формат.

Обратите внимание, после создание процедуры в палитре свойств команды свойство Действие заполнилось названием нашей новой процедуры.

Свойство Действие команды управляемой формы

И последним шагом нам осталось нашу команду разместить на управляемой форме. Просто перетащим её мышкой в закладку Элементы

Перетаскиваем команду в закладки Элементы

При этом на форме появится кнопка.

Сохраним обработку и попробуем выполнить нашу команду.

Работа команды на управляемой форме

Как видите, к реквизитам формы в модуле формы можно обращаться напрямую, как к переменным, но только если процедура или функция выполняется под директивами &НаКлиенте и &НаСервере.

Управляемое приложение 1С 8.3

Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.

Книга «Основы разработки в 1С: Такси»

Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

  1. Без сложных технических терминов;
  2. Более 600 страниц практического материала;
  3. Каждый пример сопровождается рисунком (скриншот);
  4. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!

Промо-код на скидку в 15% — 48PVXHeYu

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;


Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей

Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009

Формы


Формы

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

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


Формы

Наряду с этим, могут существовать общие формы, не принадлежащие конкретным объектам конфигурации — общие формы.


Формы

Основные формы

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

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


Формы

А у документа Поступление товаров и услуг состав основных форм будет уже другим:


Формы

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

Автогенерируемые формы

Важной особенностью системы 1С:Предприятие 8 является механизм автогенерируемых форм. Этот механизм освобождает разработчика от необходимости создания всех возможных форм для каждого из объектов конфигурации. Разработчику достаточно добавить новый объект конфигурации, а система сама сгенерирует в нужные моменты работы пользователя необходимые формы для отображения информации, содержащейся в этом объекте.

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

Связь формы с данными

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

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


Формы

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

Структура формы

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

Отображаемая часть формы (видимая пользователю) описывается как дерево, включающее элементы формы.


Формы

Элементы могут представлять собой поля ввода, флажки, переключатели, кнопки и т. д. Кроме того, элемент может быть группой, включающей другие элементы. Группа может представляться как панель с рамкой, панель со страницами (закладками), собственно страница, командная панель. Помимо этого элемент может представлять собой таблицу, которая тоже включает элементы (колонки). Структура элементов описывает то, как будет выглядеть форма.


Формы

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


Формы

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


Формы

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


Формы

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


Формы

Механика работы форм

Функционирование управляемых форм имеет следующие отличительные особенности:

  • Форма существует и на клиенте и на сервере
    Она осуществляет клиент-серверное взаимодействие (передачу данных и оформительских свойств элементов)
  • Форма не работает с прикладными объектами
    В форме используются специальные универсальные объекты ДанныеФормы… Прикладные объекты работают только на сервере и только во время выполнения некоторых операций


Формы

При открытии формы:

  • Объект считывается из базы данных
  • Объект конвертируется в данные формы
  • Объект удаляется из памяти
  • Данные формы передаются на клиента 

При записи данных из формы:

  • Данные формы получаются с клиента
  • Данные формы конвертируются в объект
  • Объект записывается в базу данных
  • Объект удаляется из памяти


Формы

Редактор форм

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

Понравилась статья? Поделить с друзьями:
  • Что такое платежные реквизиты карты сбербанка
  • Что такое позитивный вариант развития бизнеса
  • Что такое поиск по реквизитам карточка поиска
  • Что такое полный список реквизитов документов
  • Что такое предписание от управляющей компании