Сформировать учебный отчёт и прочитать его JSON без публикации данных

Учебные задачи

Из контролируемого исключения создаём настоящий ОтчетОбОшибке, добавляем собственное описание и проверяем JSON-представление, не выводя весь отчёт в сообщения.

Где и как запускать

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

Подготовка

  1. Используйте собственную пустую учебную базу УчебнаяКонфигурацияСинтаксиса и отдельного учебного пользователя. Создайте управляемую обработку с командой ВыполнитьПример. Полный код каждого урока вставляйте в отдельную копию модуля формы.

  2. Запускайте в тонком клиенте Windows или поддерживаемом толстом клиенте. Здесь не пример мобильного сервера: методы записи/отправки отчёта по справке клиентские.

  3. Создаётся только контролируемое исключение с учебным сообщением. Не провоцируйте аварийное завершение 1С и не подменяйте его реальной рабочей ошибкой, содержащей персональные данные.

  4. Отчёт автоматически использует настройки пользователя. До опыта вручную настройте в собственной базе запрет включения имени пользователя, сведений базы, подробного текста, системной информации и снимков. Просматривайте интерактивный отчёт перед сохранением/отправкой; сам конструктор не является анонимизацией.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Отчет = СоздатьСобственныйУчебныйОтчет();
    Отчет.Описание = "Учебный сценарий: проверка собственной книги, количество 3";
    Отчет.ДополнительныеДанные = Новый Структура("Ключ,Количество", "guide-book", 3);
    Сообщить(Отчет.Описание = "Учебный сценарий: проверка собственной книги, количество 3");
    Сообщить(Отчет.ДополнительныеДанные.Ключ = "guide-book");
    Сообщить(Отчет.ДополнительныеДанные.Количество = 3);
    Сообщить(СтрНайти(Отчет.ИнформацияОбОшибке.Описание, "Учебная ошибка проверки книги") > 0);
    Сообщить("Приложенных файлов: " + Строка(Отчет.ДополнительныеФайлы.Количество()));
    ТекстJSON = Отчет.ПолучитьТекстОтчета();
    Чтение = Новый ЧтениеJSON;
    Чтение.УстановитьСтроку(ТекстJSON);
    Попытка
        Прочитано = ПрочитатьJSON(Чтение);
    Исключение
        Чтение.Закрыть();
        ВызватьИсключение;
    КонецПопытки;
    Чтение.Закрыть();
    Сообщить("JSON прочитан; тип корня: " + Строка(ТипЗнч(Прочитано)));
    Сообщить("Длина JSON в символах: " + Строка(СтрДлина(ТекстJSON)));
КонецПроцедуры

&НаКлиенте
Функция СоздатьСобственныйУчебныйОтчет()
    Попытка
        ВызватьИсключение "Учебная ошибка проверки книги guide-book";
    Исключение
        Информация = ИнформацияОбОшибке();
        Возврат Новый ОтчетОбОшибке(Информация);
    КонецПопытки;
КонецФункции

Разбор по шагам

  1. ИнформацияОбОшибке получаем внутри Исключение, пока обрабатывается именно наше контролируемое исключение. Объект передаётся обязательным аргументом конструктора ОтчетОбОшибке.

  2. Описание и ДополнительныеДанные отчёта изменяемы. ИнформацияОбОшибке и ссылка на массив ДополнительныеФайлы доступны только для чтения; не присваиваем им новые объекты.

  3. ПолучитьТекстОтчета возвращает JSON. Читаем его стандартным JSON-читателем и закрываем читатель как при успехе, так и при ошибке.

  4. Не угадываем английские/русские ключи схемы отчёта и не требуем заранее конкретный тип корня: показываем фактически прочитанный тип и длину.

  5. Справка говорит, что поля, запрещённые к отправке или требующие разрешения, не инициализируются в этом тексте. Это не означает, что любой отчёт автоматически обезличен; всё равно проверяйте настройки и содержимое в собственной базе.

  6. ТекстJSON и разобранный объект не выводим целиком. Даже диагностический JSON может содержать сведения приложения; длина в символах не равна размеру UTF-8 файла.

Как проверить результат

  1. Четыре логических проверки дают Истина; ошибка содержит собственное учебное сообщение.

  2. JSON успешно читается либо выдаётся реальная ошибка формата. Нет записи архива или отправки: в уроке только получение текста.

Ожидаемый результат

Создан настоящий отчёт из контролируемой ошибки и разобран его текст без публикации содержимого.

На что обратить внимание

  1. Не выдумывайте структуру JSON-отчёта: контракт полей здесь не описан.

  2. Показано управление отчётом, а не анонимизация реального стека и не отправка в поддержку.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.