27.11.2006, 14:41 | #1 |
Участник
|
NAV 3.6
Таблица 5717 Item Cross Reference поле Cross-Reference Type No. Тригер Cross-Reference Type No. - OnValidate() Стоит код Код: IF ("Cross-Reference Type No." <> '') AND (("Cross-Reference Type" = "Cross-Reference Type"::" ") OR ("Cross-Reference Type" = "Cross-Reference Type"::"4")) THEN "Cross-Reference Type"::"3". Обнаружил, что система не ругается на любое число "Cross-Reference Type"::"N". Нормлаьно компилится и работает. Вопрос: 1) В NAV > 3.6 сколько значений принимает "Cross-Reference Type" 2) В NAV > 3.6 - код на вышеупомянутом тригере такой же, как и у меня? |
|
27.11.2006, 15:04 | #2 |
Участник
|
в 4.0 у меня тоже 4 значения, только этот код стоит на триггере OnRename
|
|
27.11.2006, 15:13 | #3 |
Moderator
|
В Navision поле типа Option представляет собой обычное поле типа Integer, а сама реализация напоминает нумерованные множества (enum) в C++. Каждой цифре начиная с 0 соответствует текст, прописанный в свойствах поля и хранящийся в таблице Object. Различные сравнения типа Field.Pole::"Option" в конечном счете приводятся к сравнению чисел.
Поэтоиу "Cross-Reference Type"::"4" - это просто цифра 4. А по поводу ошибки - видимо в компиляторе нави не сделали проверки на диапазон допустимых значений Option-поля. Под option в компиляторе выделено всего два байта, поэтому записать туда число >65535 не получится. Но напрямую в таблице SQL это значение можно выставить любым - там доступно 4 байта |
|
27.11.2006, 15:22 | #4 |
Участник
|
Понял.
Всем спасибо.... |
|