Активной транзакции нет. Эта ошибка обычно вызывается пользовательскими подключаемыми модулями, которые игнорируют ошибки от вызовов службы и продолжают обработку.

Недавно мы столкнулись с этой проблемой во время наших тестов (CRM 2015, обновление 0.1). В Интернете есть множество ответов, в которых упоминается, что эта ошибка предотвращается путем отключения правил ленты активности, и это сработало. Однако я хочу знать, как и почему возникла эта проблема, и что мы можем сделать, чтобы предотвратить ее, не отключая правила.

При создании дела у нас запущен синхронный рабочий процесс, который создает и связывает связанную запись (N: 1), а при создании этой записи возвращает значение обратно в дело.

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

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

Куда мне идти отсюда? Есть ли другая причина, о которой я не подумал, или это правильное решение в этом случае, чтобы всегда просто отключать правило ленты активности и забывать об этом?


person Mark T    schedule 29.11.2016    source источник
comment
Вы выполнили трассировку уровня Verbose на сервере? Это покажет вам точную ошибку.   -  person Nicknow    schedule 29.11.2016
comment
Если вы сделаете рабочий процесс асинхронным, все ли будет работать так, как ожидалось (несмотря на то, что это происходит не сразу)?   -  person Alex    schedule 01.12.2016


Ответы (2)


Создайте подключаемый модуль и зарегистрируйте этап синхронной предварительной проверки в сообщении о создании для инцидента объекта. В этом подключаемом модуле создайте связанную запись и добавьте для нее EntityReference в коллекцию атрибутов объекта инцидента. (Вы найдете его как свойство Target в коллекции InputParameters.

Это обеспечит гораздо более стабильное решение.

person Henk van Boeijen    schedule 29.11.2016

Я получил ту же ошибку при запуске пользовательского рабочего процесса с обычным пользователем, но он работал нормально с пользователем, имеющим права администратора.

Я только что преобразовал рабочий процесс из реального времени в фоновый рабочий процесс, после чего он работает нормально.

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

person Naveed Anwar    schedule 29.04.2021