Параметры формы значениязаполнения 1с

Обновлено: 01.07.2024

Для конвертирования прикладных объектов в данные формы и обратно существует набор глобальных методов:

  • ЗначениеВДанныеФормы(),
  • ДанныеФормыВЗначение(),
  • КопироватьДанныеФормы().

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

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

  • ЗначениеВДанныеФормы() ‑ преобразует объект прикладного типа в данные формы.
  • ДанныеФормыВЗначение() ‑ преобразует данные формы в объект прикладного типа.
  • КопироватьДанныеФормы() ‑ производит копирование данных формы, обладающих совместимой структурой. Возвращает значение Истина, если копирование произведено, или Ложь, если структура объектов несовместима.

При преобразовании данных формы в прикладные объекты и обратно используется кеширование объектов, но при этом выполняется проверка актуальности версии объекта в кеше.

ПРИМЕЧАНИЕ. При выполнении стандартных действий (открытие формы, выполнение стандартной команды Записать и т. д.) в форме с основным реквизитом преобразование выполняется автоматически.

Приведем пример, как использовать преобразование данных в собственных алгоритмах.

Также у объекта ФормаКлиентскогоПриложения существуют методы, доступные на сервере:

  • ЗначениеВРеквизитФормы() ‑ выполняет преобразование объекта прикладного типа в заданный реквизит формы.
  • РеквизитФормыВЗначение() ‑ преобразует реквизит данных формы в объект прикладного типа.

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

ВНИМАНИЕ! Колонки реквизитов, не связанные с данными , не участвуют в преобразовании значений между данными формы и объектами информационной базы и обратно. Колонки, отсутствующие в данных объекта, очищаются при преобразовании в данные формы.

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

В качестве первого параметра методов РеквизитФормыВЗначение() и ДанныеФормыВЗначение() могут выступать только реквизиты формы следующих типов:


Итак, что же такое параметр?

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

Зачем нужен параметр?

Параметр нужен для передачи в форму дополнительных значений. Например: откуда открыта форма.

Как передать параметр?

Параметр передается в форму при открытии. Например:

Как получить параметр в открывшейся форме?

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

Как передать несколько значений?

Поскольку параметр может принимать любое значение, он может принимать значение типа Список. Пример

Пример обработки его в открывшейся форме:


Что такое контекст формы?

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

Как работать с контекстом?

Все довольно просто. Для того, чтобы с контекстом работать, его надо сначала передать.
Передается он с помощью параметра. Например:

Но правильнее будет воспользоваться такой процедурой в глобально модуле:

использовать ее нужно так:

Для закрепления полученных знаний приведем практический пример.

Создадим тестовую обработку, и назовем ее Пример. Добави на нее кнопку Закрыть для закрытия формы. Теперь добавим на нее Текстовый реквизит и пропишем ему в поле Формула ТР. Также в модуле формы пропишем:

Теперь откроем форму списка справочника Номенклатура и добавим туда кнопку. В формуле кнопки напишем

Запустите 1С, откройте справочник номенклатуры, нажмите кнопку. Откроется форма и там будет наименование выбранной номенклатуры. Мы передали параметр.
Теперь передадим несколько значений. У кнопки поменяем формулу на ОткрытьПример(). Опишем процедуру:

В обработке перепишем:

Пробуем. В зависимости от того, группа или нет, текущий элемент, в обработке пишется полное наименование или обычное.

Теперь поработаем с контекстом. Перепишем процедуру ОткрытьПример:

Изменим и обработку:

В текстовом реквизите на обработке в формулу пропишем Надпись() и приделаем туда еще одну кнопку Обновить у которой в формулу пропишем Форма.Обновить()

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

Теперь в функции какого-нить текстового реквизита (например ИнформационнаяНадпись()), пропишем такие строки:


Рис 1 Типы значений, с которыми можно связать элемент Таблица управляемой формы

Более полный набор свойств и методов ( событий) элемента
Таблица доступен, когда таблица связана с реквизитом типа ДинамическийСписок . Например, доступно событие ПриПолученииДанныхНасервере, которое вызывается на сервере после получения данных динамическим списком
Такое событие у элемента Таблица не доступно, когда она
связана с реквизитом типа ТаблицаЗначений. Отметим также, что событие ПриВыводеСтроки также недоступен если форма является
управляемой.

Одни из основных отличий элемента Таблица управляемой формы от от элемента таблицы обычной формы для толстого клиента заключается в том, что:

  • Событие ПриВыводеСтроки недоступен
  • Колонка (Поле) не отображается в форме если не заполнено свойство ПутьКДанным (См рис 2)

Как создавать вычисляемое поле в таблице формы, связанной с типом ТаблицаЗначений ?

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


Рис 3. Метаданные документа Заявки

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

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


Рис 4 . Структура реквизитов

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

В программном коде модули формы документа работается с реквизитом формы ТЗаказы. При открытии формы, данные реквизита объекта Заказы копируются в таблицу значении формы ТЗаказы, а при записи документа наоборот.

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

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

При открытии формы документа я заполняю данные табличной части формы ТЗаказы:

Перед записью документа переносим данные таблицы ТЗаказы в таблицу объекта Заказы

Форма документа документа показа на рис 5. В первой колонки отображается вычисляемое поле с помощью коллекцией картинок в качестве представления значения .


Рис 5 Форма не типового документа Заявка

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