AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.07.2007, 16:18   #8  
Rimantas is offline
Rimantas
Участник
 
304 / 16 (1) ++
Регистрация: 30.04.2004
Адрес: Utena , Lithuania
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Тогда наш подход, который использовали в момент выделения филиалов в компании, а так же используем в случае, если какую-то таблицу с существующими данными нужно добавить с виртуальную компанию (правда без объединения при этом данных из разных компаний):
Добавляем таблицы в табличные коллекции. Настраиваем виртуальные компании (если уже все настроено, то лучше переопределить все заново, иначе бывают поблемы с установкой поля dataareaid для новых записей).
Затем выполняем джобик установки следующего значения для RecId и меняем значение поля dataareaid. Следующее значение ищем так:
1. Перебираем все коллекции нужной виртуальной компании (из таблицы TableCollectionList с фильтром по полю virtualDataArea);
2. Внутри цикла перебираем все таблицы, принадлежащие коллекции, типа в таком цикле:
collection = new SysDictTableCollection(tableCollectionList.tableCollection);
tableId = tablename2id(collection.nextTable());

while (tableID)
{
dictTable = new SysDictTable(tableID);
if (isConfigurationkeyEnabled(dictTable.configurationKeyId()))
{
... тут получение максимального значения RecId прямым запросом
}
tableId = tablename2id(collection.nextTable());
}
3. Максимальное значение RecId для таблицы получаем прямым запросом (объект Statement), отфильтровав по условию dataareaid равное нужной виртуальной или текущей компании (что-то вроде dataareaid = 'SPR' OR dataareaid = 'WRK'). После этого опять же прямым запросом меняем dataareaid по всем записям, у которых оно равно текущей компании.
4. Если оно уже больше найденного ранее максимального, то его считаем максимальным.
После того, как отработал цикл по таблице TableCollectionList мы имеем максимальный RecId, пишем его (увеличенное на 1) опять же прямым запросом в таблицу SystemSequences в поле nextVal в запись, в которой dataAreaID равно нашей виртуальной компании и поле name равно seqno
----------
Следует иметь ввиду, что работает это только в том случае, если RecId не ушли в отрицательную область.
Спасиво Меланхольный Ворон за совет . Оказалось нам оставилось только поменять максимальные значения в SytemSequences табличке для виртуальной пред. Когда прочитали твои советы , тогда и поняли ...

Спасибо !
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
best4best: Как автоматизировать предприятие Blog bot DAX Blogs 4 28.03.2009 13:43
Экспорт документов в 1С Предприятие agri DAX: Функционал 14 01.07.2004 17:17

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:53.