Управление отправкой и приемом данных
страницаУправление отправкой и приемом данных
Следует лишь сделать несколько заключительных замечаний.
При использовании механизма распределенных информационных баз становятся доступными четыре события объекта встроенного языка ПланОбменаОбъект.<имя>, которые позволяют управлять отправкой и приемом данных на уровне отдельных элементов данных:
- ПриОтправкеДанныхГлавному(),
- ПриОтправкеДанныхПодчиненному(),
- ПриПолученииДанныхОтГлавного(),
- ПриПолученииДанныхОтПодчиненного().
Эти события будут вызываться для каждого элемента данных, включаемого в сообщение.
Работу этих событий можно увидеть, добавив в модуль объекта План обмена Отделения следующий текст (листинг 25.33).
Листинг 25.33. Просмотр работы событий объекта «ПланОбменаОбъект»
Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
Сообщить("ПриОтправкеДанныхГлавному " + ЭлементДанных);
КонецПроцедуры
Процедура ПриОтправкеДанныхПодчиненному(ЭлементДанных, ОтправкаЭлемента)
Сообщить("ПриОтправкеДанныхПодчиненному " + ЭлементДанных);
КонецПроцедуры
Процедура ПриПолученииДанныхОтГлавного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
Сообщить("ПриПолученииДанныхОтГлавного " + ЭлементДанных);
КонецПроцедуры
Процедура ПриПолученииДанныхОтПодчиненного(ЭлементДанных, ПолучениеЭлемента, ОтправкаНазад)
Сообщить("ПриПолученииДанныхОтПодчиненного " + ЭлементДанных);
КонецПроцедуры
В первом параметре всех перечисленных событий находится тот элемент данных, для которого вызвано это событие.
Параметр ОтправкаЭлемента позволяет управлять тем, какая информация будет помещена в сообщение. Он может принимать три значения:
Авто– значение по умолчанию. Указывает на то, что элемент данных будет помещен в сообщение;Удалить– в сообщение будет помещено значение, предназначенное для удаления этого элемента данных;Игнорировать– в сообщение не будет помещено ничего, связанного с этим элементом данных.
Параметр ПолучениеЭлемента позволяет указать, будет прочитанный элемент данных записан в базу данных или нет. Параметр также может принимать три значения:
Авто– значение по умолчанию. Если элемент данных получен от главного узла, он будет записан всегда. Если элемент данных получен от подчиненного узла, он будет записан, только если не зарегистрированы изменения для этого элемента данных;Принять– полученный элемент данных будет записан всегда;Игнорировать– проигнорировать получение элемента данных и ничего не записывать.
Также в событиях получения данных существует третий параметр – ОтправкаНазад, имеющий тип Булево.
Этот параметр позволяет выполнять принудительную регистрацию изменений для полученного элемента данных в базе-получателе.
Такая необходимость может возникнуть, например, когда при приеме данных от узла-отправителя обнаружено, что полученные данные противоречивы (например, в узле-отправителе была допущена ошибка при изменении данных).
Тогда вы можете проигнорировать присланные изменения и, установив флажок ОтправкаНазад, вызвать принудительную регистрацию изменений полученного элемента данных в вашей базе для узла-отправителя.
В результате последующего обмена состояние этого элемента данных в узле-отправителе будет установлено таким же, как и в вашей базе.