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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.07.2007, 15:43   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Тогда наш подход, который использовали в момент выделения филиалов в компании, а так же используем в случае, если какую-то таблицу с существующими данными нужно добавить с виртуальную компанию (правда без объединения при этом данных из разных компаний):
Добавляем таблицы в табличные коллекции. Настраиваем виртуальные компании (если уже все настроено, то лучше переопределить все заново, иначе бывают поблемы с установкой поля 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 не ушли в отрицательную область.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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, время: 23:23.