Инструменты пользователя

Инструменты сайта


1c:общие:формы

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
1c:общие:формы [2014/07/14 18:25]
admin создано
1c:общие:формы [2014/12/25 07:41] (текущий)
admin Добавил про программное открытие формы
Строка 1: Строка 1:
 ====== Формы ====== ====== Формы ======
 +Формы используются для удобного отображения данных базы пользователю. С формами можно работать как пользователь интерактивно, так и программист управляя поведением и внешним видом формы с помощью кода.
 +
 ===== Типы форм ===== ===== Типы форм =====
 Формы делятся на два типа: обычные и управляемые, обычные формы это формы которые были в линейке 8 с самого начала и по текущий момент. Смысл этих форм заключается в том что форма в прямом смысле рисуется разработчиком, он указывает на то место (вплоть до пикселя)где будут располагаться элементы формы. Обычные формы работают только в толстом клиенте, в то время когда управляемые формы работают и в толстом и в тонком клиенте. Управляемые формы доступны в версии 1С начиная с 8.2 и выше и только когда конфигурация настроена как "Управляемое приложение". В тонком клиенте возможно использование только управляемых форм. Управляемую форму нельзя нарисовать мышкой. Элементы в ней не рисуются, а декларируются или объявляются, что накладывает некоторые ограничения. Вы можете указать что реквизиты будут группироваться горизонтально а не вертикально к примеру, но нельзя указать системе: "вон то поле ввода на 2пикселя выше пусть будет". В управляемых формах код делится строго на клиентский и серверный. В обычных формах можно встретить некоторые серверные ограничения только в режиме клиент-сервер и только для функций которые не расположены в модулях форм. Формы делятся на два типа: обычные и управляемые, обычные формы это формы которые были в линейке 8 с самого начала и по текущий момент. Смысл этих форм заключается в том что форма в прямом смысле рисуется разработчиком, он указывает на то место (вплоть до пикселя)где будут располагаться элементы формы. Обычные формы работают только в толстом клиенте, в то время когда управляемые формы работают и в толстом и в тонком клиенте. Управляемые формы доступны в версии 1С начиная с 8.2 и выше и только когда конфигурация настроена как "Управляемое приложение". В тонком клиенте возможно использование только управляемых форм. Управляемую форму нельзя нарисовать мышкой. Элементы в ней не рисуются, а декларируются или объявляются, что накладывает некоторые ограничения. Вы можете указать что реквизиты будут группироваться горизонтально а не вертикально к примеру, но нельзя указать системе: "вон то поле ввода на 2пикселя выше пусть будет". В управляемых формах код делится строго на клиентский и серверный. В обычных формах можно встретить некоторые серверные ограничения только в режиме клиент-сервер и только для функций которые не расположены в модулях форм.
 +
 +===== Программное открытие формы =====
 +Программно открыть форму можно с помощью метода "Открыть форму". Этот метод доступен  в различных контекстах(форма может существовать и быть открыта только на клиенте) и отличается при использовании обычного и управляемого приложения(в толстом клиенте нельзя передать параметру в форму) но в целом имеет следующие основные параметры:
 +<wrap hi>ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>)</wrap>
 +  * Имя формы: имя открываемой формы, так как для объекта метаданных могут быть не определены никакие формы, возможно указать просто тип формы который надо открыть, например "ФормаСписка" или "ФормаЭлемента".
 +  * Параметры -  параметры передаваемые в форму, с их помощью можно управлять отборами, устанавливать строку в нужном месте, или просто передавать в форму нужные параметры.
 +  * Владелец – используется для организации подбора, обработкой результата выбора если форма открыта для подбора, будет заниматься форма или элемент указанные в этом параметре, так же есть возможность закрывать форму, если закрыта форма-владелец.
 +  * Уникальность – этот определенный ключ отвечающий за уникальность формы, если этот параметр указан, то при открытии формы будет произведен поиск формы открытой с этим ключом и если такая будет найдена, то будет активирована уже открытая форма.
  
 ===== Принадлежность форм ===== ===== Принадлежность форм =====
Строка 26: Строка 36:
 ===== "Толстые" объекты на управляемой форме. ===== ===== "Толстые" объекты на управляемой форме. =====
 Так как на тонком клиенте недостуны, данные базы данных, серверные объекты(например [[1c:коллекции:таблица_значений|таблица значений]]) то на форме их как таковые разместить нельзя в то время, когда они как типы для реквизитов доступны. Здесь дело в том что, при добавлении на форму, добавляется не табличное поле, и не сам список элементов справочника номенклатура к примеру, а коллекция например типа ''ДанныеФормыКоллекция'' или ''ДанныеФормыСтруктура'' с урезанным функционалом, суть которой заключается в том, чтобы отображать данные таблицы значений которая является реквизитом формы или документа. Список методов, доступных для этих типов, позволяет вести комфортную работу, с данными тех объектов которые они отображают. Так как на тонком клиенте недостуны, данные базы данных, серверные объекты(например [[1c:коллекции:таблица_значений|таблица значений]]) то на форме их как таковые разместить нельзя в то время, когда они как типы для реквизитов доступны. Здесь дело в том что, при добавлении на форму, добавляется не табличное поле, и не сам список элементов справочника номенклатура к примеру, а коллекция например типа ''ДанныеФормыКоллекция'' или ''ДанныеФормыСтруктура'' с урезанным функционалом, суть которой заключается в том, чтобы отображать данные таблицы значений которая является реквизитом формы или документа. Список методов, доступных для этих типов, позволяет вести комфортную работу, с данными тех объектов которые они отображают.
 +
 ===== Преобразование Реквизит – Данные формы и обратно. ===== ===== Преобразование Реквизит – Данные формы и обратно. =====
 Несмотря на то, что типы ''ДанныеФормыКоллекция'', имеют достаточно широкий функционал, иногда возникает необходимость на сервере получить, "оригинал" - тот объект который отображает форма. Особенно это актуально для реквизитов формы, ведь данные реквизитов объекта, можно получить из самого объекта. Для таких случаев существует метод ''РеквизитФормыВЗначение()'', например:  Несмотря на то, что типы ''ДанныеФормыКоллекция'', имеют достаточно широкий функционал, иногда возникает необходимость на сервере получить, "оригинал" - тот объект который отображает форма. Особенно это актуально для реквизитов формы, ведь данные реквизитов объекта, можно получить из самого объекта. Для таких случаев существует метод ''РеквизитФормыВЗначение()'', например: 
Строка 34: Строка 45:
 Бывают случаи когда объект изменяется не из формы а с помощью какой то процедуры, которая находится в модуле объекта или в любом другом месте. Если действие было инициализировано с помощью кнопки на форме, то после, например таких действий: Бывают случаи когда объект изменяется не из формы а с помощью какой то процедуры, которая находится в модуле объекта или в любом другом месте. Если действие было инициализировано с помощью кнопки на форме, то после, например таких действий:
 <code 1c> <code 1c>
-ТекущийОбъект = РеквизитФормыВЗначение («Объект»)+ТекущийОбъект = РеквизитФормыВЗначение ("Объект")
 ИмяМодуля.КакаяТоПроцедура(ТекущийОбъект); ИмяМодуля.КакаяТоПроцедура(ТекущийОбъект);
 //или //или
 ТекущийОбъект.ПроцедураФункцияМодуля(); ТекущийОбъект.ПроцедураФункцияМодуля();
 </code> </code>
-Вы не увидите изменений на форме, все дело в том, что форма делает лишних вызовов к серверу без необходимости и как следствие не в курсе, что с объектом, что-то происходило. В этом случае надо перечитать данные объекта, следующим образом: +Вы не увидите изменений на форме, все дело в том, что форма не делает лишних вызовов к серверу без необходимости и как следствие не в курсе, что с объектом, что-то происходило. В этом случае надо перечитать данные объекта, следующим образом: 
-<code 1c>ЗначениеВРеквизитФормы(ТекущийОбъект, «Объект»)</code> +<code 1c>ЗначениеВРеквизитФормы(ТекущийОбъект, "Объект")</code>
1c/общие/формы.1405347949.txt.gz · Последнее изменение: 2014/07/14 18:25 — admin