Показать сообщение отдельно
Старый 06.12.2007, 11:49   #5  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от ledenezz Посмотреть сообщение
Меня интересует, например таблица RpayHRMOrganization у неё есть поля CorrAccount и CorrAccount_Tax которые ссылаются на таблицу LedgerTable. Так вот можно ли проверить, есть ли такая запись в LedgerTable?
Есть стандартный механизм проверки целостности данных компании (класс SysConsistencyCheck). Для многих модулей есть проверки, реализованные с его помощью, но даже если для интересующих вас таблиц таких проверок нет, их легко приделать самостоятельно. Метод SysConsistencyCheck.kernelCheckTable() для всех полей каждой записи проверяемой таблицы вызывает метод validateField(), который в общем случае (если он не перекрыт на таблице) проверяет содержимое поля на основе relation'ов таблицы и EDT этого поля. Соотв., к примеру, если у EDT для указанных полей RpayHRMOrganization или у тех EDT, от которых EDT полей наследуются (sorry, я указанных полей не нашел, видимо, это ваши доработки), прописан relation на поле LedgerTable, то при проверке в validateField() Аксапта по значениям этих полей будет искать, согласно с relation'ам, соотв. записи в LedgerTable - и ругаться, если таковых не найдет. Примеры создания наследников SysConsistencyCheck и использования метода kernelCheckTable() вы легко найдете по перекрестным ссылкам.
За это сообщение автора поблагодарили: gefr (1), ledenezz (1).