Предоставляет доступ к функциям для обработки ошибок.
Полное описание, параметры и ограничения
МенеджерОбработкиОшибок (ErrorProcessingManager)
МенеджерОбработкиОшибок (ErrorProcessingManager)
Доступен, начиная с версии 8.3.17.
Методы:
КатегорияОшибкиДляПользователя (ErrorCategoryForUser)
КраткоеПредставлениеОшибки (BriefErrorDescription)
ПодробноеПредставлениеОшибки (DetailErrorDescription)
ПоказатьИнформациюОбОшибке (ShowErrorInfo)
ПолучитьНастройкиОбработкиОшибокПриЗапуске (GetErrorOnStartupProcessingSettings)
ПолучитьНастройкиПользователя (GetUserSettings)
ПолучитьОбщиеНастройки (GetCommonSettings)
ПредставлениеОшибкиДляПользователя (ErrorDescriptionForUser)
СообщениеОбОшибкеДляПользователя (ErrorMessageForUser)
УстановитьНастройкиОбработкиОшибокПриЗапуске (SetErrorOnStartupProcessingSettings)
УстановитьНастройкиПользователя (SetUserSettings)
УстановитьОбщиеНастройки (SetCommonSettings)
Описание:
Предоставляет доступ к функциям для обработки ошибок.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.3.17.
Методическая информация
Практические примеры
Отправить учебный отчёт только в свой заранее настроенный сервис
Полный пример отправки проверяет собственную конфигурацию, совпадение адреса, режим вопроса пользователю и запрет чувствительных категорий. Успех вызова не выдаётся за приём отчёта сервисом.
Где и как запускать
Полный модуль собственной управляемой формы: клиентская команда и клиентская функция создания контролируемого отчёта. В последнем уроке есть также серверная проверка политики.
Подготовка
Используйте собственную пустую учебную базу УчебнаяКонфигурацияСинтаксиса и отдельного учебного пользователя. Создайте управляемую обработку с командой ВыполнитьПример. Полный код каждого урока вставляйте в отдельную копию модуля формы.
Запускайте в тонком клиенте Windows или поддерживаемом толстом клиенте. Здесь не пример мобильного сервера: методы записи/отправки отчёта по справке клиентские.
Создаётся только контролируемое исключение с учебным сообщением. Не провоцируйте аварийное завершение 1С и не подменяйте его реальной рабочей ошибкой, содержащей персональные данные.
Отчёт автоматически использует настройки пользователя. До опыта вручную настройте в собственной базе запрет включения имени пользователя, сведений базы, подробного текста, системной информации и снимков. Просматривайте интерактивный отчёт перед сохранением/отправкой; сам конструктор не является анонимизацией.
Это необязательное упражнение с реальной сетью. Выполняйте только если вы самостоятельно подготовили и проверили принадлежащий вам учебный сервис приёма отчётов платформы. Не используйте чужой URL, рабочую поддержку, случайный HTTP-обработчик или фиктивный домен.
В собственной форме создайте строковые реквизиты УчебныйАдресСервиса и ПодтверждениеОтправки с полями ввода; изначально оба пустые. Настройки адреса/политики выставьте вручную только своему учебному пользователю. Общие дополнительные сведения должны быть пустыми.
Для чтения общих настроек учебный пользователь должен иметь Администрирование данных. Код не меняет политику, не обходит отказ в доступе и не включает привилегированный режим.
Перед запуском введите адрес своего сервиса и точную фразу ОТПРАВИТЬ УЧЕБНЫЙ ОТЧЕТ В МОЙ СЕРВИС. В открывшейся форме просмотрите все категории, адресата и окончательно подтвердите либо отмените. Отдельно проверьте журнал собственного получателя.
&НаКлиенте
Процедура ВыполнитьПример(Команда)
Если ПодтверждениеОтправки <> "ОТПРАВИТЬ УЧЕБНЫЙ ОТЧЕТ В МОЙ СЕРВИС" Тогда
ВызватьИсключение "Нужно явное подтверждение учебной отправки";
КонецЕсли;
Если ПустаяСтрока(УчебныйАдресСервиса) Тогда
ВызватьИсключение "Укажите адрес своего заранее настроенного учебного сервиса";
КонецЕсли;
ПроверитьСвойУчебныйСервисНаСервере(УчебныйАдресСервиса);
Отчет = СоздатьСобственныйУчебныйОтчет();
Отчет.Описание = "Собственный учебный отчёт: книга guide-book, количество 3";
Отчет.ДополнительныеДанные = Новый Структура("Ключ,Количество", "guide-book", 3);
Если Отчет.ДополнительныеФайлы.Количество() <> 0 Тогда
ВызватьИсключение "Есть неожиданные вложения; отправка запрещена";
КонецЕсли;
ПодтверждениеОтправки = "";
Отчет.Отправить(Истина);
Сообщить("Метод вернул управление. Это не подтверждение согласия, сетевой доставки или принятия отчёта сервисом");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПроверитьСвойУчебныйСервисНаСервере(ОжидаемыйАдрес)
Настройки = ОбработкаОшибок.ПолучитьНастройкиПользователя();
Общие = ОбработкаОшибок.ПолучитьОбщиеНастройки();
Если Настройки.АдресСервисаОбработкиОшибок <> ОжидаемыйАдрес Тогда
ВызватьИсключение "Адрес текущего пользователя не совпал с вашим учебным сервисом; наследование здесь запрещено";
КонецЕсли;
Если Настройки.ОтправлятьОтчетНаКлиенте <> РежимОтправкиИнформацииОбОшибке.СпрашиватьПользователя Тогда
ВызватьИсключение "Для упражнения требуется режим СпрашиватьПользователя";
КонецЕсли;
Запрет = РежимОтправкиИнформацииОбОшибке.НеОтправлять;
Если Настройки.ВключатьИмяПользователяВОтчетНаКлиенте <> Запрет
Или Настройки.ВключатьПодробныйТекстОшибкиВОтчетНаКлиенте <> Запрет
Или Настройки.ВключатьСведенияОбИнформационнойБазеВОтчетНаКлиенте <> Запрет
Или Настройки.ВключатьИнформациюОСистемеВОтчетНаКлиенте <> Запрет
Или Настройки.ВключатьСнимокОконВОтчетНаКлиенте <> Запрет Тогда
ВызватьИсключение "Чувствительные категории не запрещены явно; отправка запрещена";
КонецЕсли;
Если Не ПустаяСтрока(Настройки.ДополнительнаяИнформацияОтчета)
Или Не ПустаяСтрока(Общие.ДополнительнаяИнформацияОтчета) Тогда
ВызватьИсключение "Дополнительная информация пользователя/общих настроек не пуста";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Функция СоздатьСобственныйУчебныйОтчет()
Попытка
ВызватьИсключение "Учебная ошибка проверки книги guide-book";
Исключение
Информация = ИнформацияОбОшибке();
Возврат Новый ОтчетОбОшибке(Информация);
КонецПопытки;
КонецФункцииРазбор по шагам
Клиентская команда требует непустой адрес и собственное явно введённое подтверждение. Пустое значение по умолчанию не инициирует отправку.
Серверная процедура проверяет имя своей конфигурации, точный пользовательский адрес без наследования и режим СпрашиватьПользователя. Она только читает текущие настройки.
Пять чувствительных категорий должны быть явно НеОтправлять. Авто не принимается за анонимизацию. Дополнительная строка пользователя и общих настроек обязана быть пустой.
Конструктор получает нашу контролируемую ошибку, а не реальный аварийный дамп. Проверка пустых вложений предшествует Отправить.
Отправить(Истина) открывает интерактивную форму. Метод не возвращает доказательство доставки; запрет/отсутствие адресата могут означать отсутствие действий, а отмена пользователя — отсутствие отправки.
Фраза сбрасывается перед вызовом, чтобы повторный запуск требовал нового намеренного подтверждения. Проверка настроек не защищает от их конкурентного изменения и не является полноценной системой безопасности.
Как проверить результат
При пустом адресе, неверной фразе, неподходящей политике или чужой конфигурации отправка не вызывается.
На собственном настроенном сервисе подтвердите учебный отчёт и проверьте факт приёма по его журналу. Отмена окна не должна выдаваться за доставку.
В тесте не используются рабочие сведения, снимки, вложения или токены. Сам код в данном руководстве в 1С и по сети не проверялся.
Ожидаемый результат
Подготовлен полный добровольный пример отправки с проверками и отдельным подтверждением реальной доставки.
На что обратить внимание
Реальная отправка — внешнее действие. Без своего проверенного сервиса пропустите запуск этого упражнения, сохранив пример для изучения.
Проверка имени конфигурации не доказывает владение адресатом; это обеспечивается вашей подготовкой и контролем собственного сервиса.
Не публикуйте JSON или содержимое отчёта только потому, что учебные поля безопасны: автоматические поля требуют отдельного просмотра.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Разобрать режим отправки отдельно на клиенте и сервере
Авто, НеОтправлять, Отправлять и СпрашиватьПользователя — четыре значения, не простой флаг Да/Нет. Авто требует общих настроек, а серверная настройка имеет отдельное назначение.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Учебная копия базы 8.5.1.1343: серверный общий модуль УчебныеЗадачи, процедура ВыполнитьПример() Экспорт. Каждый код без директив вставляйте в тело отдельно.
Текущий учебный пользователь должен иметь Администрирование данных для чтения общих настроек. Не обходите отказ в доступе привилегированным режимом.
ПолучитьНастройкиПользователя вызывается без имени: исследуется только текущий пользователь, не произвольный сотрудник.
Задания только читают. Не вызывайте УстановитьНастройкиПользователя/УстановитьОбщиеНастройки, не имитируйте падение 1С и не отправляйте отчёт во внешние сервисы.
Значения зависят от учебной базы. Диагностический вывод не доказывает отправку отчёта, получение согласия пользователя или доступность сервиса.
Настройки = ОбработкаОшибок.ПолучитьНастройкиПользователя();
Общие = ОбработкаОшибок.ПолучитьОбщиеНастройки();
Сообщить("Пользователь/клиент: " + Строка(Настройки.ОтправлятьОтчетНаКлиенте));
Сообщить("Общие/клиент: " + Строка(Общие.ОтправлятьОтчетНаКлиенте));
Сообщить("Пользователь/сервер: " + Строка(Настройки.ОтправлятьОтчетНаСервере));
Сообщить("Общие/сервер: " + Строка(Общие.ОтправлятьОтчетНаСервере));
РежимКлиента = Настройки.ОтправлятьОтчетНаКлиенте;
Если РежимКлиента = РежимОтправкиИнформацииОбОшибке.Авто Тогда
Сообщить("Авто: пользовательский режим не трактуем как самостоятельное согласие на отправку");
ИначеЕсли РежимКлиента = РежимОтправкиИнформацииОбОшибке.НеОтправлять Тогда
Сообщить("Для пользователя выбран запрет отправки обычного клиентского отчёта");
ИначеЕсли РежимКлиента = РежимОтправкиИнформацииОбОшибке.СпрашиватьПользователя Тогда
Сообщить("Нужен ответ пользователя; этот диагностический код его не получает");
ИначеЕсли РежимКлиента = РежимОтправкиИнформацииОбОшибке.Отправлять Тогда
Сообщить("Режим предусматривает отправку; адрес и фактический результат этим кодом не проверены");
КонецЕсли;Разбор по шагам
Печатаем только четыре перечислимых режима: пользователь/общие × клиент/сервер.
Разбираем пользовательский клиентский режим четырьмя отдельными ветками.
Не превращаем Авто или СпрашиватьПользователя в Истина и не подменяем пользовательское согласие.
Серверный отчёт относится, в частности, к фоновым заданиям/HTTP-сервисам без клиентской обработки; не переносим туда результат клиентской ветки.
Как проверить результат
Видны четыре исходных режима и ровно одно пояснение текущего клиентского значения.
Никакого окна согласия, HTTP-вызова или отправки отчёта этот код не создаёт.
Ожидаемый результат
Разделены политика клиента, политика сервера и реальный факт отправки.
На что обратить внимание
Правило Авто нужно анализировать вместе с общими настройками, а не считать универсальным разрешением.
Даже Отправлять не является подтверждением отправленного/принятого отчёта.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.