|  05.12.2007, 15:39 | #1 | 
| Участник |  Как проверить целостность данных 
			
			Задача: Нужно перенести настройки в новую компанию из уже работающей компании. Я создала группу отпределения, в которую внесла все таблицы по моему мнению являющиеся настроечными, но разумеется выплыли ошибки, что в группу определения попали таблички, которые должны будут заполнятся в новой компании (несколько косвенно ссылавшихся на план счетов, а он будет новый). Содержимое нескольких подобных таблиц я вычистила. НО остались таблицы, который ссылались на неимпортированные таблицы. Вопрос: Есть ли какие-то средства осуществить проверку ссылочной целостности и вычислить мне те таблицы, которые тоже нужно грохнуть? | 
|  | 
|  05.12.2007, 16:47 | #2 | 
| Злыдни | 
			
			А разве при выгрузке и загрузке в двоичном формате что-то проверяется?
		 
				__________________ люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. | 
|  | 
|  05.12.2007, 17:07 | #3 | 
| Участник | 
			
			Проверяется. Ссылки по RecId проверяются. Если не находит ссылку, то ругается при импорте, но импорт все равно проходит. | 
|  | 
|  06.12.2007, 06:10 | #4 | 
| Участник | 
			
			Меня интересует, а есть ли проверка не по RecId, их я могу выверить, это ладно. А вот именно ситуации, например таблица RpayHRMOrganization у неё есть поля CorrAccount и CorrAccount_Tax которые ссылаются на таблицу LedgerTable. Так вот можно ли проверить, есть ли такая запись в LedgerTable? Или никто такой задачей никогда не озадачивался? | 
|  | 
|  06.12.2007, 11:49 | #5 | 
| Участник | 
			
			Есть стандартный механизм проверки целостности данных компании (класс SysConsistencyCheck). Для многих модулей есть проверки, реализованные с его помощью, но даже если для интересующих вас таблиц таких проверок нет, их легко приделать самостоятельно. Метод SysConsistencyCheck.kernelCheckTable() для всех полей каждой записи проверяемой таблицы вызывает метод validateField(), который в общем случае (если он не перекрыт на таблице) проверяет содержимое поля на основе relation'ов таблицы и EDT этого поля. Соотв., к примеру, если у EDT для указанных полей RpayHRMOrganization или у тех EDT, от которых EDT полей наследуются (sorry, я указанных полей не нашел, видимо, это ваши доработки), прописан relation на поле LedgerTable, то при проверке в validateField() Аксапта по значениям этих полей будет искать, согласно с relation'ам, соотв. записи в LedgerTable - и ругаться, если таковых не найдет. Примеры создания наследников SysConsistencyCheck и использования метода kernelCheckTable() вы легко найдете по перекрестным ссылкам.
		 | 
|  | |
| За это сообщение автора поблагодарили: gefr (1), ledenezz (1). | |
|  07.12.2007, 05:35 | #6 | 
| Участник |  To gl00mie 
			
			Огромное спасибо, именно об этом я и спрашивала, а сама нигде не смогла обнаружить. Еще раз, БОЛЬШУЩЕЕ спасибо!!!! | 
|  |