Как узнать ошибку проведения документа
Автор Sinsinmin, 06 мая 2011, 09:32
0 Пользователей и 1 гость просматривают эту тему.
программно пишу следующее
ЦитироватьПопытка
ТекстОшибки = «»;
ДокКадрПерем.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Исключение
ТекстОшибки = ОписаниеОшибки();
ЗаписьОшибки(ТекстОшибки);
ДокКадрПерем.Записать(РежимЗаписиДокумента.Запись);
КонецПопытки;
Но получается что многие документы проводятся с противоречиями. Таким образом выполнение не заходит в исключение проведения. Каким образом можно узнать ошибку проведения документа?
Ошибки проведения обрабатываются в ОбработкеПроведения() документа и выводятся обычным Сообщить()…
- 1 пользователь сказал спасибо!
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
Это код внешней обработки.
И мне нужно передать эти ошибки в текстовый документ, для логирования ошибок внешней обработки.
Ну а чем существубщий код не подходит?
Если ты имеешь ввиду мой код, то он выдаёт ошибку только при исключении. Тобишь когда проведение документа невозможно. А хотелось бы узнать ошибки при проведении документа.
Хм, а какие ошибки возможны при нормальном проведении документа? Документ либо провелся (ошибок нет), либо не провелся (ошибки есть). Или я не так понял?
Аааа, кажется вкурил. Ты имеешь ввиду ошибки, которые не отменяют при этом проведения документа?
В ОбработкеПроведения() там где сообщаете об ошибке через Сообщить() надо добавить код, который будет помещать ошибки еще куда нибудь, например в РегистрСведений…
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
нельзя трогать код программы. Всё с помощью внешней обработки. Также нельзя делать регистры. Текстовый документ самое то.
Как узнать ошибку проведения документа
Автор Sinsinmin, 06 мая 2011, 09:32
0 Пользователей и 1 гость просматривают эту тему.
программно пишу следующее
ЦитироватьПопытка
ТекстОшибки = «»;
ДокКадрПерем.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
Исключение
ТекстОшибки = ОписаниеОшибки();
ЗаписьОшибки(ТекстОшибки);
ДокКадрПерем.Записать(РежимЗаписиДокумента.Запись);
КонецПопытки;
Но получается что многие документы проводятся с противоречиями. Таким образом выполнение не заходит в исключение проведения. Каким образом можно узнать ошибку проведения документа?
Ошибки проведения обрабатываются в ОбработкеПроведения() документа и выводятся обычным Сообщить()…
- 1 пользователь сказал спасибо!
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
Это код внешней обработки.
И мне нужно передать эти ошибки в текстовый документ, для логирования ошибок внешней обработки.
Ну а чем существубщий код не подходит?
Если ты имеешь ввиду мой код, то он выдаёт ошибку только при исключении. Тобишь когда проведение документа невозможно. А хотелось бы узнать ошибки при проведении документа.
Хм, а какие ошибки возможны при нормальном проведении документа? Документ либо провелся (ошибок нет), либо не провелся (ошибки есть). Или я не так понял?
Аааа, кажется вкурил. Ты имеешь ввиду ошибки, которые не отменяют при этом проведения документа?
В ОбработкеПроведения() там где сообщаете об ошибке через Сообщить() надо добавить код, который будет помещать ошибки еще куда нибудь, например в РегистрСведений…
Получил помощь — скажи СПАСИБО.
Разобрался сам — расскажи другим.
нельзя трогать код программы. Всё с помощью внешней обработки. Также нельзя делать регистры. Текстовый документ самое то.
|
|||
VigerV
17.09.12 — 18:16 |
Как программно получить ошибку при проведении документа, т.е. допустим программное проведение ряда документов и программное получение(подробное) , не строчку кода, а например «Не списано по партиям…». Все это выполняется в регламентном задании. ОписаниеОшибки() дает только номер строчки кода. |
||
Wobland
1 — 17.09.12 — 18:18 |
лог пиши |
||
Wobland
2 — 17.09.12 — 18:19 |
+(1) я про штатный вывод Сообщить в файл |
||
vmv
3 — 17.09.12 — 18:19 |
в критичные методы добавь параметр СтрокаСообщенияОбОшибке и накапливай эти НЕ пустые строки в контейнер — по другому хренушки |
||
undertaker
4 — 17.09.12 — 18:20 |
в журнал регистрации можно |
||
VigerV
5 — 17.09.12 — 18:25 |
Это и пишется в лог регламентного задания который после отсылается на мыло. Но ОписаниеОшибки() выдает не ту инфу. |
||
VigerV
6 — 17.09.12 — 18:25 |
(3) не совсем понял что ты имел в виду под «в критичные методы добавь параметр СтрокаСообщенияОбОшибке» |
||
shuhard
7 — 17.09.12 — 18:27 |
(5)я использую запуск обработки с ключиком /OutC:Robotdel_log.log -NoTruncate и файлик к письму присоединяю |
||
undertaker
8 — 17.09.12 — 18:27 |
(5) а ОписаниеОшибки() и не выдаст тебе что «Не списано по партиям» |
||
Wobland
9 — 17.09.12 — 18:28 |
+(2) *про штатное перенаправление вывода окно сообщений -> файл |
||
Wobland
10 — 17.09.12 — 18:28 |
(7) вот оно |
||
VigerV
11 — 17.09.12 — 18:51 |
В файл выводить нельзя, не из-за 1с а изза особенностей сервера, можно ли выводить куда-то внутри самой 1С? |
||
unregistered
12 — 17.09.12 — 18:53 |
(11) Что за особенность такая?… |
||
undertaker
13 — 17.09.12 — 18:53 |
(11) см. (4) |
||
unregistered
14 — 17.09.12 — 19:00 |
(13) (4) Как? |
||
undertaker
15 — 17.09.12 — 22:37 |
(14) ЗаписьЖурналаРегистрации("Имя события", УровеньЖурналаРегистрации.Ошибка, , , "Текст ошибки") потом по событию можно фильтры накладывать или выгружать ЖР и програмно обрабатывать |
||
rs_trade
16 — 17.09.12 — 23:00 |
(12) он просто не знает как. вот и вся особенность. |
||
unregistered
17 — 18.09.12 — 08:51 |
(15) Это и ёжику понятно. Я думал ты знаешь метод не связанный с изменениями конфигурации. Ты предлагаешь автору по быстренькому добавить во всю конфу в те места, где используется Сообщаить() при проведении воткнуть функцию записи в журнал. В лучшем случае всё ограничиться процедурой общего модуля ОбщегоНазначения.ОшибкаПриПроведении (в разных конфах может называться по разному). А если этого окажется мало? |
||
shuhard
18 — 18.09.12 — 08:52 |
(17) в типовой УПП это сделано на уровне константы =) |
||
unregistered
19 — 18.09.12 — 09:08 |
(18) Прикольно. Я с УПП не работаю, а потому не знал. |
||
shuhard 20 — 18.09.12 — 09:10 |
(19) кругозор расширил |
![]() |
Ошибка? Это не ошибка, это системная функция. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Как в ЗУП 3.1 можно посмотреть описание ошибки? Например, когда не проводится документ Начисление зарплаты и взносов.
В ЗУП 3.1 есть 3 способа посмотреть описание ошибки:
- Непосредственно в самом документе, при проведении / записи которого выдается ошибка.
- В Журнале регистрации (Администрирование — Обслуживание — Журнал регистрации).
- Сформировать отчет об ошибке для отправки в 1С и посмотреть описание во вложенном файле отчета – способ доступен для ошибок с типом Возникла непредвиденная ситуация.
При появлении ошибки в документе, можно анализировать текст самого сообщения о проблеме.
Также текст ошибки можно увидеть в Журнале регистрации. Для этого в поле Критичность выберем значение Ошибка.
В настройках отбора можно убрать фильтр по периоду.
Подробный текст ошибки можно открыть двойным щелчком левой кнопки мыши по ее описанию.
При возникновении ошибки, связанной с непредвиденной ситуацией, для анализа проблемы можно воспользоваться ссылкой Сформировать отчет об ошибке.
В открывшейся форме по ссылке Подробный текст ошибки можно будет увидеть описание проблемы.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Оцените публикацию
(2 оценок, среднее: 5,00 из 5)
Загрузка…
Назад к статье
Отчеты, документы, обработки
Назад к статье
Новости и изменения
Назад к статье
Дополнительные материалы
Назад к статье
Топ-вопросов
Последовательность событий при записи нового документа из формы документа
Заливкой выделены события, выполняющиеся в транзакции записи.
Последовательность событий при проведении документа из формы документа (провести и закрыть)
Заливкой выделены события, выполняющиеся в транзакции записи.
Последовательность событий при отмене проведения документа из формы документа
Заливкой выделены события, выполняющиеся в транзакции записи.
Обработчики событий
ПередЗаписью(Отказ, ПараметрыЗаписи) // модуль формы клиент
Расширение управляемой формы для документа. Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью
.
Отказ
, типБулево
. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию:Ложь
.ПараметрыЗаписи
, типСтруктура
. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра —РежимЗаписи
иРежимПроведения
. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения». ПараметрРежимПроведения
может отсутствовать, если режим проведения в документе не определен.
Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере
.
ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) // модуль формы сервер
Расширение управляемой формы для документа. Вызывается перед записью объекта на сервере. Можно отменить запись. Выполняется вне транзакции.
Отказ
, типБулево
. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию:Ложь
.ТекущийОбъект
, типДокументОбъект.ИмяДокумента
. Записываемый объект.ПараметрыЗаписи
, типСтруктура
. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра —РежимЗаписи
иРежимПроведения
. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ДокументОбъект.ИмяДокумента.ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) // модуль объекта сервер
Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.
Отказ
, типБулево
. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то запись выполнена не будет и будет вызвано исключение. Значение по умолчанию:Ложь
.РежимЗаписи
, типРежимЗаписиДокумента
. В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.РежимПроведения
, типРежимПроведенияДокумента
. В данный параметр передается текущий режим проведения. Изменение значения параметра позволяет изменить режим проведения.
ДокументОбъект.ИмяДокумента.ПриЗаписи(Отказ) // модуль объекта сервер
Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.
Отказ
, типБулево
. Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то запись документа выполнена не будет. Значение по умолчанию:Ложь
.
ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) // модуль формы сервер
Расширение управляемой формы для документа. Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи
объекта) в базу данных, но до окончания транзакции записи.
Отказ
, типБулево
. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значениеИстина
, то запись произведена не будет. Значение по умолчанию:Ложь
.ТекущийОбъект
, типДокументОбъект.ИмяДокумента
. Записываемый документ.ПараметрыЗаписи
, типСтруктура
. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра —РежимЗаписи
иРежимПроведения
. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) // модуль формы сервер
Расширение управляемой формы для документа. Вызывается после записи объекта на сервере и после завершения транзакции.
ТекущийОбъект
, типДокументОбъект.ИмяДокумента
. Записываемый объект.ПараметрыЗаписи
, типСтруктура
. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра —РежимЗаписи
иРежимПроведения
. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписи(ПараметрыЗаписи) // модуль формы клиент
Расширение управляемой формы для документа. Возникает на сервере после записи объекта и после окончания транзакции записи, то есть к моменту вызова этой процедуры запись объекта полностью завершена.
ПараметрыЗаписи
, типСтруктура
. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра —РежимЗаписи
иРежимПроведения
. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере
.
Поиск:
1С:Предприятие • Документ • Перед записью • Перед записью на сервере • После записи • После записи на сервере • При записи • При записи на сервере • Событие
Добрый день! При проведении документа осуществленна проверка, в случае проведения документа из формы и наличию ошибок при проведении необходимо отобразить подробный список ошибок, механизм СообщитьПользователю не подходит для этого. Подскажите, как лучше передать результат выполнения на клиентскую часть? Погуглил — рекомендуют разместить результат в параметрах сеанса и т.д., но мне это кажется диким, что лучше сделать?
не, не подходит такой вариант Нужна специализированная форма в которой будет в иерархическом виде отображаться ошибки, предлагаться расшифровки и горячие кнопки для исправления… необходимо где то сохранить результат, чтобы потом его вывести в отдельной форме «для ошибок», либо на форме документа отобразить элемент, по нажатию на который будет выведена форма «для ошибок».
почему с этим не справиться регистр сведений?
при откате транзакции, он тоже откатывается.
Чем временное хранилище не подходит?
пока решил сделать именно через временное хранилище, остался вопрос только с тем как кинуть адресом временного хранилища в форму и в составке данных, которые кидаю…
+100500 — почему то все советуют сделать именно через справочник
ТЗ/ДЗ, что может быть проще?
так то эти данные не отображаются клиенте+кидаться с сервером ДЗ вообще нельзя.
Самый хороший способ — через доп.данные объекта-документа. Добавить в доп.данные таблицу значений, в форме должно быть событие, которое происходит после записи о объекта и в котором доступен сам объект, т.е. не произошла еще конвертация в реквизит формы. там и прочитать доп.параметры, заполнив реквизит формы — таблицу значений с сообщениями, ну а дальше можно делать с ней что угодно. Сейчас под рукой нет 1с, проверить это не могу, но я бы действовал примерно так
— если транзакция откатывается — события такого нет. И вообще с доп. свойствами можно работать на форме перед записью на сервере, после записи у тек. объекта их уже нет — там другой экземпляр. Хотя если такой способ рабочий, то может с ним стоит еще покопаться. Я пока решил эту проблему по другому, но хочу вернуться к ней и сделать правильно.
Что бы проверить, что он рабочий — нужно в конфигураторе посидеть. Но у формы документа, если я не ошибаюсь, есть событие, в котором доступен объект, не реквизит формы Объект, а именно тот объект, который был записан и он должен передаваться в параметре события. Но, конечно, я могу ошибаться. Проверить смогу только на следующей неделе -сейчас в отпуске
а если его персонально в транзакцию обернуть?
в 1с нет автономных транзакций. Все, что выполняется в рамках транзакции, например, запись, является одной транзакцией и будет откачено при роллбеке. Как вариант, если использовать временное хранилище — можно использовать guid самого объекта. Затем на форме получить значение из временного хранилища по этому guid-у. Это не очень хорошее решение, но рабочее.
Объект.ДополнительныеСвойства — это структура которая существует пока существует сам объект, сувай туда.
Я тут поигрался, и вроде как в случае отказа поведения, никакой обработчик формы не вызывается. Поэтому видится вариант делать свою кнопку проведения в которой получать объект, проводить, и ловить ошибки в ДополнительныеСвойства.
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Если при исполнении программы происходит ошибка, то 1С сообщает о ней пользователю.
Сообщение обычно производится в окне с красным крестом, откуда такие сообщения называют «поймать красный крест» или «не работает, есть красные ошибки».
Конструкция 1С Попытка-Исключение служит для обработки возможных ошибочных ситуаций.
Хорошим тоном считается обрабатывать ошибки с помощью конструкции 1С Попытка-Исключение, то есть предусматривать места, где они могут произойти и ставить обработчик, который запишет ошибку «в сообщения администратору», а пользователю или сообщит корректно или найдет способ отработать по-другому.
Переменная1 = "22";
Попытка
//код, который может вызвать ошибку
ЧислоСтрокой = Число(Переменная1);
Исключение
ТекстОшибки = ОписаниеОшибки();
КонецПопытки
Код, в котором может произойти ошибка, обрамляется оператором 1С Попытка-Исключение.
В случае, если ошибка происходит, срабатывает выполнение кода между Исключение и КонецПопытки. Если ошибка не происходит, тот код между Исключение и КонецПопытки не выполняется.
Чтобы получить расшифровку ошибки, необходимо получить текст ошибки с помощью функции ОписаниеОшибки() сразу после слова Исключение.
Также существует функция ИнформацияОбОшибке(), которую можно вызывать вместо ОписаниеОшибки(). Разница в том, что она возвращает информацию в структурированном виде, а не строкой.
Структура, возвращаемая функцией ИнформацияОбОшибке():
Проголосовать за этот пост:
Загрузка…
Posted in Язык 1С
Программное получение ошибки при проведении документа |
Я |
17.09.12 — 18:16
Как программно получить ошибку при проведении документа, т.е. допустим программное проведение ряда документов и программное получение(подробное) , не строчку кода, а например «Не списано по партиям…». Все это выполняется в регламентном задании. ОписаниеОшибки() дает только номер строчки кода.
1 — 17.09.12 — 18:18
лог пиши
2 — 17.09.12 — 18:19
+(1) я про штатный вывод Сообщить в файл
3 — 17.09.12 — 18:19
в критичные методы добавь параметр СтрокаСообщенияОбОшибке и накапливай эти НЕ пустые строки в контейнер — по другому хренушки
4 — 17.09.12 — 18:20
в журнал регистрации можно
5 — 17.09.12 — 18:25
Это и пишется в лог регламентного задания который после отсылается на мыло. Но ОписаниеОшибки() выдает не ту инфу.
6 — 17.09.12 — 18:25
(3) не совсем понял что ты имел в виду под «в критичные методы добавь параметр СтрокаСообщенияОбОшибке»
7 — 17.09.12 — 18:27
(5)я использую запуск обработки с ключиком /OutC:Robotdel_log.log -NoTruncate
и файлик к письму присоединяю
8 — 17.09.12 — 18:27
(5) а ОписаниеОшибки() и не выдаст тебе что «Не списано по партиям»
9 — 17.09.12 — 18:28
+(2) *про штатное перенаправление вывода окно сообщений -> файл
10 — 17.09.12 — 18:28
(7) вот оно
11 — 17.09.12 — 18:51
В файл выводить нельзя, не из-за 1с а изза особенностей сервера, можно ли выводить куда-то внутри самой 1С?
12 — 17.09.12 — 18:53
(11) Что за особенность такая?…
13 — 17.09.12 — 18:53
(11) см. (4)
14 — 17.09.12 — 19:00
(13) (4) Как?
15 — 17.09.12 — 22:37
(14) ЗаписьЖурналаРегистрации(«Имя события», УровеньЖурналаРегистрации.Ошибка, , , «Текст ошибки»)
потом по событию можно фильтры накладывать или выгружать ЖР и програмно обрабатывать
16 — 17.09.12 — 23:00
(12) он просто не знает как. вот и вся особенность.
17 — 18.09.12 — 08:51
(15) Это и ёжику понятно. Я думал ты знаешь метод не связанный с изменениями конфигурации.
Ты предлагаешь автору по быстренькому добавить во всю конфу в те места, где используется Сообщаить() при проведении воткнуть функцию записи в журнал.
В лучшем случае всё ограничиться процедурой общего модуля ОбщегоНазначения.ОшибкаПриПроведении (в разных конфах может называться по разному). А если этого окажется мало?
18 — 18.09.12 — 08:52
(17) в типовой УПП это сделано на уровне константы =)
19 — 18.09.12 — 09:08
(18) Прикольно. Я с УПП не работаю, а потому не знал.
shuhard
20 — 18.09.12 — 09:10
(19) кругозор расширил
Содержание:
1. Обработка исключительной ситуации
2. Совершаем ошибку в 1С 8.3
3. А что еще можно делать с результатом попытки?
4. А ваши транзакции то здесь при чём?
1. Обработка исключительной ситуации
— Приветствую, Амиго! Ты, как я понял, пришёл на мою лекцию по физическим основам изготовления термитных пирамидок для заряда аппаратов гиперболоидной конструкции? Нет? А зачем тогда?
— Здравствуйте, профессор. Сегодня мы собирались разобрать конструкцию «Попытка-Исключение».
— А… Это… Ну, тогда вот:
— Кажется, понятно. А можно примеров добавить?
— Ох уж эти юные роботы, всегда хотят практики. С примерами это будет выглядеть вот так:
Ох, извини, это для старых баз. На новых космолётах с прошивкой выше 8.1 есть более удобный способ узнать код ошибки.
2. Совершаем ошибку в 1С 8.3
Ты и сам можешь попробовать. Главное – придумать ошибку в 1С 8.3. Самая простая ошибка – это разделить что-нибудь на нуль или на, как это говорят на современном сленге, ноль.
В ответ получим:
Нажимаем на кнопку «Подробно…» и видим: Деление на 0 {NudlsProff_Расширение.NudlsProff_ФормаОшибок.Форма(96)}: Результат = 1/0
Добавляем нашей красоты:
Теперь пользователю ВИДНО, что случилось. И ПОНЯТНО, что с этим делать.
Описание=’Деление на 0′
ИмяМодуля=’NudlsProff_Расширение.NudlsProff_ФормаОшибок.Форма’
НомерСтроки=99
ИсходнаяСтрока=’ Результат = 1 / 0;’
Позвоните Профессору Нудлсупо тел+7 (495) 125-23-77
и ознакомьтесь с теорией деления на ноль
https://elementy.ru/email/1530320/Pochemu_nelzya_delit_na_nol
3. А что еще можно делать с результатом попытки?
— А что ещё мы можем делать в результате с попыткой?
— Мы можем обработать попытку в попытке.
По своей сути Попытка-Исключение – это отлов исключительной ситуации. Ситуации, которая может произойти. Возможно, даже и не по вине юного робота. Робот же должен учесть все возможные ситуации при написании кода и обработать их. Но наш мир не идеален и даже программы не всегда работают идеально. Именно тогда мы и должны проанализировать возможные последствия и понять, что для нас важнее: чтобы код выполнился до конца или вызвать прерывание работы ошибочного кусочка кода, но дать пользователю исправить ситуацию и продолжить работу.
— Профессор, Вы опять забыли про примеры.
— Ах, да, конечно. Например, мы записывали файл на диск. Пользователь, конечно, выбрал папку для записи файла, но случайно удалил её во время работы программы. Вся наша программа рухнет из-за невнимательности.
Нельзя просто обернуть код в попытку и обезопасить себя от последствий. Также неправильно и маскировать ошибку общими фразами – дальнейший поиск и исправление этого бага вызовет уйму вопросов. Нужно показать максимально информативное сообщение пользователю, чтобы он передал его в службу поддержки. Всё-же, исключительная ситуация – это баг, который нужно исправлять.
4. А ваши транзакции то здесь при чем?
— То есть если в программе что-то может пойти не так, например, при записи файла на диск, обработке web-hook, работе с API, синхронизации с другими базами, записи изменений в справочник или документ, для безопасности я должен обернуть потенциально опасный кусочек кода в Попытку-Исключение, и тем самым пользователь сможет продолжить работу, а мы всегда будем знать, где именно и почему возникает ошибка?
— Да, Амиго, все верно! Кстати, поскольку уж речь зашла о записи объектов баз данных, очень важно не забывать правильно закрывать ваши транзакции:
Специалист компании «Кодерлайн»
Алексей Зятнин
Как в ЗУП 3.1 можно посмотреть описание ошибки? Например, когда не проводится документ Начисление зарплаты и взносов.
В ЗУП 3.1 есть 3 способа посмотреть описание ошибки:
- Непосредственно в самом документе, при проведении / записи которого выдается ошибка.
- В Журнале регистрации (Администрирование — Обслуживание — Журнал регистрации).
- Сформировать отчет об ошибке для отправки в 1С и посмотреть описание во вложенном файле отчета – способ доступен для ошибок с типом Возникла непредвиденная ситуация.
При появлении ошибки в документе, можно анализировать текст самого сообщения о проблеме.
Также текст ошибки можно увидеть в Журнале регистрации. Для этого в поле Критичность выберем значение Ошибка.
В настройках отбора можно убрать фильтр по периоду.
Подробный текст ошибки можно открыть двойным щелчком левой кнопки мыши по ее описанию.
При возникновении ошибки, связанной с непредвиденной ситуацией, для анализа проблемы можно воспользоваться ссылкой Сформировать отчет об ошибке.
В открывшейся форме по ссылке Подробный текст ошибки можно будет увидеть описание проблемы.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Оцените публикацию
(2 оценок, среднее: 5,00 из 5)
Загрузка…
Назад к статье
Отчеты, документы, обработки
Назад к статье
Новости и изменения
Назад к статье
Дополнительные материалы
Назад к статье