![]() |
#8 |
Участник
|
Цитата:
Сообщение от 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 не ушли в отрицательную область. ![]() ![]() Спасибо ! |
|
|
![]() |
||||
Тема | Ответов | |||
best4best: Как автоматизировать предприятие | 4 | |||
Экспорт документов в 1С Предприятие | 14 |
|