25.11.2008, 18:24 | #1 |
Участник
|
чудеса компиляции
axapta 3.0 sp5
Класс PBAWebParseForm2WebForm родной чистенький. Компилируем, ошибка! X++: str exportFile,test; X++: str test, exportFilet; |
|
25.11.2008, 18:46 | #2 |
MCTS
|
Такое бывает когда в качестве имени переменной используется объявленный класс/таблица и т.д.
Например: X++: InventTrans inventTrans1, inventTrans; // ошибка InventTrans inventTrans, inventTrans1; // ок В 4-ке этот баг исправлен.
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. Последний раз редактировалось e@gle; 25.11.2008 в 18:59. |
|
|
За это сообщение автора поблагодарили: NetBus (1). |
25.11.2008, 21:23 | #3 |
Axapta
|
Надо запомнить, что переменные через запятую в трешке обявлять нельзя. Совсем. Причина правильно описана выше. Любое такое объявление переменных - мина замедленного действия. Если даже сейчас код компилируется, то это совсем не означает, что он будет компилироваться в будущем. Стоит кому-нибудь когда-то создать тип с именем, совпадающим с вашей переменной, и все. Код компилироваться перестанет.
|
|
|
За это сообщение автора поблагодарили: glibs (1), ZVV (1), Logger (1), NetBus (1). |
26.11.2008, 15:46 | #4 |
Участник
|
|
|
26.11.2008, 15:57 | #5 |
Axapta
|
pt - это же функция. Не можете же вы написать, например,
X++: InventTable max; |
|
26.11.2008, 16:02 | #6 |
Участник
|
Действительно... затупил...
|
|
26.11.2008, 18:59 | #7 |
Участник
|
Цитата:
Создал табличку, завел в ней поля с именами Begin, end На оракле синхронизация нормально проходит, а MS SQL ругается на зарезервированное слово. |
|
26.11.2008, 23:52 | #8 |
Участник
|
Цитата:
http://axcoder.blogspot.com/2006/03/...semicolon.html Цитата:
There are simple rules to avoid such errors:
Последний раз редактировалось gl00mie; 26.11.2008 в 23:58. |
|
|
За это сообщение автора поблагодарили: ZVV (1). |
27.11.2008, 00:33 | #9 |
MCITP
|
Цитата:
Причины следующие: В документации описано: Цитата:
Naming of database objects
Naming of tables and indexes in Axapta must follow the general naming conventions used by Axapta. • Tables Only non-temporary tables are created in the database. Tables are given the same name as in Axapta. If the name is a reserved word in the actual database system, then the name is delimited by the values given in system variables “QUOTEPRE” and “QUOTEPOST”. As an example, if the value for QUOTEPOST was an underscore “_” and you defined a table by a reserved name such as “DATE” then Axapta would automatically change the name of the table to be called “DATE_” in the database. • Columns Columns are given the same name as in Axapta. If the name is a reserved word in the actual database system, then the name is delimited by the values given in system variables “QUOTEPRE” and “QUOTEPOST”. Лучше, конечно, смотреть в таблице СУБД, но можно и в Администрирование-Запросы-БД-Информация БД. Так вот, это самый список зарезервированных слов является (что естественно) разным для Oracle и Сиквела, но при этом он мягко говоря не является полным, особенно для MS SQL, на мой взгляд. Как вариант, видимо, можно добавить их туда вручную, если очень хочется, но лучше наверное не использовать такие названия. И ещё дополнение про список зарезервированных слов в параметре KEYWORDS Цитата:
Comma-separated list of keywords to handle
specially (these are appended to a similar list in the message file, axsys??.ktd). Object names appearing from any of these lists, appear by another name in the database.
__________________
Zhirenkov Vitaly |
|
|
За это сообщение автора поблагодарили: Logger (4). |
27.11.2008, 00:58 | #10 |
Axapta
|
Это называется не "баян", а "классика". Но кто спорит-то? Да, это давно известно. Еще задолго до того, как Максим написал. Например, мне о таком поведении компилятора рассказали еще три года назад, в первую же неделю моей работы с Аксаптой.
А еще Аксапта при импорте русские буквы в названиях чего угодно пропускает. |
|