Показать сообщение отдельно
Старый 05.08.2004, 19:42   #9  
Yaroslav Batozskiy is offline
Yaroslav Batozskiy
Участник
 
15 / 10 (1) +
Регистрация: 19.01.2002
Адрес: Moskow
Цитата:
При большом количестве товаров/клиентов/поставщиков/etc. это может стать серьезной проблемой
При большом количестве можно сделать так (в Query Analyzer):

update CustTrans set CustAccount='Cust2' where CustAccount='Cust1'

для всех таблиц, в которых есть CustAccount.

Или так

update CustTrans set CustAccount='Cust' where CustAccount in ('Cust1', 'Cust2');


Найти таблицы можно с помощью перекрестных ссылок, либо так

select sysobjects.name, syscolumns.name
from sysobjects, syscolumns
where sysobjects.id=syscolumns.id
and syscolumns.name like '%CustAccount'
order by 1,2

При большом количестве объединений можно написать процедуру, которая курсором обойдет все поля CustAccount во всех таблицах.
Но использовать это рекомендую лишь при большом количестве объединений счетов, если другие средства не подошли. Это все таки SQL, а не Axapta. Но это будет очень быстро...

Цитата:
Будь предельно внимателен. Эта функция работает через наследование типов и не всегда работет правильно. Особенно в сильно модифицированной Аксапте.
В любом случае, независимо от того, как объединяли записи, рекомендую выполнить "Проверку целостности данных компании", либо по одному модулю, либо по всем (долго...). Строка this.kernelCheckTable(tableNum(<TableName>)); проверяет как раз ссылочные поля. Если функционал модифицирован, то нужно добавить обработку добавленных таблиц с полем, по которому проводилось объединение кодов.