28.01.2004, 12:19 | #1 |
Шаман форума
|
Часто в процессе внедрения возникает желание перестроить структуру общих справочников. Естественно, при этом в системе уже есть какие-то данные.
Чтобы это сделать, необходимо понимать, что есть компания с точки зрения Axapta. Все данные в одной базе по всем компаниям хранятся в одной таблице. Разделение по компаниям проводится только на основе поля dataareaid - идентификатор компании. Axapta автоматически подставляет идентификатор активной компании в любой выполняемый запрос. Объединяя несколько компаний в виртуальную, мы тем самым заставляем систему использовать в запросах не идентификатор активной компании, а идентификатор "виртуальной" компании. Таким образом, новые записи будут создаваться с "виртуальным" идентификатором, а старые - останутся со старым. и видны не будут. Решение напрашивается само собой - требуется в СУБД выполнить запрос типа UPDATE на вновь включенные/исключенные из виртуальной компании таблицы, и заменить значение поля dataareaid. После чего бывает нужно перезагрузить AOS. Перед операцией, естественно, бывает полезно выгнать из системы юзеров и сделать бэкап базы.
__________________
All information in this post is strictly confidential. If you have read it in error, please forget it immediately. |
|
28.01.2004, 20:23 | #2 |
Участник
|
При объединении справочника в существующих компаниях Update может организовать дублирование данных или конфликт с уникальным индексом.
При разведении справочников update перенесет данные только в одну компанию. Решение данной задачи штатными средствами заключается в следующем. Если мы объединяем справочники нескольких компаний, то из одной или всех компаний по очереди нужно экспортировать данные штатными средствами, но только из тех таблиц, которые будут объединены. Затем компании загоняются в новую виртуальную компанию, либо в виртуальную компанию добавляется новая коллекция таблиц, либо в существующую коллекцию таблиц, включенную в виртуальную компанию, в которой компании уже состоят, добавляются новые таблицы. Если виртуальная компания воссоздана вновь, то нужно удалить имеющиеся там данные. После этого производится импорт штатными средствами. Можно из одной компании, а можно и из нескольких. Дубликаты процедура импорта отбросит (о чем непременно сообщит в InfoLog). Новые записи подобавляет. PS. Не дай бог вам выполнять манипуляции с импортом/экспортом в виртуальные компании в трехзвенке тонким клиентом. По крайней мере в 2.5. |
|