Управляемые формы новый объект

Управляемые формы новый объект

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

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

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

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

Последовательность событий, которые происходят при открытии формы нового элемента, можно представить следующей схемой:

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

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

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

  • при интерактивном создании нового объекта
  • при вводе на основании
  • при выполнении метода объекта Заполнить()
Читайте также:  Kyocera постоянно добавляет тонер

При этом параметр ДанныеЗаполнения , передаваемый в этот обработчик, может иметь различные значения в зависимости от того, каким образом создается новый элемент. Например, он может иметь тип ссылки, если новый объект вводится на основании. Или он может иметь тип Структура , если новый объект создается интерактивной командой из списка, в котором установлен отбор. В этом случае структура будет содержать значения элементов отбора этого списка. Также этот параметр может иметь тип Неопределено , если новый элемент создается интерактивной командой из панели действий. То есть в своем алгоритме начального заполнения полезно анализировать этот параметр.

Подробнее о событии ОбработкаЗаполнения можно прочитать в синтакс-помощнике: ПрикладныеОбъекты — — Объект — События .

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

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

Если Параметры.Ключ.Пустая() Тогда

Сообщить("Создается новый объект");

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

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

Читайте также:  Assassins creed origins метеоритная руда

Аналог ЭтоНовый() в управляемом приложении

Чтобы выяснить новый объект или нет, необходимо использовать конструкцию вида:

Если объект записан в базу данных, он содержит ссылку на объект — Ключ. Если ключ пустой- объект новый.

Другие статьи по 1С:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

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

Как проверить объект базы данных?

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

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

С помощью объекта. К большинству форм привязан основной реквизит – часто это именно тот объект, который мы открываем. И с помощью проверки на наполненность его реквизита «Ссылка» можно получить информацию о существовании его в базе данных. Этот метод работает только на тех управляемых формах, где в качестве объекта выступает элемент конфигурации, имеющий ссылку.

Читайте также:  Dvd проигрыватель не воспроизводит диск

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

Ссылка на основную публикацию
Adblock detector