что бы произвольной управляемой форме назначить основной реквизит
Реквизиты управляемой формы (1Cv8)
Содержание
Реквизиты формы
Набор реквизитов формы описывает состав данных, которые отображаются, редактируются или хранятся в форме. При этом реквизиты формы сами по себе не обеспечивают возможности отображения и редактирования данных. Для отображения и редактирования служат элементы формы (смотрите раздел «Элементы формы» данной главы), связанные с реквизитами формы. Совокупность всех реквизитов формы будем называть данными формы.
Важно! Необходимо помнить, что, в отличие от обычных форм, все данные управляемой формы должны быть описаны в виде реквизитов. Не допускается использование переменных модуля формы в качестве источников данных для элементов формы.
Имеется возможность назначить Основной реквизит формы, т. е. реквизит, который будет определять стандартную функциональность формы (расширение формы). Следует помнить, что основной реквизит у формы может быть только один.
Расширение формы – это дополнительные свойства, методы и параметры формы объекта УправляемаяФорма, характерные для объекта, являющегося основным элементом формы.
В процессе разработки формы можно явно задать возможность просмотра и редактирования конкретных реквизитов формы, в разрезе ролей, с помощью свойств Просмотр и Редактирование (подробнее смотрите раздел «Ролевая настройка формы» главы «Редакторы»). Кроме того, доступность того или иного реквизита в самой форме можно настраивать с помощью функциональных опций (подробнее о функциональных опциях можно посмотреть в главе «Управление интерфейсом конфигурации»).
Свойство реквизита формы Сохраняемые данные является признаком того, что интерактивное изменение реквизита будет приводить к попытке блокировки данных формы для редактирования, а также к автоматической установке признака модифицированности формы.
Типы данных, доступные в управляемой форме
Управляемая форма отличается от обычной формы также и типами данных, с которыми она работает. Если обычная форма работает с большинством типов, которые предоставляет 1С:Предприятие (в том числе и вида СправочникОбъект, ДокументОбъект и т. д.), то в управляемой форме можно выделить следующие категории типов:
Преобразование прикладных объектов в данные формы
Некоторые прикладные типы (такие как СправочникОбъект и т. д.) не существуют на стороне тонкого и Веб-клиентов (подробнее см. главу «Концепция управляемого приложения»). Поэтому для представления в форме таких прикладных типов в платформе введены специальные типы данных, предназначенные для работы в управляемых формах. Эта особенность управляемого приложения обуславливает необходимость выполнять преобразование прикладных объектов в данные формы (и обратно).
Используются следующие типы данных:
Прикладной объект представлен либо одним, либо несколькими элементами данных формы. В общем виде иерархия и состав данных формы зависят от сложности и взаимосвязи прикладных объектов управляемой формы.
Например, документ, содержащий табличную часть, будет представлен объектом типа ДанныеФормыСтруктура (собственно документ), которому подчинен объект типа ДанныеФормыКоллекция (табличная часть документа).
Важно! Во время разработки конфигурации важно помнить, что прикладные объекты доступны только на сервере, в то время как объектами данных форм можно пользоваться и на сервере, и на клиенте.
Передача данных между клиентской и серверной частями управляемой формы
Фактически можно сказать, что данные формы – это унифицированное представление данных различных прикладных объектов, с которыми форма работает единообразно и которые присутствуют и на сервере, и на клиенте. То есть форма содержит некоторую «проекцию» данных прикладных объектов в виде своих собственных типов данных и выполняет преобразование между ними при необходимости. Однако в случае если разработчик конфигурации реализует свой алгоритм обработки данных, то преобразование данных (из специализированных типов в прикладные и обратно) он должен выполнять самостоятельно.
При редактировании реквизитов формы в специализированном редакторе (подробнее см. раздел «Реквизиты формы» главы «Редакторы») имеется возможность влиять на передачу данных между клиентом и сервером во время работы формы. Для этого служит колонка редактора реквизитов Использовать всегда. Действие этого свойства различается для трех типов реквизитов:
Примечание. Следует помнить, что свойство, установленное у родительского реквизита, действует на все подчиненные реквизиты. Например, если свойство Использовать всегда снято у табличной части документа, то система считает, что это свойство снято и у всех подчиненных реквизитов (несмотря на фактическое состояние свойства).
Методы для преобразования данных прикладных объектов в данные формы
Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:
Важно! Методы, работающие с прикладными объектами, доступны только в серверных процедурах. Метод для копирования значений между данными формы доступен на сервере и на клиенте, так как не требует прикладных объектов в качестве параметров.
Во время конвертирования данных формы в прикладной объект нужно учитывать их совместимость.
Примечание. При выполнении стандартных действий (открытие формы, выполнение стандартной команды Записать и т. д.) формы с основным реквизитом, преобразование выполняется автоматически.
Приведем пример, как использовать преобразование данных в собственных алгоритмах.
Также у объекта УправляемаяФорма существуют методы, доступные на сервере:
Использование данных методов обычно удобнее, так как они, имеют, например, информацию о типе реквизита формы. Кроме того, метод РеквизитФормыВЗначение() выполняет установку соответствия данных формы и объекта, которая используется при формировании сообщений. Подробнее об этом можно прочитать в главе «Сервисные возможности навигации».
Приведем пример использования этих методов.
Программный интерфейс
ДанныеФормыДерево (FormDataTree)
Предназначен для моделирования дерева в данных управляемой формы.
ПолучитьЭлементы (GetItems)
Получает коллекцию элементов дерева верхнего уровня.
Доступность: клиент, сервер, тонкий клиент, веб-клиент.
НайтиПоИдентификатору (FindById)
Тип: Число. Идентификатор элемента дерева.
Получает элемент коллекции по идентификатору.
Доступность: клиент, сервер, тонкий клиент, веб-клиент.
ДанныеФормыЭлементДерева (FormDataTreeItem)
Элемент дерева данных формы.
ДанныеФормыКоллекцияЭлементовДерева (FormDataTreeItemCollection)
Элементы коллекции: ДанныеФормыЭлементДерева
Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [. ]. В качестве аргумента передается индекс элемента.
Коллекция элементов дерева.
Доступность: клиент, сервер, тонкий клиент, веб-клиент.
Особенности работы с деревом значений
Обновление дерева
Существует проблема падения платформы при обновлении дерева.
Если в дереве был развернут какой-либо узел и выбран подчиненный узел, то при обновлении дерева функцией ЗначениеВДанныеФормы происходит падение платформы.
Решение: перед обновлением нужно очищать дерево.
Программирование в 1С для всех
Знакомство с управляемой формой 1С лучше всего начинать с реквизитов. Что такое реквизит управляемой формы? По своей сути, это данные, которые привязаны именно к форме: они создаются, хранятся, отображаются (по возможности) и редактируются на форме. Вне контекста формы эти данные не могут существовать. Сам по себе реквизит не может отображаться на форме. Для этого служат элементы формы, которые связаны с реквизитами форм.
Научимся создавать простые реквизиты формы и размещать их на форме.
Для этого в конфигураторе 1С создадим пустую форму. Пусть это будет форма некой внешней обработки. В этой форме нас интересует закладка Реквизиты
В этой закладке сейчас только один реквизит – основной. Он нас пока не интересует, работа с основным реквизитом эта тема отдельной статьи. Пока разберемся с простыми реквизитами.
Для того, чтобы добавить реквизит необходимо нажать на кнопку «Добавить реквизит» командной панели закладки «Реквизиты»
После этого будет добавлен реквизит управляемой формы 1С с типом по умолчанию (строка) и справа откроется палитра свойств этого реквизита.
В этой палитре мы можем установить имя, заголовок, а так же тип реквизита управляемой формы.
Для тренировки создадим четыре реквизита с типом строка: Фамилия, Имя, Отчество и ФИО. И один реквизит с типом дата: ДатаРождения.
Разместим реквизиты на форме. Сделать это просто: необходимо нужный реквизит мышкой «перетащить» из закладки «Реквизиты» на закладку «Элементы»
Перетащим все реквизиты на формы, и с помощью кнопок «Вверх», «Вниз» удобно расположим их на форме.
Сейчас мы сделали такую примитивную форму, на которой расположили реквизиты. После того, как мы «перетащили» реквизит в элементы, то на форме был создан элемент формы. В нашем случае это поле формы. Если мы сейчас зайдем в палитру свойств поля ввода, то увидим, что он связан с реквизитом посредством свойства ПутьКДанным.
Если нажать на кнопку «…» свойства ПутьКДанным, то у разработчика есть возможность поменять привязанный к этому элементу реквизит формы.
Сейчас научимся использовать реквизиты в программном коде. Из статьи, посвященной архитектуре управляемой формы 1С 8.3 Вы знаете, что выполнение кода на форме возможно под директивами &НаКлиенте &НаСервере и &НаСервереБезКонтекста. Доступ к реквизитам формы возможен только в процедурах и функциях, которые выполняются на &НаКлиенте и &НаСервере.
Для наглядности выполним небольшую задачу: создадим команду, при выполнении которой Фамилия, Имя, Отчество и дата Рождения будут складываться в ФИО + Дата рождения.
Создадим локальную команду формы. Для этого на закладке «Команды» в подзакладке «Команды формы» необходимо нажать на кнопку «Добавить»
После создания команды, справа откроется палитра свойств новой команды, где мы зададим её название.
Но команда – это выполнение некоторых действий на форме. Чтобы действия осуществились необходимо создать обработчик команды. Для создания обработчика команды нужно нажать на кнопку «Лупа» свойства действия. После этого откроется окно выбора места размещения обработчика.
Мы выберем расположение НаКлиенте, поскольку для тех действий, которые мы хотим осуществить вполне хватит клиентского контекста.
После выбора места расположения обработчика, в модуле формы будет создана процедура под директивой &НаКлиенте, в которой мы напишем несложный код. В этом коде к реквизитам формы мы будем обращаться просто как к переменным. Мы можем это делать в клиентском и серверном контексте.
В этом коде, я преобразовал дату в строку при помощи функции формат.
Обратите внимание, после создание процедуры в палитре свойств команды свойство Действие заполнилось названием нашей новой процедуры.
И последним шагом нам осталось нашу команду разместить на управляемой форме. Просто перетащим её мышкой в закладку Элементы
При этом на форме появится кнопка.
Сохраним обработку и попробуем выполнить нашу команду.
Как видите, к реквизитам формы в модуле формы можно обращаться напрямую, как к переменным, но только если процедура или функция выполняется под директивами &НаКлиенте и &НаСервере.
Подробно вопросы работы с управляемыми формами в частности и с управляемым приложением в целом рассмотрены в книге «Основы разработки в 1С: Такси. Разработка управляемого приложения за 12 шагов». Эта книга станет настоящим подспорьем для тех, кто только начал знакомится с разработкой управляемого приложения.
Книга «Основы разработки в 1С: Такси» отлично подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
Промо-код на скидку в 15% — 48PVXHeYu
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы в соцсетях, и будьте в курсе всех новостей
Основной реквизит формы и расширения формы в 8.2
В документации на диске ИТС сказано:
> Функциональность формы определяется реквизитами формы и связанными с ними элементами управления. В большинстве случаев функциональность формы обеспечивается за счет выбора основного реквизита формы. Он определяет наличие расширения формы и обеспечивает поведение формы, специфическое для конкретного прикладного объекта.
У меня 2 вопроса к уважаемым участникам форума.
1) Что такое «основной реквизит формы»? Это то, что в окне с формой на закладке «Реквизиты» выделяется жирным шрифтом? Его как-то можно задать вручную? Или он только задаётся автоматически при создании формы и всё?
2) Что в этой фразе имеется в виду под расширением формы? И как именно основной реквизит формы определяет наличие расширения формы?
Принадлежность формы тому или иному объекту конфигурации не определяет состав данных, которые отображаются в форме. То, что форма принадлежит, например, справочнику Номенклатура, позволяет назначить ее одной из основных форм для этого справочника, но никак не определяет, какие же именно данные будет отображать эта форма, и каково будет ее поведение.
Для того чтобы связать форму с данными, используются реквизиты формы, в которых указывается перечень данных, отображаемых формой. Все формы, сами по себе, имеют одинаковое поведение, независимо от того, какие данные они отображают. Однако один из реквизитов формы может быть назначен для нее основным (он выделяется жирным шрифтом), и в этом случае стандартное поведение формы и ее свойства будут дополнены в зависимости от того, какой тип имеет основной реквизит формы.
То есть изменение стандартного поведения формы и её дополнительные свойства и называются расширением формы?
Возможно ли программно изменить основной реквизит формы?
Не выходит. при добавлении в командную панель группы подменю там надо указать источник комманд, выбор не множественный. там доступны либо глобальные команды командной панели либо форма либо списки из формы на закладках, ни один вариант не подходит, я его заполнять не стал и создал подчиненный элемент кнопка, там можно выбрать команду но только команду формы журнала, а в них перетаскивание команд из документов не возможно, придется в ручную дублировать все команды всех документов и создавать под них все кнопки. печаль. плюс в командах надо както передать ссылку на текущий документ из текущей закладки видимо както так (Этаформа.ПодчиненныеЭлементы.ГруппаСтраницы.ТекущаяСтраница.ПодчиненныеЭлементы.СписокКомандировки.ТекущаяСтрока). вобщем вариант не получился.
хотя если честно то все работает в таком варианте, единственное не разобрался как скрывать кнопки в списке выбора при смене закладок.
достаточно муторно дублировать все команды из всех документов (штук 20 минимум), плюс их надо немного модифицировать изза того что вызов серверной процедуры формирования печатной формы происходит по иному.
в общем перенес группу подменю в командную панель закладки (для каждой будет своя со своим набором команд) и пропала необходимость скрывать команды при смене закладки.
всем спасибо. все сделал. единственно както не очень красиво.:)
Но основной реквизит сменить Вы не сможете и вообще список определяется не этим, а через служебный справочник «ИдентификаторыОбъектовМетаданных», глубоко не копал этот механизм. Но кратко адо делать так:
1. Содержимое процедур ДополнительныеОтчетыИОбработки.ПриСозданииНаСервере(ЭтаФорма) и УправлениеПечатью.ПриСозданииНаСервере(ЭтаФорма) тащим к себе в модуль формы.
2. В их тексте есть вызов процедуры получения назначения. Вот после неё надо результат поправить своими строчками кода. Т.е. например после вызова
в структуре параметров подменить поле «СсылкаРодителя» на то, которое будет зависеть от текущей закладки
3. При смене закладок очистить подменю и вызвать эти процедуры
Если у Вас не БСП, то лучше чем Вы сами Вам никто не подскажет.
Что бы произвольной управляемой форме назначить основной реквизит
10.7 Что бы произвольной управляемой форме назначить основной реквизит.
10.8 Что бы произвольной обычной форме назначить основной реквизит.
10.9 При наличии одного основного реквизита формы можно ли добавить еще один основной реквизит?
10.10 Для чего нужны основные формы прикладных объектов?
10.11 В качестве основной формы можно назначить?
10.12 Как определяется рабочая область рабочего стола?
10.13 Разместить формы в области рабочего стола можно:
10.14 Рабочий стол можно отобразить:
10.15 Управляемые формы списков можно отобразить:
10.16 Настройка формы в режиме исполнения позволяет:
10.17 Настройка списка в режиме исполнения позволяет:
10.18 Какие возможности по настройке порядка обхода элементов в управляемой форме существуют в системе 1С:Предприятие 8?
10.19 Панель навигации может существовать:
10.20 Параметры формы предназначены:
10.21 При наличии одного ключевого параметра можно ли добавить еще один ключевой параметр формы?
10.22 Чем отличается ключевой параметр формы от обычного?
10.23 Для добавления команды в виде кнопки на управляемой форме можно:
10.24 Для добавления команды в виде кнопки на управляемой форме можно:
10.25 Для добавления команды в виде кнопки на обычной форме можно:
10.26 С помощью элемента управления «Индикатор» можно:
10.27 На рисунке представлена:
10.28 Поведение элементов управления.
10.29 С помощью элемента управления «Переключатель» можно:
10.30 Возможность системы создания «налету» форм по умолчанию в режиме «1С:Предприятие».
10.31 Какой из элементов управления предназначен для интерактивного анализа многомерных данных в графическом виде?
10.32 Для хранения значения элемента управления «Переключатель» можно использовать:
10.33 При использовании свойства диаграммы «МаксимумСерий-Количество», если количество серий превышает максимальное значение:
10.34 Для чего используются привязки в обычной форме?
10.35 При расположении в панели обычной формы элементов управления.
10.36 С помощью кнопки панели инструментов «Элементы управления, указанной на рисунке, будут созданы:
10.37 Значение типа «ЗначениеДиаграммы» позволяет получить:
10.38 Как включить возможность интерактивной перенастройки порядка обхода элементов управления обычной формы?
10.39 Элемент управления «Надпись» предназначен:
10.40 Свойство диаграммы «БазовоеЗначение» содержит:
10.41 При размещении элементов управления в форме нельзя.
10.42 Если для элемента управления «Надпись» в качестве источника данных указан реквизит справочника, то выводимая надписью информация будет определяться:
10.43 Сколько может быть создано форм, подчиненных справочнику «Номенклатура»?
10.47 Список значений, используемый в элементе управления «Поле выбора», может быть сформирован:
10.48 Можно ли, нажав на картинку, выполнить некоторые действия?
10.49 Для выбора значений из списков можно использовать следующие элементы управления:
10.50 С помощью элемента управления «Поле текстового документа» можно отображать и редактировать:
10.51 Элемент управления «Разделитель» позволяет:
10.52 Визуально объединять элементы управления, размещенные в форме, можно с помощью:
10.53 Поясняющая информация на элементе управления «Кнопка» может быть представлена в виде:
10.54 В качестве обработчика события «Нажатие» элемента управления «Кнопка» может быть:
10.55 Можно ли при нажатии на элемент управления «Кнопка» осуществить вызов подменю?
10.56 Сколько элементов управления «Командная панель» расположено на форме?
10.57 Для управления информацией, расположенной в форме, элемент управления «Командная панель» может содержать:
10.58 Каким образом для элемента управления «Командная панель» реализовать возможность его автоматического заполнения?
10.59 В конфигурацию добавлен новый справочник «Договора», подчиненный справочнику «Контрагенты». Каким образом, в режиме Конфигуратора, необходимо модернизировать основные формы списка и элемента справочника «Контрагенты», чтобы для конкретного контрагента имелась возможность просмотреть его договора? Каждая из форм имеет автоматически заполняемую командную панель.
10.60 Свойство «Вспомогательная» элемента управления «Командная панель» предназначено:
10.61 Элемент управления «Поле табличного документа» предназначен для размещения в форме:
10.62 Элемент управления «Табличное поле» предназначен для размещения в форме:
10.63 Данные в элементе управления «Табличное поле» могут быть отображены:
10.64 Можно ли одновременно создать элемент управления «Поле ввода» вместе с поясняющей надписью, представляющей элемент управления «Надпись»?
10.65 Элемент управления «Поле ввода» предназначен для:
10.66 Тонкая прерывистая линия красного цвета в поле ввода контрагента означает:
10.67 Если в качестве типа значения для элемента управления «Поле ввода» выбрано «СправочникСсылка.Номенклатура», то можно ли организовать быстрый выбор значения этого поля, набирая название конкретной позиции номенклатуры непосредственно в самом поле ввода?
10.68 Состав кнопок, расположенных справа у элемента управления «Попе ввода», определяется:
10.69 Какую кнопку необходимо создать у элемента управления «Поле ввода», чтобы для выбора значения можно было использовать выпадающий список?
10.70 Можно ли в один элемент управления «Поле ввода» вводить значения разных типов?
10.71 При ситуации, отображенной на картинке, если обратиться к «Сотрудник» в модуле формы документа, то.
10.72 На рисунке представлена:
10.73 В модуле объекта справочника «Номенклатура» объявлена процедура со словом «Экспорт». Может ли она быть вызвана «напрямую» из модулей подчиненных форм?
10.74 На рисунке представлена:
10.75 Различается ли набор свойств у элемента управления «Поле ввода», созданного в форме и расположенного в табличном поле этой формы?
10.76 Свойство «Тип значения» элемента управления формы.
10.77 При обращении к форме «извне» для считывания данных.
10.78 На рисунке представлена:
10.79 Для чего предназначены элементы управления?
10.80 Каким образом в основной форме списка регистра сведений отобразить список элементов справочника «Подразделения»?
10.81 Что произойдет, если нажать кнопку командной панели, отмеченную на рисунке?
10.82 Что произойдет, если нажать кнопку командной панели, отмеченную на рисунке?