Глобальный контекст.ОписаниеОшибки

Методы · ErrorDescription

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

Синтаксис

ОписаниеОшибки()

Примеры платформы

Попытка
  ...
Исключение
  Ошибка = ОписаниеОшибки();
  ЗаписьЖурналаРегистрации("НедопустимаяОперация", УровеньЖурналаРегистрации.Ошибка,,,
     Ошибка);
КонецПопытки
Полное описание, параметры и ограничения

Глобальный контекст.ОписаниеОшибки (Global context.ErrorDescription)

Глобальный контекст (Global context)

ОписаниеОшибки (ErrorDescription)

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

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

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

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Внимание: Данный метод не поддерживается при работе через COM-соединение
Примечание:
Применять данную функцию имеет смысл только внутри операторных скобок Исключение - КонецПопытки, так как в ином случае она вернет пустую строку. Помогает в выдаче диагностики при возникновении ошибок.
Не рекомендуется использовать для отображения пользователю.
Пример:

Попытка
...
Исключение
Ошибка = ОписаниеОшибки();
ЗаписьЖурналаРегистрации("НедопустимаяОперация", УровеньЖурналаРегистрации.Ошибка,,,
Ошибка);
КонецПопытки

См. также:
МенеджерОбработкиОшибок
МенеджерОбработкиОшибок, метод КраткоеПредставлениеОшибки
МенеджерОбработкиОшибок, метод ПодробноеПредставлениеОшибки
МенеджерОбработкиОшибок, метод ПоказатьИнформациюОбОшибке
Глобальный контекст, метод ИнформацияОбОшибке
Глобальный контекст, метод КраткоеПредставлениеОшибки
Глобальный контекст, метод ПодробноеПредставлениеОшибки
Глобальный контекст, метод ПоказатьИнформациюОбОшибке
ИнформацияОбОшибке, свойство Причина
ФоновоеЗадание, свойство ИнформацияОбОшибке

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

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

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

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

Отдельно переключить текущие итоги собственного регистра остатков

УстановитьИспользованиеТекущихИтогов возвращает Булево. Код проверяет только тип ответа, не считает его старым флагом; состояние заново читается getter.

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

Полный серверный модуль своей новой ПУСТОЙ УчебныеОстатки85, платформа 8.5.1.1343. Административные настройки собственного регистра; здесь не запускался.

Подготовка

  1. Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.

  2. Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.

  3. Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.

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

  5. Корневой режим совместимости Не использовать; платформа именно 8.5.1.1343. Единственный регистр — собственный УчебныеОстатки85 вида Остатки, единственный документ — УчебноеДвижение85. База новая пустая, не копия рабочей.

  6. Для этого блока никакие документы и движения не создавайте. Запрос проверяет отсутствие записей своего регистра до административного вызова. Других пользователей, обменов, расширений и фоновых заданий нет.

  7. Создайте серверный общий модуль УчебныеИтогиПримеры. Вставьте весь модуль одного урока, вызовите ВыполнитьПример() Экспорт из собственной серверной команды обработки; обновите конфигурацию БД.

  8. Это операции настройки/обслуживания регистра, не проведение документа. Откат движений не обещает восстановить все настройки/внутренние таблицы итогов.

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

  10. При переключении булевых флагов исходное значение читается заранее и восстанавливается при успехе/ошибке. Если восстановление само завершилось ошибкой, код сообщает об этом явно; успешное восстановление не выдумывается.

  11. Примеры здесь не запускались в 1С. Ваши настройки, документы и итоги этим заполнением не изменялись.

  12. У своего УчебныеОстатки85 добавьте макет УчебнаяПамяткаИтогов типа Текстовый документ: первая строка OWN-TOTALS-85, вторая Пустой учебный регистр, не рабочая база. Обновите БД.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Документы.Количество() <> 1
        Или Метаданные.РегистрыНакопления.Количество() <> 1
        Или Метаданные.Документы.Найти("УчебноеДвижение85") = Неопределено Тогда
        ВызватьИсключение "Разрешены только собственный учебный документ и регистр";
    КонецЕсли;
    Описание = Метаданные.РегистрыНакопления.Найти("УчебныеОстатки85");
    Если Описание = Неопределено Тогда
        ВызватьИсключение "Сначала создайте собственный учебный регистр";
    КонецЕсли;
    Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки
        Или Описание.Измерения.Количество() <> 1
        Или Описание.Ресурсы.Количество() <> 1
        Или Описание.Реквизиты.Количество() <> 0
        Или Описание.Измерения.Найти("КодТовара") = Неопределено
        Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
        ВызватьИсключение "Нужен регистр остатков с КодТовара и Количество";
    КонецЕсли;
    Менеджер = РегистрыНакопления.УчебныеОстатки85;
    Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
        ВызватьИсключение "Нужен собственный стенд без старого режима совместимости";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Не вызывайте административный опыт внутри чужой транзакции";
    КонецЕсли;
    Проверка = Новый Запрос;
    Проверка.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Строк
    |ИЗ РегистрНакопления.УчебныеОстатки85";
    Данные = Проверка.Выполнить().Выгрузить();
    Если Данные.Количество() <> 1 Тогда
        ВызватьИсключение "Не получена собственная контрольная строка";
    КонецЕсли;
    Если Данные[0].Строк <> 0 Тогда
        ВызватьИсключение "В собственном регистре уже есть движения: этот пустой административный опыт запрещён";
    КонецЕсли;
    ИсходныйФлаг = Менеджер.ПолучитьИспользованиеТекущихИтогов();
    Если ТипЗнч(ИсходныйФлаг) <> Тип("Булево") Тогда
        ВызватьИсключение "Не получен собственный исходный флаг";
    КонецЕсли;
    ИзменениеНачато = Ложь;
    Попытка
        ИзменениеНачато = Истина;
        ОтветПлатформы = Менеджер.УстановитьИспользованиеТекущихИтогов(Не ИсходныйФлаг);
        Сообщить(ТипЗнч(ОтветПлатформы) = Тип("Булево"));
        Сообщить(Менеджер.ПолучитьИспользованиеТекущихИтогов() = Не ИсходныйФлаг);
        Менеджер.УстановитьИспользованиеТекущихИтогов(ИсходныйФлаг);
        Если Менеджер.ПолучитьИспользованиеТекущихИтогов() <> ИсходныйФлаг Тогда
            ВызватьИсключение "Не подтверждено восстановление собственного флага";
        КонецЕсли;
        ИзменениеНачато = Ложь;
        Сообщить(Менеджер.ПолучитьИспользованиеТекущихИтогов() = ИсходныйФлаг);
    Исключение
        ИсходнаяОшибка = ОписаниеОшибки();
        Если ИзменениеНачато Тогда
            Попытка
                Менеджер.УстановитьИспользованиеТекущихИтогов(ИсходныйФлаг);
                Если Менеджер.ПолучитьИспользованиеТекущихИтогов() <> ИсходныйФлаг Тогда
                    Сообщить("Восстановление собственного флага текущие итоги не подтверждено");
                КонецЕсли;
            Исключение
                Сообщить("Восстановление собственного флага текущие итоги завершилось ошибкой; проверьте учебный стенд");
            КонецПопытки;
        КонецЕсли;
        ВызватьИсключение ИсходнаяОшибка;
    КонецПопытки;
КонецПроцедуры

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

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

  2. Сохранить именно флаг текущих итогов, не флаг общего использования.

  3. Перед вызовом отметить намерение изменения и переключить только эту настройку.

  4. Булев ответ setter не объявлять исходным состоянием; проверить новое состояние независимым getter.

  5. Восстановить прочитанный флаг в обоих исходах, предупреждая о неуспешном восстановлении.

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

  1. Тип ответа Булево и две проверки фактического состояния Истина.

  2. Общее использование итогов этим уроком не переключается.

  3. После нормального завершения исходный флаг текущих итогов восстановлен.

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

Два вида использования итогов и особый возвращаемый тип не смешиваются.

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

  1. Свойства и методы относятся только к собственному пустому регистру. Нельзя менять проверку имени на рабочий регистр ради опыта.

  2. ПолучитьИспользованиеИтогов и ПолучитьИспользованиеТекущихИтогов — разные настройки. Текущие итоги применимы только к Остатки.

  3. Булево возвращаемое значение метода не объявляется исходным состоянием или измеренным ускорением без отдельного контракта.

  4. Типизированные даты/флаги и явные проверки не являются доказательством запуска в 1С; здесь выполнялись только статические проверки.

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

Изменить только разделение итогов собственного пустого регистра

Разделение связано с параллельными записями итогов, а не с разделителями данных конфигурации. Здесь один сеанс и никаких обещаний ускорения.

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

Полный серверный модуль своей новой ПУСТОЙ УчебныеОстатки85, платформа 8.5.1.1343. Административные настройки собственного регистра; здесь не запускался.

Подготовка

  1. Создайте НОВУЮ пустую файловую базу, имя корневой конфигурации УчебныеОстатки85. Не добавляйте эти объекты в УТ/КА2/УНФ/БП. Режим управления блокировкой данных конфигурации — Управляемый.

  2. Документы → Добавить: УчебноеДвижение85. Номер: Строка длиной 40, автонумерация выключена. Модули объекта и менеджера оставьте пустыми; не добавляйте обработчики, подписки и обязательные пользовательские реквизиты.

  3. Регистры накопления → Добавить: УчебныеОстатки85. Вид регистра Остатки. Единственное измерение КодТовара: Строка 50, индексировать, проверка заполнения Показывать ошибку. Единственный ресурс Количество: Число 12,3, неотрицательное. Дополнительных реквизитов нет.

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

  5. Корневой режим совместимости Не использовать; платформа именно 8.5.1.1343. Единственный регистр — собственный УчебныеОстатки85 вида Остатки, единственный документ — УчебноеДвижение85. База новая пустая, не копия рабочей.

  6. Для этого блока никакие документы и движения не создавайте. Запрос проверяет отсутствие записей своего регистра до административного вызова. Других пользователей, обменов, расширений и фоновых заданий нет.

  7. Создайте серверный общий модуль УчебныеИтогиПримеры. Вставьте весь модуль одного урока, вызовите ВыполнитьПример() Экспорт из собственной серверной команды обработки; обновите конфигурацию БД.

  8. Это операции настройки/обслуживания регистра, не проведение документа. Откат движений не обещает восстановить все настройки/внутренние таблицы итогов.

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

  10. При переключении булевых флагов исходное значение читается заранее и восстанавливается при успехе/ошибке. Если восстановление само завершилось ошибкой, код сообщает об этом явно; успешное восстановление не выдумывается.

  11. Примеры здесь не запускались в 1С. Ваши настройки, документы и итоги этим заполнением не изменялись.

  12. У своего УчебныеОстатки85 добавьте макет УчебнаяПамяткаИтогов типа Текстовый документ: первая строка OWN-TOTALS-85, вторая Пустой учебный регистр, не рабочая база. Обновите БД.

Процедура ВыполнитьПример() Экспорт
    Если Метаданные.Документы.Количество() <> 1
        Или Метаданные.РегистрыНакопления.Количество() <> 1
        Или Метаданные.Документы.Найти("УчебноеДвижение85") = Неопределено Тогда
        ВызватьИсключение "Разрешены только собственный учебный документ и регистр";
    КонецЕсли;
    Описание = Метаданные.РегистрыНакопления.Найти("УчебныеОстатки85");
    Если Описание = Неопределено Тогда
        ВызватьИсключение "Сначала создайте собственный учебный регистр";
    КонецЕсли;
    Если Описание.ВидРегистра <> Метаданные.СвойстваОбъектов.ВидРегистраНакопления.Остатки
        Или Описание.Измерения.Количество() <> 1
        Или Описание.Ресурсы.Количество() <> 1
        Или Описание.Реквизиты.Количество() <> 0
        Или Описание.Измерения.Найти("КодТовара") = Неопределено
        Или Описание.Ресурсы.Найти("Количество") = Неопределено Тогда
        ВызватьИсключение "Нужен регистр остатков с КодТовара и Количество";
    КонецЕсли;
    Менеджер = РегистрыНакопления.УчебныеОстатки85;
    Если Метаданные.РежимСовместимости <> Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
        ВызватьИсключение "Нужен собственный стенд без старого режима совместимости";
    КонецЕсли;
    Если ТранзакцияАктивна() Тогда
        ВызватьИсключение "Не вызывайте административный опыт внутри чужой транзакции";
    КонецЕсли;
    Проверка = Новый Запрос;
    Проверка.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Строк
    |ИЗ РегистрНакопления.УчебныеОстатки85";
    Данные = Проверка.Выполнить().Выгрузить();
    Если Данные.Количество() <> 1 Тогда
        ВызватьИсключение "Не получена собственная контрольная строка";
    КонецЕсли;
    Если Данные[0].Строк <> 0 Тогда
        ВызватьИсключение "В собственном регистре уже есть движения: этот пустой административный опыт запрещён";
    КонецЕсли;
    ИсходныйФлаг = Менеджер.ПолучитьРежимРазделенияИтогов();
    Если ТипЗнч(ИсходныйФлаг) <> Тип("Булево") Тогда
        ВызватьИсключение "Не получен собственный исходный флаг";
    КонецЕсли;
    ИзменениеНачато = Ложь;
    Попытка
        ИзменениеНачато = Истина;
        Менеджер.УстановитьРежимРазделенияИтогов(Не ИсходныйФлаг);
        Сообщить(Менеджер.ПолучитьРежимРазделенияИтогов() = Не ИсходныйФлаг);
        Менеджер.УстановитьРежимРазделенияИтогов(ИсходныйФлаг);
        Если Менеджер.ПолучитьРежимРазделенияИтогов() <> ИсходныйФлаг Тогда
            ВызватьИсключение "Не подтверждено восстановление собственного флага";
        КонецЕсли;
        ИзменениеНачато = Ложь;
        Сообщить(Менеджер.ПолучитьРежимРазделенияИтогов() = ИсходныйФлаг);
    Исключение
        ИсходнаяОшибка = ОписаниеОшибки();
        Если ИзменениеНачато Тогда
            Попытка
                Менеджер.УстановитьРежимРазделенияИтогов(ИсходныйФлаг);
                Если Менеджер.ПолучитьРежимРазделенияИтогов() <> ИсходныйФлаг Тогда
                    Сообщить("Восстановление собственного флага разделение итогов не подтверждено");
                КонецЕсли;
            Исключение
                Сообщить("Восстановление собственного флага разделение итогов завершилось ошибкой; проверьте учебный стенд");
            КонецПопытки;
        КонецЕсли;
        ВызватьИсключение ИсходнаяОшибка;
    КонецПопытки;
КонецПроцедуры

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

  1. Проверить пустой собственный регистр без параллельных пользователей.

  2. Прочитать исходный флаг разделения, независимо от использования итогов.

  3. Отметить намерение изменения до процедуры установки.

  4. Переключить и повторно прочитать флаг; не выдумывать измерение параллельности по одному сеансу.

  5. Вернуть исходный флаг; неуспех восстановления выводится явно.

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

  1. Проверки переключения и возврата Истина.

  2. Никакие разделители данных или права не изменяются.

  3. Производительность не измерялась.

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

Проверено собственное состояние механизма без подмены другим видом разделения.

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

  1. Свойства и методы относятся только к собственному пустому регистру. Нельзя менять проверку имени на рабочий регистр ради опыта.

  2. ПолучитьИспользованиеИтогов и ПолучитьИспользованиеТекущихИтогов — разные настройки. Текущие итоги применимы только к Остатки.

  3. Булево возвращаемое значение метода не объявляется исходным состоянием или измеренным ускорением без отдельного контракта.

  4. Типизированные даты/флаги и явные проверки не являются доказательством запуска в 1С; здесь выполнялись только статические проверки.

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

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

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

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

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