Показать сообщение отдельно
Старый 27.01.2024, 14:53   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,889 / 3165 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Защита от повреждения типа таблицы в Аксапте 2012 R3
Привет всем.

Вот здесь я описал идею как можно было бы защититься от повреждений типа таблиц в аксапте 2012 R3
После инсталяции Map вдруг cтал Table?!

Попробовал реализовать. Похоже все получилось.
https://github.com/KozlovPavel677/AxTableTypeChangeFix

Идея фикса.
1. Пишем в базе модели функцию (aMRC_axTableType), которая разбирает бинарное поле ModelElementData.Properties и определяет по нему тип табличного объекта. Результат функции:
0 - Unknown
1 - Table
2 - View
3 - Map

2. На табличке ModelElementData в базе модели пишем триггер, который проверяет не поменялся ли для обновляемой таблички результат функции aMRC_axTableType. Если поменялся, то ругаемся и откатываем транзакцию (реально пришлось рубить текущее соединение)

Примерно неделю триггер живет на деве и тесте. Проблем не заметили.
Как тестировали.
Класс ViewTableProps_MRC перебирает все таблички в приложении и для каждой определяет тип таблицы через распаковку бинарного свойства ModelElementData.Properties и сравнивает результа с тем что вернул DictTable.isView() и DictTable.isMap(). Если выявлено несоответствие то пишет в инфолог "ERROR !!!".

Просьба к участникам форума поучаствовать в тестировании, прогнать этот проверочный класс на своих приложениях. Вдруг выявится ошибка в определении типа таблицы. Но мне кажется, что все должно быть нормально. Мы проверяли всеми способами.
За это сообщение автора поблагодарили: sukhanchik (10), Manner (1), Dron AKA andy (5), gl00mie (10).