Вопрос

Массовый апдейт в процессе и запуск процесса по событию

Коллеги, привет! Вот столкнулись в очередной раз с проблемой при решении тривиальной задачи:

1. Запускается процесс, где скриптом выбираются документы по условию, с ними что-то делается (расчитывается комиссия для выплаты, это не суть), потом скриптом же у них (документов этих выбранных) происходит update'ом изменение статуса на некий "Статус1". Никаким иным способом это сделать нельзя, в частности элементом "Изменение данных" в цикле - пробовали, нагрузка на систему слишком велика. 

2. В системе реализовано несколько процессов, которые реализуют определенную логику при изменении статуса документа на "Статус1". Реализованы они понятное дело по событию "Изменение колонки статус" в объекте "Документ" при том, что статус = "Статус1".

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

Кто как это решать, если кто-то решал? Теоретиков просьба не беспокоится, как это решать в теории ясно, нужен именно практический кейс с минимальной писаниной кода желательно :)

 

     

Нравится

2 комментария
Лучший ответ

Небольшое уточнение. "происходит update'ом изменение статуса на некий "Статус1"" — т.е. вы делаете new Update(....).Execute() ?

И пробовали ли реализацию через entity:

Entity doc = new Terrasoft.Configuration.UsrDocument(this.UserConnection);
doc.FetchFromDB(docID);
doc.SetColumnValue("UsrStatusId", new Guid(....));
doc.Save(false);

 

Небольшое уточнение. "происходит update'ом изменение статуса на некий "Статус1"" — т.е. вы делаете new Update(....).Execute() ?

И пробовали ли реализацию через entity:

Entity doc = new Terrasoft.Configuration.UsrDocument(this.UserConnection);
doc.FetchFromDB(docID);
doc.SetColumnValue("UsrStatusId", new Guid(....));
doc.Save(false);

 

Варфоломеев Данила,

прикольно. Вот я этого кода от поддержки добивался два года

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