1с этотобъект получить форму

Обновлено: 07.07.2024

Открытие форм

Область применения: управляемое приложение, мобильное приложение.

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

Рекомендация обусловлена соображениями

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

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

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

Параметры формы из этого набора могут быть указаны в вызывающем коде при открытии формы ( ОткрытьФорму ).

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

следует по той же причине использовать параметры формы:

ОткрытьФорму("ОбщаяФорма.ПутеводительПоСистеме", Новый Структура("РежимОткрытия", "Приветствие"));

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

ФормаВопроса = ПолучитьФорму("ОбщаяФорма.ФормаВопроса");
ФормаВопроса.ОткрытьМодально();
Если ФормаВопроса.БольшеНеПоказыватьНапоминание Тогда
// …

следует использовать процедуры-обработчики оповещений, которые будут вызваны при завершении работы пользователя с формой:

Оповещение = Новый ОписаниеОповещения("БольшеНеПоказыватьНапоминаниеЗавершение", ЭтотОбъект);
ОткрытьФорму("ОбщаяФорма.ФормаВопроса". Оповещение, РежимОткрытияОкнаФормы.БлокироватьВеcьИнтерфейс);
.

&НаКлиенте
Процедура БольшеНеПоказыватьНапоминаниеЗавершение(БольшеНеПоказыватьНапоминание, Параметры) Экспорт

Если БольшеНеПоказыватьНапоминание = Неопределено Тогда
Возврат;
КонецЕсли;

Если БольшеНеПоказыватьНапоминание Тогда
// …

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

5. Другие ограничения:

  • Обработчик события формы ПриОткрытии не должен содержать код по открытию какой-либо другой формы, так как это может привести к нарушению порядка отображения окон. В этом случае рекомендуется использовать обработчик ожидания на короткий интервал или открывать другие формы интерактивно, например, по нажатию на кнопку.
  • Не рекомендуется выполнять программное открытие и закрытие формы в одном обработчике. Такие действия должны быть разнесены по времени. Например, закрытие формы можно выполнять в обработчике ожидания.
  • При использовании в конфигурации Библиотека стандартных подсистем и разработке форм (рабочих мест), предназначенных только для внешних пользователей, следует явно блокировать открытие таких форм в сеансах "обычных" пользователей. Для этого следует устанавливать параметр Отказ при создании формы на сервере с помощью функции ЭтоСеансВнешнегоПользователя общего модуля Пользователи или ПользователиКлиент :

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Не ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;

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

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

Расчет начислений сотрудников: ошибка "Процедура уже определена".
1С выдает следующую ошибку: ""Отчет.НачисленияСотрудникам.МодульОбъекта": Процедура или функция с.


Переменная не определена
Доброго времени суток! Позавчера пришлось столкнуться с 1с Предприятие 8.2 Начал делать.

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

ElTonio, У вас, наверное, платформа 8.2 или стоит совместимость с 8.2 В 8.3 все должно работать Прочел в сети несколько страниц, на которых идет речь об обновлении свойства управляемой формы. Там теперь с новой версии следует писать "ЭтотОбъект".

Это где же ты такое прочел.

По коду видно что он написан в модуле формы.
Обрати внимание на реквизиты формы? Что там? Есть там переменная ЭтотОбъект?

Какие там есть переменные?

Dethmontt, при всем уважении. Не должно быть в реквизитах ЭтотОбъект. В переменной "ЭтотОбъект" хранится объект типа УправляемаяФорма. СП:

"ЭтотОбъект (ThisObject)
Использование:

Только чтение.
Описание:

Тип: ДокументОбъект.<Имя документа>.
Содержит сам объект базы данных. Предназначено, в основном, для получения данного объекта встроенного языка в модуле объекта или модуле формы"

Введено в 8.3, не работает в 8.2 или в режиме совместимости с 8.2

polax, как на клиенте может храниться тип ДокументОбъект .

Зачем тогда функции РеквизитФормыВЗначение(), ДанныеФормыВЗначение() ?

Добавлено через 1 минуту
ЭтотОбъект
Доступность:

Сервер, толстый клиент, внешнее соединение.

Dethmontt, а вот здесь 100% ошибка СП. Работает в тонком клиенте! И описание тоже хромает. "ЭтотОбъект" - Значение УправляемаяФорма и Тип - УправляемаяФорма. Это не Объект в стандартном понимании.

В форме есть реквизит Объект - тип СтруктураДанныхФормы

Объект - это сконвертированный для формы ЭтотОбъект - тип ДокументОбъект (что бы его можно было хранить на клиенте)

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

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

Dethmontt, а вот здесь 100% ошибка СП. Работает в тонком клиенте! И описание тоже хромает. "ЭтотОбъект" - Значение УправляемаяФорма и Тип - УправляемаяФорма.

Добавлено через 1 минуту
polax, да назвать можно как угодно.

По сути это старая переменная ЭтаФорма

Добавлено через 5 минут

Зачем плодить однотипные свойства.

Что бы сишникам было проще привыкать код писать? this

Добавлено через 4 минуты
polax, да в СП 8.3.10

УправляемаяФорма (ManagedForm)
ЭтотОбъект (ThisObject)
Использование:

Только чтение.
Описание:

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

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент).

Форма (Form)
ЭтаФорма (ThisForm)
Использование:

Только чтение.
Описание:

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

Читайте также: