Ошибка обновления кодового блока при изменении длины таблицы ПК
У меня есть стол AZ. Таблица A имеет PK ID, а все остальные таблицы имеют поля, которые относятся к идентификатору TableA.
Мне поручено выполнить очистку кода, и мне нужно изменить идентификатор TableA с длины 30 на 20. Я сделал это для другой таблицы BZ вместе с блоком обновления кода. Но когда я пытаюсь измениться на TableA, я получаю эту ошибку:
"Это изменения, относящиеся к следующему первичному ключу, который может привести к потере данных в новой таблице. Изменения не могут быть обработаны, поскольку для TableUpgradeMode функции типа TableSyncSetup для измененной таблицы задано значение" Копировать ", что не копирует данные в новую таблицу. Таблица. Чтобы устранить эту проблему, необходимо изменить параметр TableUpgradeMode на Move, а затем добавить код C/AL в функцию типа обновления для обработки новых данных таблицы."
Что означает ошибка? Нужно ли мне менять кодовый блок обновления TableA с TableSyncSetup.Mode::Copy to::Move? Любое руководство?
Я использую Dynamics NAV 2016.
1 ответ
Да, вы должны изменить режим на Переместить, но вы также должны создать новую таблицу, которая временно хранит данные из полей, где вы уменьшили длину поля. Вы также должны решить возможную проблему усечения данных из-за уменьшенной длины поля.
Но я бы сделал это по-другому (по старинке из Upgrade Toolkits): - создайте новую таблицу с той же длиной поля (30), скопируйте содержимое поля и очистите поля (используя кодовый блок) - измените поле длины, но выбирайте Force, когда NAV запрашивает режим синхронизации (потому что вы знаете, что в этих полях нет данных - SQL может отбрасывать и воссоздавать столбцы) - Используя второй кодовый блок, скопируйте данные обратно в уменьшенные поля - обработайте сокращение
Я надеюсь, что это помогает