|
![]() |
#1 |
Участник
|
Наверно вы уже нашли ответ на вопрос, но отвечу.
Причина в том, что на табличке выставлен ключ контроля доступа AdminDaily и выставлено свойство AosAutorization. А мой вопрос связан вот с чем : Выявлен глюк ядра, - если для пользователя нет прав на чтение из этой таблички, то при попытке чтения из неё может прерываться выполнение кода, но транзакция не откатывается ![]() У нас это вылезло при вызовах с клиента метода \Data Dictionary\Tables\SysEmailSMTPPassword\Methods\currentAOSInstance Т.е. при попытке отправить почту работа прерывалась а транзакция не откатывалась. Кто еще такое встречал и как боролись ? |
|
![]() |
#2 |
Участник
|
Да, конечно сталкивались.
Причина скорее в системных таблицах (они участвуют в методе currentAOSInstance таблицы SysEmailSMTPPassword) SYSclientSessions SYSserverSessions На которых видимо, выставлено свойство AosAutorization. Так как таблицы системные, снять это свойство (AosAutorization) через АОТ с них нельзя. Можно, например настроить сервер smtp без использования пароля вообще, (на какой нибудь порт отличный от порта по умолчанию) У нас работает так ![]() X++: static SMTPPassword password() { CryptoBlob cryptoBlob = connull(); SysEmailSMTPPassword SMTPPassword; AOSId AOSId; AOSInstanceId AOSInstanceId; ; // пришлось сделать так как под правами обычных пользователей не проходит метод // SysEmailSMTPPassword::currentAOSInstance() без указания ошибки // и почта не отправляется даже в режиме пакета // подозреваю что это из за глюка с AosAuthorization return ""; // <--- [AOSId,AOSInstanceId] = SysEmailSMTPPassword::currentAOSInstance(); SMTPPassword = SysEmailSMTPPassword::find(AOSId,AOSInstanceId); if (SMTPPassword.RecId != 0) cryptoBlob = SMTPPassword.Password; if (cryptoBlob != connull()) return cryptoblob2str(WinapiServer::cryptUnProtectData(cryptoBlob)); else return ''; } - может попробовать прописать методе таблицы SysEmailSMTPPassword X++: public static server container currentAOSInstance() .... clientSessions.skipAosValidation(true); Последний раз редактировалось someOne; 04.10.2012 в 12:08. |
|
|
За это сообщение автора поблагодарили: SuperStar88 (1). |
![]() |
#3 |
Участник
|
Цитата:
Да причина именно в этих системных табличках. Мы так как вы написали и сделали, хотя конечно это не совсем правильный способ, но по крайней мере надежный. А сталкивались вы именно с невозможностью чтения из SYSserverSessions ? (это как раз нормально и правильно) или у вас тоже прерывалась работа без отката транзакции ? (это трындец какой ядреный глюк ![]() |
|
![]() |
#4 |
Участник
|
Цитата:
![]() Самое надежное как мне кажется, в данной ситуации - это не "завязывать" в транзакцию отправку сообщений по электронной почте. Мало ли глюк с почтой какой. Например начнет почтовый сервер "тормозить" - при этом может зависнуть транзакция в которой идет отправка сообщения. Из за открытой транзакции возникнут блокировки у других пользователей и это может вырасти как снежный ком ![]() Сделал так - почта не отправляется в транзакции (например при разноске накладной), а создается пакетное задание для какой то отдельной пакетной группы. Соответственно получается два независимых процесса - отправка почты и разноска накладной, и друг другe они уже не могут помешать... |
|
Теги |
ax4.0, bug, email, sysserversessions, права доступа |
|
![]() |
||||
Тема | Ответов | |||
права доступа | 9 | |||
Права доступа Группы пользователей к таблице | 2 | |||
Права доступа на поля формы. | 6 | |||
Опять про права доступа | 2 | |||
Права доступа - Журнал платежей | 1 |
|