Перейти к содержимому
Участник сообщества #101
Участник сообщества #101
26 нояб. 2024 г., 13:32(изменён)
0
0

Ошибка функции create_certificate_to_person()

Из чата сообщества

Добрый день!

После обновления Websoft HCM до версии 2023,2,985 (2024-09-04) перестала корректно работать функция tools.create_certificate_to_person(). По описанию она возвращает объект XmlDoc (ссылка на документ созданного сертификата). При использования этой ссылки для изменения кастомных полей и последующего сохранения, данные кастомных полей не изменяются. Приходится ставить следующую заплатку для исправления этого бага:

newDocCertificate = tools.create_certificate_to_person(pers.id, cert_type_id);

docCertificate = tools.open_doc(newDocCertificate.DocID);

docCertificate.TopElem.serial = "ШК";

docCertificate.Save();

Подскажите, что с этим делать? Ведь функция create_certificate_to_person() не только в одном месте.

Участник сообщества
Участник сообщества26 нояб. 2024 г., 13:34(изменён)

А контекст вызова можно уточнить? Веб-админка? Вызов на клиентской стороне?

Участник сообщества
Участник сообщества26 нояб. 2024 г., 13:34(изменён)

Вызов агента

Участник сообщества
Участник сообщества26 нояб. 2024 г., 13:35(изменён)

Любая сторона так себя ведет. Что клиентская, что серверная

Участник сообщества
Участник сообщества26 нояб. 2024 г., 13:43(изменён)

Я понимаю, что это выглядит, возможно, не вежливо, но побуду слегка Станиславским - "не верю"... При выполнении в одном потоке такого быть не должно никак. А необходимость заново инициализировать объект с сервера прямо указывает, что была передача объекта между потоками, когда указатель потерялся.

Участник сообщества
Участник сообщества26 нояб. 2024 г., 13:44(изменён)

Можно полный код и контекст вызова дать?

Участник сообщества
Участник сообщества26 нояб. 2024 г., 13:53(изменён)

Вот код. Поставил коммент где приходится переоткрывать сертификат

Участник сообщества
Участник сообщества26 нояб. 2024 г., 14:04(изменён)

А нету каких-то настроенных системных событий на выдачу сертификата?

Участник сообщества
Участник сообщества26 нояб. 2024 г., 14:10(изменён)

Не знаю. Посмотрю

Участник сообщества
Участник сообщества26 нояб. 2024 г., 16:49(изменён)

такое ощущение, что какая-то проблема с асинхронностью запросов. там сертификат сейвится внутри функции. а ты его еще раз сохраняешь снаружи. и тут рассинхрон... точно нет системного события? если добавить Sleep() - не помогает?

Чтобы ответить, необходимо войти в систему