ОтчетОбОшибке.ДополнительныеДанные

Свойства · AdditionalData

Тип: Произвольный. Дополнительные данные, которые может приложить разработчик прикладного решения.

Полное описание, параметры и ограничения

ОтчетОбОшибке.ДополнительныеДанные (ErrorReport.AdditionalData)

ОтчетОбОшибке (ErrorReport)

ДополнительныеДанные (AdditionalData)

Доступен, начиная с версии 8.3.17.

Использование:
Чтение и запись.
Описание:
Тип: Произвольный.
Дополнительные данные, которые может приложить разработчик прикладного решения.
Доступность:

Тонкий клиент, веб-клиент, толстый клиент.

Использование в версии:

Доступен, начиная с версии 8.3.17.

Методическая информация

Практические примеры

Отправить учебный отчёт только в свой заранее настроенный сервис

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

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

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

Подготовка

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

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

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

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

  5. Это необязательное упражнение с реальной сетью. Выполняйте только если вы самостоятельно подготовили и проверили принадлежащий вам учебный сервис приёма отчётов платформы. Не используйте чужой URL, рабочую поддержку, случайный HTTP-обработчик или фиктивный домен.

  6. В собственной форме создайте строковые реквизиты УчебныйАдресСервиса и ПодтверждениеОтправки с полями ввода; изначально оба пустые. Настройки адреса/политики выставьте вручную только своему учебному пользователю. Общие дополнительные сведения должны быть пустыми.

  7. Для чтения общих настроек учебный пользователь должен иметь Администрирование данных. Код не меняет политику, не обходит отказ в доступе и не включает привилегированный режим.

  8. Перед запуском введите адрес своего сервиса и точную фразу ОТПРАВИТЬ УЧЕБНЫЙ ОТЧЕТ В МОЙ СЕРВИС. В открывшейся форме просмотрите все категории, адресата и окончательно подтвердите либо отмените. Отдельно проверьте журнал собственного получателя.

&НаКлиенте
Процедура ВыполнитьПример(Команда)
    Если ПодтверждениеОтправки <> "ОТПРАВИТЬ УЧЕБНЫЙ ОТЧЕТ В МОЙ СЕРВИС" Тогда
        ВызватьИсключение "Нужно явное подтверждение учебной отправки";
    КонецЕсли;
    Если ПустаяСтрока(УчебныйАдресСервиса) Тогда
        ВызватьИсключение "Укажите адрес своего заранее настроенного учебного сервиса";
    КонецЕсли;
    ПроверитьСвойУчебныйСервисНаСервере(УчебныйАдресСервиса);
    Отчет = СоздатьСобственныйУчебныйОтчет();
    Отчет.Описание = "Собственный учебный отчёт: книга guide-book, количество 3";
    Отчет.ДополнительныеДанные = Новый Структура("Ключ,Количество", "guide-book", 3);
    Если Отчет.ДополнительныеФайлы.Количество() <> 0 Тогда
        ВызватьИсключение "Есть неожиданные вложения; отправка запрещена";
    КонецЕсли;
    ПодтверждениеОтправки = "";
    Отчет.Отправить(Истина);
    Сообщить("Метод вернул управление. Это не подтверждение согласия, сетевой доставки или принятия отчёта сервисом");
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПроверитьСвойУчебныйСервисНаСервере(ОжидаемыйАдрес)
    Настройки = ОбработкаОшибок.ПолучитьНастройкиПользователя();
    Общие = ОбработкаОшибок.ПолучитьОбщиеНастройки();
    Если Настройки.АдресСервисаОбработкиОшибок <> ОжидаемыйАдрес Тогда
        ВызватьИсключение "Адрес текущего пользователя не совпал с вашим учебным сервисом; наследование здесь запрещено";
    КонецЕсли;
    Если Настройки.ОтправлятьОтчетНаКлиенте <> РежимОтправкиИнформацииОбОшибке.СпрашиватьПользователя Тогда
        ВызватьИсключение "Для упражнения требуется режим СпрашиватьПользователя";
    КонецЕсли;
    Запрет = РежимОтправкиИнформацииОбОшибке.НеОтправлять;
    Если Настройки.ВключатьИмяПользователяВОтчетНаКлиенте <> Запрет
        Или Настройки.ВключатьПодробныйТекстОшибкиВОтчетНаКлиенте <> Запрет
        Или Настройки.ВключатьСведенияОбИнформационнойБазеВОтчетНаКлиенте <> Запрет
        Или Настройки.ВключатьИнформациюОСистемеВОтчетНаКлиенте <> Запрет
        Или Настройки.ВключатьСнимокОконВОтчетНаКлиенте <> Запрет Тогда
        ВызватьИсключение "Чувствительные категории не запрещены явно; отправка запрещена";
    КонецЕсли;
    Если Не ПустаяСтрока(Настройки.ДополнительнаяИнформацияОтчета)
        Или Не ПустаяСтрока(Общие.ДополнительнаяИнформацияОтчета) Тогда
        ВызватьИсключение "Дополнительная информация пользователя/общих настроек не пуста";
    КонецЕсли;
КонецПроцедуры

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

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

  1. Клиентская команда требует непустой адрес и собственное явно введённое подтверждение. Пустое значение по умолчанию не инициирует отправку.

  2. Серверная процедура проверяет имя своей конфигурации, точный пользовательский адрес без наследования и режим СпрашиватьПользователя. Она только читает текущие настройки.

  3. Пять чувствительных категорий должны быть явно НеОтправлять. Авто не принимается за анонимизацию. Дополнительная строка пользователя и общих настроек обязана быть пустой.

  4. Конструктор получает нашу контролируемую ошибку, а не реальный аварийный дамп. Проверка пустых вложений предшествует Отправить.

  5. Отправить(Истина) открывает интерактивную форму. Метод не возвращает доказательство доставки; запрет/отсутствие адресата могут означать отсутствие действий, а отмена пользователя — отсутствие отправки.

  6. Фраза сбрасывается перед вызовом, чтобы повторный запуск требовал нового намеренного подтверждения. Проверка настроек не защищает от их конкурентного изменения и не является полноценной системой безопасности.

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

  1. При пустом адресе, неверной фразе, неподходящей политике или чужой конфигурации отправка не вызывается.

  2. На собственном настроенном сервисе подтвердите учебный отчёт и проверьте факт приёма по его журналу. Отмена окна не должна выдаваться за доставку.

  3. В тесте не используются рабочие сведения, снимки, вложения или токены. Сам код в данном руководстве в 1С и по сети не проверялся.

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

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

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

  1. Реальная отправка — внешнее действие. Без своего проверенного сервиса пропустите запуск этого упражнения, сохранив пример для изучения.

  2. Проверка имени конфигурации не доказывает владение адресатом; это обеспечивается вашей подготовкой и контролем собственного сервиса.

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

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

Сформировать учебный отчёт и прочитать его 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С» и не аффилирован с ней.