Возвращает строку, аналогичную той, что показывается в стандартном диалоге платформы "1С:Предприятие", вызываемом при нажатии кнопки "Подробно" из сообщения об ошибке.
Синтаксис
ПодробноеПредставлениеОшибки(<ИнформацияОбОшибке>)Полное описание, параметры и ограничения
Глобальный контекст.ПодробноеПредставлениеОшибки (Global context.DetailErrorDescription)
Глобальный контекст (Global context)
ПодробноеПредставлениеОшибки (DetailErrorDescription)
Не рекомендуется использовать, начиная с версии 8.3.17.
Рекомендуется использовать:
ПодробноеПредставлениеОшибки
Доступен, начиная с версии 8.1.
Синтаксис:
ПодробноеПредставлениеОшибки(<ИнформацияОбОшибке>)
Параметры:
<ИнформацияОбОшибке> (обязательный)
Тип: ИнформацияОбОшибке.
Содержит информацию об ошибке.
Возвращаемое значение:
Тип: Строка.
Описание:
Возвращает строку, аналогичную той, что показывается в стандартном диалоге платформы "1С:Предприятие", вызываемом при нажатии кнопки "Подробно" из сообщения об ошибке.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.1.
Не рекомендуется использовать, начиная с версии 8.3.17.
Описание изменено в версии 8.3.17.
Методическая информация
Практические примеры
Получить содержательное описание намеренной ошибки
Вызываем деление на ноль и изучаем объект ошибки: описание, модуль, исходную строку, категорию и возможную причину.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Ошибки намеренно создаются на вымышленных значениях в учебной базе; файлы и рабочие данные не используются.
ИнформацияОбОшибке и ОписаниеОшибки вызываются внутри Исключение, а не вне обработчика.
Сумма = 250;
Количество = 0;
Попытка
Среднее = Сумма / Количество;
Сообщить(Среднее);
Исключение
Ошибка = ИнформацияОбОшибке();
Сообщить(ОписаниеОшибки());
Сообщить(КраткоеПредставлениеОшибки(Ошибка));
Сообщить(ПодробноеПредставлениеОшибки(Ошибка));
Сообщить("Описание: " + Ошибка.Описание);
Сообщить("Модуль: " + Ошибка.ИмяМодуля);
Сообщить(СтрШаблон("Строка %1: %2", Ошибка.НомерСтроки, Ошибка.ИсходнаяСтрока));
Сообщить("Код: " + Ошибка.Код);
Сообщить("Дополнительная информация: " + Ошибка.ДополнительнаяИнформация);
Сообщить(Ошибка.ЯвляетсяОшибкойКатегории(КатегорияОшибки.ВсеОшибки));
Если Ошибка.Причина <> Неопределено Тогда
Сообщить("Причина: " + Ошибка.Причина.Описание);
Иначе
Сообщить("Отдельная вложенная причина не задана");
КонецЕсли;
КонецПопытки;Разбор по шагам
Деление на ноль заставляет управление перейти в Исключение; Среднее не является успешным результатом.
Сразу получаем объект ИнформацияОбОшибке и его текстовые представления.
Отделяем описание для пользователя от технических сведений о модуле и строке.
Код и дополнительная информация могут быть пустыми. Причину проверяем на Неопределено перед чтением свойств.
Как проверить результат
Количество=0 приводит к сообщениям об ошибке, а не к значению средней цены 0.
НомерСтроки указывает место в вашем модуле; он не обязан совпадать с номером строки HTML-примера.
Проверка категории ВсеОшибки даёт Истина. Измените количество на 2: выводится 125, обработчик ошибки не выполняется.
Ожидаемый результат
Ошибка диагностирована на контролируемом входе; успешный результат не подменён фиктивным нулём.
На что обратить внимание
Полный текст и исходная строка могут раскрывать секреты или личные данные — в рабочем приложении разделяйте пользовательское сообщение и защищённый технический журнал.
Не сравнивайте локализованный текст ошибки для бизнес-логики. Для специально маркированных ошибок используйте согласованный код или категорию.
Здесь ошибка поглощена ради просмотра диагностики. В реальной операции её нужно вернуть как явный статус либо передать вызывающему коду.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Передать ошибку выше, не потеряв место её возникновения
Вложенная функция разбирает JSON. Промежуточный слой пишет только учебное сообщение и повторно вызывает исходное исключение без замены его новым текстом.
Где и как запускать
В учебной базе создайте серверный общий модуль УчебныеЗадачи. Вставьте приведённые функции и процедуру целиком в модуль, не внутрь другой процедуры. Вызовите УчебныеЗадачи.ВыполнитьПример() из серверного обработчика команды учебной обработки. Каждый урок запускайте отдельно, без дублирования одноимённых процедур.
Подготовка
Ошибки намеренно создаются на вымышленных значениях в учебной базе; файлы и рабочие данные не используются.
ИнформацияОбОшибке и ОписаниеОшибки вызываются внутри Исключение, а не вне обработчика.
Функция УчебноеИмяИзJSON(Текст) Экспорт
Данные = ПрочитатьЗначениеJSON(Текст);
Если ТипЗнч(Данные) <> Тип("Структура") Тогда
ВызватьИсключение "Ожидался JSON-объект";
КонецЕсли;
Имя = Неопределено;
Если Не Данные.Свойство("name", Имя) Тогда
ВызватьИсключение "Нет поля name";
КонецЕсли;
Если ТипЗнч(Имя) <> Тип("Строка") Тогда
ВызватьИсключение "name должен быть строкой";
КонецЕсли;
Возврат Имя;
КонецФункции
Функция УчебнаяЗагрузкаИмени(Текст) Экспорт
Попытка
Возврат УчебноеИмяИзJSON(Текст);
Исключение
Сообщить("Учебная загрузка не завершена; исходная ошибка передаётся вызывающему коду");
ВызватьИсключение;
КонецПопытки;
КонецФункции
Процедура ВыполнитьПример() Экспорт
Попытка
Имя = УчебнаяЗагрузкаИмени("{");
Сообщить("Принято: " + Имя);
Исключение
Ошибка = ИнформацияОбОшибке();
Сообщить(ПодробноеПредставлениеОшибки(Ошибка));
Причина = Ошибка;
Уровень = 0;
Пока Причина <> Неопределено И Уровень < 20 Цикл
Уровень = Уровень + 1;
Сообщить(СтрШаблон("Уровень %1: %2; модуль %3; строка %4", Уровень,
Причина.Описание, Причина.ИмяМодуля, Причина.НомерСтроки));
Причина = Причина.Причина;
КонецЦикла;
Если Причина <> Неопределено Тогда
Сообщить("Дальнейшая цепочка причин не выводится: достигнут учебный лимит 20");
КонецЕсли;
КонецПопытки;
КонецПроцедурыРазбор по шагам
Исходная ошибка возникает в разборе известного некорректного JSON, а не из-за сети или конфигурации.
Промежуточный слой не возвращает пустую строку как будто загрузка успешна.
ВызватьИсключение без аргументов внутри обработчика передаёт исходную ошибку выше.
Верхний уровень читает диагностику и обходит имеющиеся причины, проверяя Неопределено и ограничивая объём вывода.
Как проверить результат
Для входа { нет сообщения Принято; есть техническая диагностика исходной ошибки разбора.
В подробном представлении проверьте исходный вызов ПрочитатьЗначениеJSON и место в вашем общем модуле, а не только промежуточный текст.
Замените вход на "{""name"":""Книга""}": выводится Принято: Книга, обработчики ошибок не выполняются.
Корректный JSON {"name":3} отклоняется уже правилом типа name, а не синтаксическим парсером.
Ожидаемый результат
Ошибка сохранена как ошибка и дошла до вызывающего уровня с диагностикой; корректный вход проходит весь путь.
На что обратить внимание
ВызватьИсключение ОписаниеОшибки() создаёт новое исключение с текстом и может потерять исходный диагностический контекст; это не равно повторному вызову без аргументов.
Реальные подробные ошибки сохраняйте в защищённом техническом журнале, а пользователю показывайте безопасное сообщение.
Цепочка причин может состоять из одного уровня; повторное исключение само по себе не обязано добавлять новую Причина.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.