|
сообщение пользователю при проведении документа | ☑ | ||
---|---|---|---|---|
0
lamme
01.12.21
✎
12:38
|
унф 1,6
сделан робот - на автоматическое проведение документа -= закрытие месяца время срабатывания - 23,30 при проведении документа возникает ошибка - не типовая. типа -не заполнен счет учета в проводке .. те эту ошибку видно только при ручном проведении документа . и то - это сообщение платформы. (в типовом проведении есть таблицаошибок - типа ТЗ, но в данной ошибке - эта таблица пустая) Как такие сообщения отловить и отправить пользователю которого нет в 1С сейчас? Попытался отправить письмом т.е. где то там идет Попытка РассчитатьСтомостьВозвратов(); // предварительный расчет стоимости возвратов. исключение СделатьРассылкуОбОшибкеПользователю("Ошибка при РассчитатьСтомостьВозвратов()" + ОписаниеОшибки()); конецпопытки; В процедуру СделатьРассылкуОбОшибкеПользователю(тСообщения) пытался и письмо создать и в регистр новый писать отваливается с ошибкой - в данной транзакции происходили ошибки Логично что они происходили -это и ловим же. Собственно - как я понимаю- когда документ проводиться- то все расчеты на уровне платформы идут в транзакции/попытке и если что - то все откатывается. т.е. одна попытка/транзакция на уровне запроса (штатная так сказать) вторая - уже моя. и понятно -что "в данной транзакции происходили ошибки" Как обойти можно ? |
|||
1
ДенисЧ
01.12.21
✎
12:41
|
Используй систему взаимодействия. Или пиши в ЖР, а потом отдельно его читай.
|
|||
2
lamme
01.12.21
✎
12:41
|
Используй систему взаимодействия - подробнее?
|
|||
3
ДенисЧ
01.12.21
✎
12:42
|
||||
4
lamme
01.12.21
✎
12:46
|
пробовал.
там почему-то все отваливается на вот этом месте Справочники.Пользователи.НайтиПоНаименованию("Иванова") те вот такой вот код для создания сообщения в эту систему пользователю Иванова ДанныеСообщения = Новый Структура; ДанныеСообщения.Вставить("Объект", Пользователи.ТекущийПользователь().ПолучитьОбъект()); ДанныеСообщения.Вставить("Текст", "Ошибка "+ тОшибки); ДанныеСообщения.Вставить("Дата", ТекущаяДата()); ДанныеСообщения.Вставить("Автор", Пользователи.ТекущийПользователь()); ДанныеСообщения.Вставить("Данные", ЭтотОбъект.ссылка); ДанныеСообщения.Вставить("Действия", Новый СписокЗначений); ДанныеСообщения.Вставить("Получатель",Справочники.Пользователи.НайтиПоНаименованию("Иванова")); ДанныеСообщения.Вставить("Системный", Ложь); ОбсужденияУНФ.СоздатьСообщение(ДанныеСообщения); |
|||
5
ДенисЧ
01.12.21
✎
12:51
|
Потому что на клиенте делаешь?
|
|||
6
ДенисЧ
01.12.21
✎
12:51
|
Хотя на клиенте у тебя раньше отвалилось бы.
И да, термин "отваливается" не раскрыт. |
|||
7
lamme
01.12.21
✎
12:55
|
проведение - на сервере.
эта процедура - там же в отладчике идет так Справочники.Пользователи.НайтиПоНаименованию("Иванова") - не могу найти метод НайтиПоНаименованию при этом Справочники.Пользователи = нет ничего. те неопределено |
|||
8
lamme
01.12.21
✎
12:57
|
(сам справочник в конфиг есть)
и ВНЕ процедыр проведения - те если этот код вставить во внешнюю обработку- то работает те тут все пляски именно при проведении - транзакия-попытка |
|||
9
pechkin
01.12.21
✎
13:01
|
запускай фоновое
|
|||
10
Dmitrii
гуру
01.12.21
✎
13:02
|
Странно, что вариант "избавиться от ошибки, чтобы её не было" вообще не рассматривается. Но ищутся какие-то бредовые способы сообщить пользователю об ошибке.
Найдите место, где возникает ошибка. Вставьте туда обработчик исключения с выводом внятного сообщения о причине ошибки. Тогда сообщение об этой ошибке появится в "таблице ошибок - типа ТЗ". |
|||
11
lamme
01.12.21
✎
13:06
|
(10) этот вопрос рассматривается
но! 1. это проведение запускается ночью и роботом 2. проведение долгое и нудное - днем запускать тяжело - все зависают, те днем воспросизвести ошибку - антиреально. Получается что робот не отработал. сообщения не показал никому. А пользователь сможет увидеть эту ошибку только завтра вечером, запуская руками и видя не стандарт ошибку. 3. в закрытии месяца - много мест, где может выпасть ошибка. сейчас выпала на том - что "Счет учета не может быть пустым" - и это ошибка платформы , при записи набора записей в РН. 4. я так и делаю - ставлю поптыка/исключение - ловлю саму ошибку от платформы. но дальше ее передать куда-то - не получается. |
|||
12
Мимохожий Однако
01.12.21
✎
13:10
|
(11) Тебе же написали, используй журнал регистрации...Пиши туда все сообщения дублем и читай утром за чашкой кофе.
|
|||
13
lamme
01.12.21
✎
13:13
|
||||
14
fisher
01.12.21
✎
13:13
|
(9) +1
У фонового задания можно штатным образом получить все выводившиеся в нем сообщения. |
|||
15
lamme
01.12.21
✎
13:21
|
а в ЖР работает
|
|||
16
Ryzeman
01.12.21
✎
13:22
|
(15) у тебя и (13) работает.
Когда выводишь в табло - это обращение как к функции. У метода Установить() нет возвращаемого значение. Тебе надо на следующей точке останова посмотреть в табло через Константы.Константа1.Получить() |
|||
17
lamme
01.12.21
✎
13:27
|
не
не работает там все эти опции проходят в отмене транзакции - которая возникает при проведении документа поэтому- если и пишет - то откатывает все |
|||
18
Has
01.12.21
✎
13:27
|
ключ запуска /Out
не катит? |
|||
19
lamme
01.12.21
✎
13:29
|
||||
20
Ryzeman
01.12.21
✎
13:30
|
А, у тебя ж в одной транзакции... Тогда да, константу тоже откатит после отмены :) Ну да, тогда в ЖР, верно.
|
|||
21
Ryzeman
01.12.21
✎
13:31
|
Хотя стоп, что мешает в исключении писать в константу? Ну, помимо того, что в ЖР грамотнее?
|
|||
22
Мимохожий Однако
01.12.21
✎
13:33
|
Использовать константу для сообщений об ошибках странновато.
|
|||
23
lamme
01.12.21
✎
13:37
|
(22)
это не использование константы это попытка понять - почему не записывает никуда |
|||
24
Мультук
гуру
01.12.21
✎
13:48
|
(4)
ДанныеСообщения = Новый Структура; ДанныеСообщения.Вставить("Объект", Пользователи.ТекущийПользователь().ПолучитьОбъект()); Оно точно хочет объект, а не ссылку? P.S. Когда хочешь что-то понять, то пишешь минимальный воспроизводимый пример и делаешь эксперименты. Скорость на воспроизведение и понимание значительно повышается. Например, документ, где в обработке проведения флаг = 1/0; дальше исключения, транзакции и т.п. |
|||
25
Мимохожий Однако
01.12.21
✎
14:11
|
(23) Не записывает из-за отката транзакции.
Поэтому и используется журнал регистрации |
|||
26
lamme
01.12.21
✎
14:21
|
закрыли вопрос
через ЖР |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |