Получение стека вызовов в 1С

07.04.25

Разработка - Универсальные функции

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

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

В самой платформе нет прямого способа получить это (или я не нашел). Я думал, что можно через Причину полученную из ИнформацияОбОшибке() раскрутить стек, но у меня там возвращает неопределено. Если кто-то знает способ все-таки вытащить информацию оттуда (ведь как-то это делает ПодробноеПредставлениеОшибки, то буду рад узнать

Благодаря статье //infostart.ru/1c/articles/1879817/, которая решает немного другую задачу, я написал для себя функцию получения стека - более универсальную.

Функция ПолучитьСтекВызовов() Экспорт 
	
	Стек = "Стек вызовов :" + Символы.ПС; 
	Попытка
		а = 1 / 0;	
	Исключение
		ПодробноеПредставление	= СтрЗаменить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()), "Деление на 0", "");
		СтекМассив = СтрРазделить(ПодробноеПредставление, Символы.ПС);
		Для Сч = 3 По СтекМассив.Количество() - 1 Цикл 
			Стек = Стек + СтекМассив[Сч] + Символы.ПС;
		КонецЦикла;
	КонецПопытки;
	
	Возврат Стек;
КонецФункции

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

 

Можно также получить и вернуть массив строк стека, не преобразуя его к единой строке, чтобы анализировать построчно. Также можно "выдернуть" из каждой строки отдельные составляющие - имя модуля, номер строки, исходную строку. Это все несложно сделать при желании. У меня пока такой потребности не было. 

Буду надеяться, этот пример будет кому-то полезен.

Платформа Стек вызовов Обработка ошибок Логирование Системные функции

См. также

Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

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

21.05.2024    30351    dimanich70    83    

152

Универсальные функции Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    4942    6    John_d    11    

57

Универсальные функции Программист Стажер Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    33896    atdonya    26    

61

Универсальные функции Программист Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    6535    ke.92@mail.ru    17    

66

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    18067    YA_418728146    8    

172

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    4812    79    progmaster    11    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 1C:Бухгалтерия 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    19804    190    sapervodichka    113    

137
Оставьте свое сообщение