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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.08.2011, 16:34   #5  
Kadawrik is offline
Kadawrik
Участник
 
279 / 11 (1) +
Регистрация: 04.11.2010
Цитата:
Сообщение от AlexB Посмотреть сообщение
1. По-поводу присвоения значений:
то, что НАВ ругается при присвоении значения через VALIDATE, то это от того, что поле имеет RELATION к другой таблице и ругань исходит от свойства ValidateTableRelation=<Yes>. Поэтому в любом случае надо делать простым присвоением. НО:
Разбейте Вашу обработку на два этапа.
- В первом этапе присвойте новое значение ТОЛьКО тем полям, которые входят в первичный ключ, через RENAME (Sancho абсолютно прав) . Сам процесс из-за этого несколько затянется, но это наиболее "чистый" вариант. Чтобы узнать, входит ли поле в первичный ключ: для этого используйте таблицу "Key" и переменную типа "KeyRef". После каждого RENAME сделать COMMIT.
- Во втором этапе пройдитесь по остальным "простым полям", которые не входят в первичный ключ. Посредством RENAME в первом этапе изменения в таблице А автоматом занеслись в другие таблицы (B, C D...) которые имеют TableRelation к таблице А, так что колличество таблиц/полей, где надо присвоить новое значение, автоматом уменьшилось (НАВ уже сделал часть работы за Вас). В этих "простых полях", которые не входят в первичный ключ, присвойте новое значение без VALIDATE.

2. По-поводу "У вас нет прав на изменения в записях таблицы Sales Invoice Header": добавьте в propertys обьектa, где выполняется обработка (наверное Codeunit или Report) Permissions для таблицы Sales Invoice Header и других таблиц, по мере появления такой ошибки и для других таблиц.
И по-моему правильнее будет делать изменения "нормальным" MODIFY, без IF, а то так и не узнаете, где и почему не удалось присвоить новое значение.
Ребята, всем спасибо за подсказки! (За неимением смайлика с цветочком пусть будет такой: )

По ходу еще вопросы: у меня есть две переменные: типа Recordref и типа Fieldref. Каким боком к ним можно Rename применить?

Я правильно думаю: простое присваивание доолжно выполняться через команду: Fld_ref.VALUE(NewVal) ?
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:30.