Необычная ошибка компиляции

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Необычная ошибка компиляции

Сообщение BlazeBio »

Вот на чём обрывается компиляция и не создаётся ресурсник:
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 выдаётся эта же ошибка компилятором, но ресурс создаётся.

Может кто-нибудь сказать в чём причина такого поведения компилятора ? Или что я делаю не так ?
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Вообще, это предупреждение должно быть, а не ошибка. Я перечитал пять раз предпоследний абзац, прям "кручу верчу запутать хочу")) В итоге ресурсник вы все-таки получили или нет?) А быть такое сообщение может, если, например, во view используется order by или SetOrder не по индексу. Или вот, выдержка из документации: "Внешняя выгрузка формируется в случае невозможности формирования выборки динамическим образом, например, необходимо упорядочить выборку по полям некорневой таблицы."
Последний раз редактировалось Vik 27 май 2010, 13:05, всего редактировалось 1 раз.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

Ресурсник не получил. Только набор *.tmp файлов. А order by не использовал.
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Ну вы может и не использовали, но вы делаете alter interface. Видимо в интерфейсе L_SKLAD::PRIHORD как раз и производится установка этих сортировок. Но, повторюсь, это не должно быть ошибкой, в следствие которой вы не получили бы ресурс
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

Вот исходники первый

Код: Выделить всё

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.
Они почти идентичны. Может причина в исходниках?
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

а как компилируете? Что в prj файле написано?
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

В debug.prj прорисано так:

Код: Выделить всё

#component 'L_SKLAD'
#make "%src%\make\Rashord.vip"
#make "%src%\make\Prihord.vip"
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

Ну неужели никто знает в чём дело и как быть ? :-?
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Компилируйте каждый алтер в отдельный ресурсный файл. Не раз замечал проблемы, при компиляции нескольких альтеров в один файл, поэтому лучше компилировать их в отдельные ресурсы. Да и в любое время можно будет отключить ненужный альтер. По поводу вашего кода, то вьюхи лучше так описать, наверное:

Код: Выделить всё

 create view
(osum2)
as select
sporder.rsrprice*sporder.kol;
Потому что вы расширяете уже существующею вьюху, а таблица SpOrder в ней уже есть.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

Создал два ресурса отдельно, но ресурс L_SKLAD::RASHORD не отработал как надо:новая колонка Стоимость не добавилась, а старая колонка Стоимость не удалялась. А ресурс c L_SKLAD::PRIHORD созданный с предупреждением: Порядок R_REAL00V Реализуется на внешней выгрузке ... сработал: колонка Стоимость удалилась и произошло добавление новой колонки Стоимость.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Сообщение BlazeBio »

Каюсь моя ошибка! Подключил два одинаковых файла в Суппорте с разными имена компонентов.
Ответить