1с получить ошибку проведения

Как узнать ошибку проведения документа

Автор 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 дней бесплатно

Оцените публикацию

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд

(2 оценок, среднее: 5,00 из 5)

Загрузка…

Назад к статье

Отчеты, документы, обработки

Назад к статье

Новости и изменения

Назад к статье

Дополнительные материалы

Назад к статье

Топ-вопросов

Последовательность событий при записи нового документа из формы документа

Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при проведении документа из формы документа (провести и закрыть)

Заливкой выделены события, выполняющиеся в транзакции записи.

Последовательность событий при отмене проведения документа из формы документа

Заливкой выделены события, выполняющиеся в транзакции записи.

Обработчики событий

ПередЗаписью(Отказ, ПараметрыЗаписи)  // модуль формы клиент

Расширение управляемой формы для документа. Возникает на клиенте перед выполнением записи объекта из формы. Процедура-обработчик данного события вызывается перед вызовом процедуры-обработчика события ПередЗаписью.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения». Параметр РежимПроведения может отсутствовать, если режим проведения в документе не определен.

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.

ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Вызывается перед записью объекта на сервере. Можно отменить запись. Выполняется вне транзакции.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый объект.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ДокументОбъект.ИмяДокумента.ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)  // модуль объекта сервер

Возникает перед выполнением записи объекта. Процедура-обработчик вызывается после начала транзакции записи, но до начала записи документа.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись выполнена не будет и будет вызвано исключение. Значение по умолчанию: Ложь.
  • РежимЗаписи, тип РежимЗаписиДокумента. В параметр передается текущий режим записи документа. Позволяет определить в теле процедуры режим записи. Изменение значения параметра позволяет изменить режим записи.
  • РежимПроведения, тип РежимПроведенияДокумента. В данный параметр передается текущий режим проведения. Изменение значения параметра позволяет изменить режим проведения.
ДокументОбъект.ИмяДокумента.ПриЗаписи(Отказ)  // модуль объекта сервер

Возникает при записи объекта. Процедура-обработчик вызывается после записи объекта в базу данных, но до окончания транзакции записи.

  • Отказ, тип Булево. Признак отказа от записи документа. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись документа выполнена не будет. Значение по умолчанию: Ложь.
ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Возникает на сервере при записи объекта из формы. Процедура-обработчик вызывается после записи объекта (после события ПриЗаписи объекта) в базу данных, но до окончания транзакции записи.

  • Отказ, тип Булево. Признак отказа от записи. Если в теле процедуры-обработчика установить данному параметру значение Истина, то запись произведена не будет. Значение по умолчанию: Ложь.
  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый документ.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)  // модуль формы сервер

Расширение управляемой формы для документа. Вызывается после записи объекта на сервере и после завершения транзакции.

  • ТекущийОбъект, тип ДокументОбъект.ИмяДокумента. Записываемый объект.
  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».
ПослеЗаписи(ПараметрыЗаписи)  // модуль формы клиент

Расширение управляемой формы для документа. Возникает на сервере после записи объекта и после окончания транзакции записи, то есть к моменту вызова этой процедуры запись объекта полностью завершена.

  • ПараметрыЗаписи, тип Структура. Структура, содержащая параметры записи. Для формы документа существует два предопределенных параметра — РежимЗаписи и РежимПроведения. Они добавляются автоматически при вызове команд «Провести», «Провести и закрыть», «Отмена проведения».

Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере.

Поиск:
1С:Предприятие • Документ • Перед записью • Перед записью на сервере • После записи • После записи на сервере • При записи • При записи на сервере • Событие

Добрый день! При проведении документа осуществленна проверка, в случае проведения документа из формы и наличию ошибок при проведении необходимо отобразить подробный список ошибок, механизм СообщитьПользователю не подходит для этого. Подскажите, как лучше передать результат выполнения на клиентскую часть? Погуглил — рекомендуют разместить результат в параметрах сеанса и т.д., но мне это кажется диким, что лучше сделать?

не, не подходит такой вариант Нужна специализированная форма в которой будет в иерархическом виде отображаться ошибки, предлагаться расшифровки и горячие кнопки для исправления… необходимо где то сохранить результат, чтобы потом его вывести в отдельной форме «для ошибок», либо на форме документа отобразить элемент, по нажатию на который будет выведена форма «для ошибок».

почему с этим не справиться регистр сведений?

при откате транзакции, он тоже откатывается.

Чем временное хранилище не подходит?

пока решил сделать именно через временное хранилище, остался вопрос только с тем как кинуть адресом временного хранилища в форму и в составке данных, которые кидаю…

+100500 — почему то все советуют сделать именно через справочник

ТЗ/ДЗ, что может быть проще?

так то эти данные не отображаются клиенте+кидаться с сервером ДЗ вообще нельзя.

Самый хороший способ — через доп.данные объекта-документа. Добавить в доп.данные таблицу значений, в форме должно быть событие, которое происходит после записи о объекта и в котором доступен сам объект, т.е. не произошла еще конвертация в реквизит формы. там и прочитать доп.параметры, заполнив реквизит формы — таблицу значений с сообщениями, ну а дальше можно делать с ней что угодно. Сейчас под рукой нет 1с, проверить это не могу, но я бы действовал примерно так

— если транзакция откатывается — события такого нет. И вообще с доп. свойствами можно работать на форме перед записью на сервере, после записи у тек. объекта их уже нет — там другой экземпляр. Хотя если такой способ рабочий, то может с ним стоит еще покопаться. Я пока решил эту проблему по другому, но хочу вернуться к ней и сделать правильно.

Что бы проверить, что он рабочий — нужно в конфигураторе посидеть. Но у формы документа, если я не ошибаюсь, есть событие, в котором доступен объект, не реквизит формы Объект, а именно тот объект, который был записан и он должен передаваться в параметре события. Но, конечно, я могу ошибаться. Проверить смогу только на следующей неделе -сейчас в отпуске

а если его персонально в транзакцию обернуть?

в 1с нет автономных транзакций. Все, что выполняется в рамках транзакции, например, запись, является одной транзакцией и будет откачено при роллбеке. Как вариант, если использовать временное хранилище — можно использовать guid самого объекта. Затем на форме получить значение из временного хранилища по этому guid-у. Это не очень хорошее решение, но рабочее.

Объект.ДополнительныеСвойства — это структура которая существует пока существует сам объект, сувай туда.

Я тут поигрался, и вроде как в случае отказа поведения, никакой обработчик формы не вызывается. Поэтому видится вариант делать свою кнопку проведения в которой получать объект, проводить, и ловить ошибки в ДополнительныеСвойства.

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Если при исполнении программы происходит ошибка, то 1С сообщает о ней пользователю.

Сообщение обычно производится в окне с красным крестом, откуда такие сообщения называют «поймать красный крест» или «не работает, есть красные ошибки».

Конструкция 1С Попытка-Исключение служит для обработки возможных ошибочных ситуаций.

Хорошим тоном считается обрабатывать ошибки с помощью конструкции 1С Попытка-Исключение, то есть предусматривать места, где они могут произойти и ставить обработчик, который запишет ошибку «в сообщения администратору», а пользователю или сообщит корректно или найдет способ отработать по-другому.
Переменная1 = "22";
Попытка
     //код, который может вызвать ошибку
     ЧислоСтрокой = Число(Переменная1);
Исключение
     ТекстОшибки = ОписаниеОшибки();
КонецПопытки

Код, в котором может произойти ошибка, обрамляется оператором 1С Попытка-Исключение.

В случае, если ошибка происходит, срабатывает выполнение кода между Исключение и КонецПопытки. Если ошибка не происходит, тот код между Исключение и КонецПопытки не выполняется.

Чтобы получить расшифровку ошибки, необходимо получить текст ошибки с помощью функции ОписаниеОшибки() сразу после слова Исключение.

Также существует функция ИнформацияОбОшибке(), которую можно вызывать вместо ОписаниеОшибки(). Разница в том, что она возвращает информацию в структурированном виде, а не строкой.

Структура, возвращаемая функцией ИнформацияОбОшибке():

Проголосовать за этот пост:

Загрузка…

Posted in Язык 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) кругозор расширил

Содержание:

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 дней бесплатно

Оцените публикацию

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд

(2 оценок, среднее: 5,00 из 5)

Загрузка…

Назад к статье

Отчеты, документы, обработки

Назад к статье

Новости и изменения

Назад к статье

Дополнительные материалы

Назад к статье

Топ-вопросов

  • 1с ошибки при написании запросов
  • 1с ошибка этот установочный пакет не поддерживается этим типом процессора
  • 1с ошибка экспорта табличного документа превышен максимальный размер текста ячейки документа excel
  • 1с ошибка экспорта табличного документа документ excel 2007 не может содержать более 16384 колонок
  • 1с ошибка чтения свойства списокошибок менеджера криптографии