![]() |
|
v7: Проведение документа в 1С 7.7 | ☑ | ||
---|---|---|---|---|
0
Franchiser
12.09.24
✎
13:13
|
Во внешней обработки есть код:
Статус = ДокОбъект.Провести(); Если Статус = 0 Тогда ТекстСообщения = "Не проведен! "+ ДокОбъект; Сообщить(ТекстСообщения); КонецЕсли; В семерке ошибка при проведении не приводит к возникновению исключительной ситуации. Есть ли возможность детализировать причину ошибки по которой документ не провелся? |
|||
1
Guk
12.09.24
✎
19:44
|
Попытка Статус = ДокОбъект.Провести(); Исключение Сообщить(ОписаниеОшибки()) КонецПопытки; но скорее всего вернет какую-нибудь хрень. вообще ошибки при проведении лучше прописывать в сообщениях процедуры Обработка Проведения... |
|||
2
MWWRuza
12.09.24
✎
13:43
|
Да, все так... Попытка/исключение выводит системные ошибки, например, если объект заблокирован кем-то, какой-то реквизит к которому обращаешься отсутствует, или еще чего-то вроде этого...
То, что не хватает какого-то товара или еще какая-то причина в алгоритме самого действия, это не те ошибки, и надо их самому обрабатывать и выводить понятную расшифровку. |
|||
3
mishaPH
12.09.24
✎
13:50
|
(0)
ДокОбъект.Провести(); Если ДокОбъект.Проведен() = 0 Тогда ТекстСообщения = "Не проведен! "+ ДокОбъект.ТекущийДокумент(); Сообщить(ТекстСообщения); КонецЕсли; |
|||
4
uno-group
12.09.24
✎
14:11
|
(3) Провести(); возвращает 0 или 1 в зависимости от того удалось провести или нет. Проведен() тут лишнее.
В обработке проведение расписаны (расписывают) причины и они в окно сообщений выводятся. Возможно где то в настройках нужно включить уровень детализации ошибок проведения, чтобы это подробнее описывалось |
|||
5
АльПачин
12.09.24
✎
14:28
|
в добавок к (3)
ДокОбъект.Провести(); Если ДокОбъект.Проведен() = 0 Тогда приведет к тому что если ПЕРЕПРОВОДИТСЯ уже проведенный документ, и проведение было неудачным, то Док.Проведен() - все так же будет =1... |
|||
6
Arbuz
12.09.24
✎
15:23
|
(0) Дэк, "причина ошибки по которой документ не провелся" ограничена лишь фантазией прога в модуле проведения этого документа (СтатусВозврата(0) и НеПроводитьДокумент()).
Причём да, если при проведении документа произойдёт действительно исключительная ситуация, то она не ловится обёрткой Попытка-КонецПопытки метода Провести(). |
|||
7
Franchiser
12.09.24
✎
19:04
|
(1) так дело в том что если документ не удалось провести в исключение не попадает.
По какой причине вообще документ может быть не проведен? Только если статус возврата(0) в обработке проведения? Как его поймать извне если обработка запускается в регламенте, нужно записать во внешней обработке более точное описание ошибки во внешнюю систему? Можете привести кейс при котором метод провести() выдаст значение 0 без попадания в статусвозврата(0) в обработке проведения? Может быть это какой то случай когда проводится документ помеченный на удаление? |
|||
8
Злопчинский
12.09.24
✎
19:35
|
(7) "Только если статус возврата(0) в обработке проведения?"
- не обязательно, например деление на ноль приведет к тому что Провести() вернет 0 или синтаксическая ошибка времени исполнения итд . "Как его поймать извне если обработка запускается в регламенте" - никак, ловить то, что возвращает Док.Провести() . "нужно записать во внешней обработке более точное описание ошибки во внешнюю систему?" - системно генерируемые платформой сообщения выводятся в окно сообщений, иное - то что напишет погромист в лог или в то же самое окно сообщений. . текущий релиз формекса предоставляет развитые средства как перехвата сообщений в системное окно сообщений, так и записи содержимого окна сообщений в файл и организации нескольких оконс сообщений - что надо/как хочется - так и делаешь... |
|||
9
Злопчинский
12.09.24
✎
19:36
|
в свое время писал неоднократно пакетные проведения с логгированием сообщений выводимых в окно сообщений (еще с использованием 1spy), нормально все...
|
|||
10
Franchiser
12.09.24
✎
21:30
|
(9) я правильно понял, что ошибка timeout то же может привести к тому, что провести()=0?
Где тогда увидеть сообщение что причина ошибки именно во времени ожидания? Это выведется платформой в окно сообщений? Можно ли как то искусственно воспроизвести ошибку времени ожидания? |
|||
11
Злопчинский
13.09.24
✎
01:01
|
(10) это когда про блокировку/транзакцию выскакивает интерактивное окно? хз, даже не знаю что выдаст платформа в окно если выбрать кансел... моделировать лень (по отдельному предметному запросу если только)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |