26.10.2005, 13:00 | #1 |
Участник
|
Господа. Не могу сделать следующую вещь. Есть RecordRef.
Необходимо изменить ключевые поля записи в RecordRef. Знаю номера ключевых полей знаю старые и новые значения. Естстественно RecordRef.Modify не срабатывает если переименовал ключевые поля... Как их изменить без использования Record.Rename. Так как в RecordRef в принципе может находиться любая таблица то заводить их как переменные record не хочется.
__________________
Want to believe... |
|
26.10.2005, 13:08 | #2 |
Moderator
|
Ну попробуйте DELETE - INSERT.
|
|
26.10.2005, 13:13 | #3 |
Участник
|
Таблица может являтся справочником. В том то и задача запустить штатный механизм переименования. Похоже задача не решаема без переменной типа Record.
из хелпа: Comments Select the record you want to replace using the primary key fields. The record's current key and filters do not affect the operation.
__________________
Want to believe... |
|
26.10.2005, 13:28 | #4 |
Участник
|
Я правда как то не совсем поняла проблему. Но насколько я знаю-ключевые поля переименовываются без проблем-если в момент переименовывания-у вас сортировка не использует эти ключи. Ну и соответственно фильтров нет на эти поля.
Когда мне нужно переименовать в таблице ключевые поля-я их нахожу - фильтрирую-после помечаю (Ctrl+F1), снимаю фильтры, выбираю ключ-который не использует эти поля. И делаю только отмеченные показать. Ну и после переименовываю. Может как то поможет? |
|
26.10.2005, 13:42 | #5 |
Участник
|
Проблема в том что я не знаю какая таблица у меня содержится в RecordRef. Кроме того у неё може быть только первичный ключ или куча ключей в которые входит ключевое поле.
А переименовываете через Modify?
__________________
Want to believe... |
|
26.10.2005, 13:48 | #6 |
Участник
|
Нет - я описала переименовывания в таблице-через "Правка"-"Заменить". А вы что хотите перименовать первичный ключ?
|
|
26.10.2005, 13:55 | #7 |
Участник
|
Да я решаю задачу синхронизации данных в разных базах данных. При изменении например в таблице Item 27 кода в связанной базе данных также должен изменится код этого товара со всеми валидэйтами. При изменении неключевых полей все замечательно а вот с ключами беда.
__________________
Want to believe... |
|
26.10.2005, 14:04 | #8 |
Участник
|
Интересно-а как переименовывается Фин.Счет например в плане счетов? Переименовывается во всех связанных таблицах. Интересно стандартно или действительно - открывается таблица связанная и там меняется?
|
|
26.10.2005, 14:11 | #9 |
Участник
|
Если отрабатывает триггер Rename то менятеся во всех связанных таблицах тоже. Вот вызвать rename из RecordRef не получается... и это обидно...
__________________
Want to believe... |
|
26.10.2005, 18:55 | #10 |
Участник
|
Cкажите пожалуйста, вы осуществляете синхронизацию между базами или фирмами.
Мне для осуществления синхронизации между базами пришлось писать SQL триггера, если есть другой путь, не могли бы вы его описать, если это вас не затруднит |
|
27.10.2005, 10:48 | #11 |
Участник
|
Синхронизация именно между базами данных. В обеих базах данных созданы буферные таблицы синхронизации содержащие грубо говоря операцию изменения данных и содержание полей измененной записи. Через ADO отправляется Insert в синхронизуемую базу данных а в ней уже клиент Navision выполняет предписанное действие с выполнением всех валидейтов при модификации (вставке, удалении) записи. Соответвенно переписаны триггера на синхронизуемых таблицах чтобы при изменении записи заполнялся буфер. Можно было и на триггеры Global но нужно синхронизировать не поголовно все данные а только содержание справочников и документов.
__________________
Want to believe... |
|
27.10.2005, 10:50 | #12 |
Участник
|
удалено
__________________
Want to believe... |
|
27.10.2005, 13:26 | #13 |
Участник
|
Большое спасибо за идею.
Я так понимаю, что клиент должен самостоятельно запускать "обновления" предназначеные ему. |
|
27.10.2005, 15:09 | #14 |
Участник
|
в этом то вся идея
__________________
Want to believe... |
|
28.10.2005, 09:44 | #15 |
Участник
|
Ну если rename не дружит с recordref остается только программно сгененирть кодеюнит с с case на каждую таблицу и передавать в него recordref.
|
|
28.10.2005, 14:49 | #16 |
Участник
|
Сделал как всегда просто.... запретил на редактирование ключевые поля для синхронизуемых таблиц
__________________
Want to believe... |
|