Профессия — 1С » Дополнительные свойства объектов

Профессия — 1С

Рукопашный бой Карташ

Категории

Дополнительные свойства объектов

рубрики: Платформа 8.3 | Дата: 17 июня, 2018

Описание

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




И вместе с тем создавать в метаданных отдельный реквизит объекта нецелесообразно, поскольку эти данные нужны только на время программной обработки объекта, а после сохранения объекта в базе они уже не будут иметь никакого смысла. Для таких случаев можно использовать специальное свойство объекта — ДополнительныеСвойства. Это свойство представляет из себя структуру, которую разработчик может заполнять по своему усмотрению.

Пример

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




Для этого в обработке напишем вот такой код:




&НаСервере
Процедура СоздатьЭлементНаСервере()

	НовыйТовар = Справочники.Товары.СоздатьЭлемент();
	НовыйТовар.Наименование = "Велосипед";

	НовыйТовар.ДополнительныеСвойства.Вставить("ПрограммноеСоздание", Истина);

	НовыйТовар.Записать();

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

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




При записи из пользовательского режима:

При записи из обработки:

А теперь доработаем процедуру ПередЗаписью() таким образом, чтобы при записи из обработки у нас выполнялась какая-то процедура по заполнению реквизитов объекта по умолчанию:




Процедура ПередЗаписью(Отказ)

	ЭтоПрограммноеСоздание = Ложь;

	Если ЭтотОбъект.ДополнительныеСвойства.Свойство("ПрограммноеСоздание", ЭтоПрограммноеСоздание)
		И ЭтоПрограммноеСоздание Тогда

		ЗаполнитьРеквизитыПоУмолчанию();

	КонецЕсли;

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

В заключение хочется отметить, что ДополнительныеСвойства используются только для чтения. Изначально это свойство уже есть у объекта и можно только добавлять к этой структуре новые элементы (как рассмотрено в примере выше) или удалять соответственно.




А вот такой код вызовет ошибку:




ДопСвойства.Вставить("ПрограммноеСоздание", Истина);
ДопСвойства = Новый Структура;

ЭтотОбъект.ДополнительныеСвойства = ДопСвойства;

2 комментария на «“Дополнительные свойства объектов”»

  1. Никита:

    Отличная статья, поделитесь опытом, от куда Автор подчерпнул информацию об этом свойстве? Я ничего, кроме этой статьи, не нашел. Спасибо!

    • Owner:

      Документация, диск ИТС, синтакс-помощник.
      Ну а примеры использования можно в любой типовой конфигурации глобальным поиском найти 😉

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

   

2014 - 2021г. Профессия — 1С. Обмен опытом по программированию в 1С