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

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

Категории

Свойство ОбменДанными

рубрики: УРБД | Дата: 1 Сентябрь, 2017

Если вы в любой типовой конфигурации сделаете глобальный поиск по слову ОбменДанными, то увидите массу ссылок на него. И в общих модулях, и в модулях справочников, документов, регистров и т.д. Рассмотрим, что это за свойство и для чего применяется.




Краткий обзор

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

Тип у этого объекта: ПараметрыОбменаДанным, который в свою очередь содержит три свойства

  • Загрузка
  • Отправитель
  • Получатели

Эти свойства используются в процессе обмена между узлами распределенной информационной базы. В свойстве Отправитель храниться ссылка на узел в котором было произведено изменение объекта. Получатели содержит набор узлов плана обмена, в который будут выгружаться изменения. В случае необходимости каких-то нестандартных действий при обменен данными между базами и отправителя и состав набора узлов можно изменять программно. А вот на третьем свойстве — Загрузка хочется остановиться подробнее.

Свойство ОбменДанными.Загрузка

Если данное свойство установлено в значение Истина, это указывает на то, что производится запись объекта, полученного через механизмы обмена данными. При этом подразумевается, что объект содержит корректные данные и платформа 1С производит минимальное количество проверок. Но очень часто при записи объекта делается множество программных проверок в предопределенных процедурах модуля объекта. И этот код выполняется в том числе и при записи объекта, полученного из файла обмена. И в этом случае могут возникать ошибки, например, из-за того, что проверяемые данные просто еще не записаны.




Поэтому очень часто в модулях объектов можно встретить вот такой код:




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

	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

	//Здесь код с проверкой данных

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

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

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




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

НовыйТовар.ОбменДанными.Загрузка = Истина;
НовыйТовар.Записать();

И в каких-то исключительных ситуациях это действительно может помочь как временная мера. Но злоупотреблять этим не стоит.

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

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

   

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