Массовый апдейт в процессе и запуск процесса по событию
Коллеги, привет! Вот столкнулись в очередной раз с проблемой при решении тривиальной задачи:
1. Запускается процесс, где скриптом выбираются документы по условию, с ними что-то делается (расчитывается комиссия для выплаты, это не суть), потом скриптом же у них (документов этих выбранных) происходит update'ом изменение статуса на некий "Статус1". Никаким иным способом это сделать нельзя, в частности элементом "Изменение данных" в цикле - пробовали, нагрузка на систему слишком велика.
2. В системе реализовано несколько процессов, которые реализуют определенную логику при изменении статуса документа на "Статус1". Реализованы они понятное дело по событию "Изменение колонки статус" в объекте "Документ" при том, что статус = "Статус1".
Проблема однако в том, что данный сигнал не умеет работать с апдейтом. Т.е. использование апдейта в коде не приводит к запуску этих процессов. Консультация с поддержкой привела к следующему результату - либо апдейт и ищите другой путь по запуску (кодом, например), т.е. потом постоянно править и еще помнить об этом, либо используйте элемент "Изменение данных", либо пишите свой метод на основе "Изменения данных".
Кто как это решать, если кто-то решал? Теоретиков просьба не беспокоится, как это решать в теории ясно, нужен именно практический кейс с минимальной писаниной кода желательно :)
Нравится
Небольшое уточнение. "происходит 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);
Варфоломеев Данила,
прикольно. Вот я этого кода от поддержки добивался два года