Необычная ошибка компиляции
Модераторы: m0p3e, edward_K, Модераторы
Необычная ошибка компиляции
Вот на чём обрывается компиляция и не создаётся ресурсник:
09:13:47 │ Порядок R_REAL00V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL01V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL02V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL03V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL04V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL05V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL06V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL07V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL00V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL01V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL02V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL03V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL04V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL05V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL06V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL07V Реализуется на внешней выгрузке
Причём компилятся два файла: в одном alter interface L_SKLAD::PASHORD, во втором alter interface L_SKLAD::PRIHORD.
Самое интересное, что при компиляции только одного из файлов ресурсник создаётся. Но при компиляции одного файла с alter interface L_SKLAD::PRIHORD выдаётся эта же ошибка компилятором, но ресурс создаётся.
Может кто-нибудь сказать в чём причина такого поведения компилятора ? Или что я делаю не так ?
09:13:47 │ Порядок R_REAL00V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL01V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL02V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL03V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL04V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL05V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL06V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL07V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL00V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL01V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL02V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL03V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL04V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL05V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL06V Реализуется на внешней выгрузке
09:13:47 │ Порядок R_REAL07V Реализуется на внешней выгрузке
Причём компилятся два файла: в одном alter interface L_SKLAD::PASHORD, во втором alter interface L_SKLAD::PRIHORD.
Самое интересное, что при компиляции только одного из файлов ресурсник создаётся. Но при компиляции одного файла с alter interface L_SKLAD::PRIHORD выдаётся эта же ошибка компилятором, но ресурс создаётся.
Может кто-нибудь сказать в чём причина такого поведения компилятора ? Или что я делаю не так ?
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Вообще, это предупреждение должно быть, а не ошибка. Я перечитал пять раз предпоследний абзац, прям "кручу верчу запутать хочу")) В итоге ресурсник вы все-таки получили или нет?) А быть такое сообщение может, если, например, во view используется order by или SetOrder не по индексу. Или вот, выдержка из документации: "Внешняя выгрузка формируется в случае невозможности формирования выборки динамическим образом, например, необходимо упорядочить выборку по полям некорневой таблицы."
Последний раз редактировалось Vik 27 май 2010, 13:05, всего редактировалось 1 раз.
Вот исходники первый
а вот второй :
Они почти идентичны. Может причина в исходниках?
Код: Выделить всё
alter interface RASHORD;
var fMy_var2:string;
create view
(osum2)
as select
sporder.rsrprice*sporder.kol,
sporder.*
from sporder;
handleevent
cmInit:
{ inherited :: handleEvent(cmInit);
cfsSetCurrentContainer('RASHORD.EDITORDERS.BRSPORDER');
var i: integer;
for (i:=0; i<2; i++)
{
cfsCreateObject('Column','BRSPORDER','osum2',FALSE, fMy_var2) ;
cfsSetProp('osum2','Visible',TRUE);
if (i =0)
{
cfsSetProp('osum2','Visible', FALSE );
}
else
{
cfsSetProp('osum2' , 'Visible', TRUE ) ;
}
cfsSetProp('osum2' , 'Title' , 'Стоимость' ) ;
cfsSetProp('osum2' , 'PrecisionVarName' , 'digitToch2');
cfsSetProp('osum2' , 'PassiveFormat' , '[|-]366`666`666`666`666.88');
SetPrecisionGroup('digitToch2',2);
cfsSetProp('osum2' , 'MaxLen', 18 );
cfsSetProp('osum2','Protect',true);
}
cfsDestroyObject('c_BRSPORDER_SUMPRICE_Стоимость');
}
end;
end.
Код: Выделить всё
alter interface PRIHORD;
var fMy_var,fMy_var2:string;
create view
(osum)
as select
sporder.rsrprice*sporder.kol,
sporder.*
from sporder;
window editorders
handleevent
cmInit:
{
inherited :: handleEvent(cmInit);
cfsSetCurrentContainer('PRIHORD.EDITORDERS.BRSPORDER');
var i: integer;
for (i:=0; i<2; i++)
{
cfsCreateObject('Column','BRSPORDER','osum',FALSE, fMy_var) ;
cfsSetProp('osum','Visible',TRUE);
if (i =0)
{
cfsSetProp('osum','Visible', FALSE );
}
else
{
cfsSetProp('osum' , 'Visible', TRUE ) ;
}
cfsSetProp('osum' , 'Title' , 'Стоимость' ) ;
cfsSetProp('osum' , 'PrecisionVarName' , 'digitToch');
cfsSetProp('osum' , 'PassiveFormat' , '[|-]366`666`666`666`666.88');
SetPrecisionGroup('digitToch',2);
cfsSetProp('osum' , 'MaxLen' , 18 );
cfsSetProp('osum','Protect',true);
}
cfsDestroyObject('c_BRSPORDER_SUMPRICE_Стоимость');
}
end;
end;
end.
В debug.prj прорисано так:
Код: Выделить всё
#component 'L_SKLAD'
#make "%src%\make\Rashord.vip"
#make "%src%\make\Prihord.vip"
-
- Местный житель
- Сообщения: 370
- Зарегистрирован: 28 сен 2006, 15:43
- Откуда: Санкт-Петербург
- Контактная информация:
Компилируйте каждый алтер в отдельный ресурсный файл. Не раз замечал проблемы, при компиляции нескольких альтеров в один файл, поэтому лучше компилировать их в отдельные ресурсы. Да и в любое время можно будет отключить ненужный альтер. По поводу вашего кода, то вьюхи лучше так описать, наверное:
Потому что вы расширяете уже существующею вьюху, а таблица SpOrder в ней уже есть.
Код: Выделить всё
create view
(osum2)
as select
sporder.rsrprice*sporder.kol;
Создал два ресурса отдельно, но ресурс L_SKLAD::RASHORD не отработал как надо:новая колонка Стоимость не добавилась, а старая колонка Стоимость не удалялась. А ресурс c L_SKLAD::PRIHORD созданный с предупреждением: Порядок R_REAL00V Реализуется на внешней выгрузке ... сработал: колонка Стоимость удалилась и произошло добавление новой колонки Стоимость.