Антивылет 1С

Делал из копии базы узел распределенной базы. Два узла сделались отлично, а один при запуске выдавал ошибку:

	"errorInfo": {
		"systemErrorInfo": {
			"clientStack": "unknown:0x0000000000000000 unknown:0x0000000000000000 unknown:0x0000000000000000 ",
			"clientStackHash": "761478DB226EAF60EECF11A413F5E1DF",
			"systemCrash": true
		},
		"applicationErrorInfo": {
			"errors": [
				[
					"Аварийное завершение",
					[],
					"",
					""
				]
			]
		}

Причем сначала появлялось окно обновления параметров работы приложения, так 1С реагирует всегда на превращение базы в периферийную:

И после ее завершения 1С вылетала аварийно.

Очистка кэша не помогла. Решил отладить, запустив 1С в режиме отладки.

Ошибка обнаружилась в модуле СтандартныеПодсистемыКлиент — 1С зачем-то пытается скрыть рабочий стол при начале системы и на этом вылетает:

Можно было бы использовать параметр запуска ПропуститьОчисткуСкрытияРабочегоСтола, но этот параметр при работе обновления программы убирается принудительно в коде, так что не поможет.

Решил проблему написав небольшое расширение именно в этой базе, где был вылет (РИБ позволяет делать локальные расширения):

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

Еще как вариант можно было попробовать поставить стандартные настройки панели разделов. Или очистить настройки пользователя. Или попробовать обновить/запустить базу под новым пользователем.

В итоге, слава богу, ошибка была на уровне 1С, а не платформы. Вылетает метод обновления интерфейса при некоторых параметрах. Лучше его не использовать.

Среда: УТ 11.5.20.68, 1С 8.3.24.1761. Объем: 1 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *