Отключение событий объекта

Здравствуйте.

Подскажите возможно ли отключить события на объекте при сохранении (аналог DisableEvents на датасете в TS). Как пример добавляю запись вот так:

EntitySchema schema = _userConnection.EntitySchemaManager.GetInstanceByName("Account");
Entity entity = schema.CreateEntity(_userConnection);
entity.SetDefColumnValues();
entity.SetColumnValue("Name", "Контрагент");
entity.Save();

Спасибо.

Нравится

9 комментариев

"Дашкевич К." написал:entity.Save();

Добрый день!!!

для отключения событий выполните:

   entity.Save(false);

а лучше пользоваться в данном случае конструктором

new Update()

entity.Save(false); - по документации это отключение проверки заполнения обязательных значений.
Проверил события не отключает.

"Власов Михаил Викторович" написал:а лучше пользоваться в данном случае конструктором
new Update()
- можно пожалуйста подробнее.

вот пример использование Update

var update = new Update(UserConnection, "Invoice")
	.Set("Number", Column.Parameter(code))
	.Where("Id").IsEqual(Column.Parameter(Entity.PrimaryColumnValue));
update.Execute();

выполняется обновление Номера в таблице Счета

Добрый вечер.

Можно сделать так, чтобы событие в родительском объекте не вызывалось.

Например, в базовом пакете есть объект Account, для которого в процессе объекта реализована некая логика после сохранении записи.

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

Для "отключения" запуска обработчика родительского события можно в конце задания-сценария Вашего обработчика в процессе замещающего объета, перед return true, дописать:

ActivatedEventElements.Remove("Имя стартового сообщения в родителе")

Имя стартового сообщения в родителе - название элемента стартового сообщения в родительском пакете, вызывающего AccountSaved. Обращаю внимание, что это именно название элемента в Вашем процессе, а не события.

Добрый день Андрей!!!

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

Михаил,

в любом случае, мы обращаемся к имени стартового сообщения в одной из схем, которая выше по иерархии. Т.е. смотрим, как в замещающей схеме называется название стартового сигнала и к нему обращаемся уже у себя в скрипте.

По поводу Вашего второго вопроса - подскажите, правильно ли я понял кейс.
Допустим, в процессе объекта есть стартовый сигнал обработчика какого-то события. После стартового сигнала идет Чтение данных, затем Изменение данных.
Суть вопроса в том, как отключить вызов изменения данных?

Да Андрей все верно поняли, по второму кейсу. Именно это я хотел уточнить. Спасибо!!!

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

Спасибо Андрей за информацию. Ну тогда только совет для ваших разработчиков, чтобы всю C# логику выносить в Методы бизнес-процесса а не оставлять в Скриптах бизнес-процесса, чтобы можно было легко ее переопределять, а не придумывать как ее обойти. Это я говорю про стандартные схемы таблиц, во многих именно с# логика хранится в Скриптах бизнес-процесса, а не в методах бизнес-процесса

Показать все комментарии