|
![]() |
#1 |
Боец
|
А целостность данных?
Почему бы просто не сохранить данные в буфер, переключить компанию и вставить данные. Примерно так: X++: static void copy2company(Args _args) { InventTable tmpInventTable, fromInventTable, toInventTable; ; tmpInventTable.setTmp(); fromInventTable.skipDataMethods(true); while select fromInventTable { tmpInventTable.clear(); buf2buf(fromInventTable, tmpInventTable); tmpInventTable.insert(); } ttsbegin; changecompany ("DMO") { while select tmpInventTable { toInventTable.clear(); buf2buf(tmpInventTable, toInventTable); if (toInventTable.validateWrite()) toInventTable.insert(); } } ttscommit; } Последний раз редактировалось DSPIC; 15.10.2009 в 00:12. |
|
![]() |
#2 |
Administrator
|
Цитата:
Переход в другую компанию, которая уже входит в виртуальную - это конечно вариант - но... ее может и не быть, например, мы решили объединить ряд компаний и создать новую виртуальную компанию. Кстати, обращаю внимание, что нельзя перейти в саму виртуальную компанию. Можно только перейти в компанию, входящую в состав виртуальной. На самом деле - мы отвлеклись от темы. Я привел пример - не для того, чтобы показать как это работает с виртуальными компаниями, а для того, чтобы показать, что прямое обращение к БД при замене dataAreaId если все делать по-честному - выливается не в одну строчку кода. И даже наоборот - мой вариант по сути применим только тогда, когда штатно (по аналогии как Вы показали) невозможно этого добиться. Хотя с т.з. функциональности оба примера работают одинаково - никакой целостности данных нигде не нарушается если нет связок по RecID (а если есть, то нарушается и там и там) Кстати, Ваш код работать не будет. После changecompany временная таблица тоже ведь сменит компанию. Или я не понял хитрого хода конем?
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 15.10.2009 в 00:35. |
|
![]() |
#3 |
Сам.AX
|
Цитата:
Джоб действительно работать не захотел. Сделали напрямую через SQL. Задача решена. Спасибо. |
|
![]() |
#4 |
Administrator
|
Цитата:
Так что если в будущем будет потребность повторить "на бис" процедуру - можно им будет воспользоваться
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#5 |
Сам.AX
|
Цитата:
![]() Через SQL, говорят, могут возникнуть трудности в дальнейшем. Последний раз редактировалось Alexx7; 15.10.2009 в 10:21. Причина: Про SQL |
|
![]() |
#6 |
Сам.AX
|
Цитата:
Сообщение (14:06:50) Сбой запроса на разрешение типа "SqlStatementExecutePermission". (S)\Classes\SqlStatementExecutePermission\demand (S)\Classes\Statement\executeQuery (C)\Classes\ReplaceDataAreaId\updateTableRows - line 31 (C)\Classes\ReplaceDataAreaId\updateTables - line 28 (C)\Classes\ReplaceDataAreaId\run - line 19 (C)\Classes\ReplaceDataAreaId\main - line 7 Чего то скорее всего не хватает. |
|
Теги |
update_recordset, законченный пример, как правильно, полезное, системые поля |
|
|