Код выглядит так:
Код: Выделить всё
#include cfg_all.inc // константы для использования конфигуратора
#include cfg_err.inc
end;
interface TestConfAPI;
table struct t1
(
p1: String,
p2: Double,
p3: Double
);
create view
as select
*
from
t1;
browse br1;
show at (,,,20);
table t1;
fields
t1.p1 'name field': [10], protect;
end;
screen scr1
show at (,21,,);
buttons
cmok;
<<
<.Добавить колонку.>
>>
end;
// Процедура переводит код pRetCode в идентификатор соответствующей
// константы, добавляет ее к строке pMsg и выводит полученное сообщение.
function CheckCfResult(pRetCode: LongInt; pMsg: String): Boolean;
var
ErrMsg: String;
begin
if pRetCode != CfOk then
begin
CheckCfResult := False
case pRetCode of
CfErrObjectTypeNotExist:
ErrMsg := 'Тип объекта не существует';
CfErrObjectTypeAlreadyExist:
ErrMsg := 'Тип объекта уже существует';
CfErrObjectNotExist:
ErrMsg := 'Объект не существует';
CfErrObjectAlreadyExist:
ErrMsg := 'Уже есть объект с таким именем, как у создаваемого объекта';
CfErrContainerObjectNotExist:
ErrMsg := 'Контейнер не существует';
CfErrPropNotExist:
ErrMsg := 'Свойство не существует';
CfErrPropAlreadyExist:
ErrMsg := 'Свойство уже существует';
CfErrObjectSelfAlreadyExist:
ErrMsg := 'Уже есть объект с заданным указателем (Self''ом)';
CfErrContainerSelfNotExist:
ErrMsg := 'Не найден контейнер с заданным указателем (Self-''ом)';
CfErrCantEditProp:
ErrMsg := 'Нельзя редактировать указанное свойство';
CfErrPropValueError:
ErrMsg := 'Значение поля не совместимо по типу с указанным свойством';
CfErrCantCreateObject:
ErrMsg := 'Нельзя создать объект в указанном контейнере';
CfErrCreateObjectError:
ErrMsg := 'Не получилось создать объект';
CfErrObjectStorageNotCreated:
ErrMsg := 'Вызвана функция управления ObjectStorage, а объект не создан';
CfErrInternalBadCommand:
ErrMsg := 'Неизвестная команда сервисных функций';
CfErrBadFieldType:
ErrMsg := 'Не того типа параметр';
CfErrBadFind:
ErrMsg := 'Атом не найден';
CfErrMustBeUnsigned:
ErrMsg := 'Значение типа cftUnsignedInteger меньше 0';
else
ErrMsg := 'Неопознанная ошибка. Код: ' + pRetCode;
end;
Message('Ошибка ' + String(pRetCode) + ': ' + ErrMsg + '. ' + if(pMsg != '', ''#13 + pMsg, ''));
end else
CheckCfResult := True
end;
HandleEvent
cmInit:
begin
t1.p1 := 'запись 1';
t1.p2 := 111;
insert current t1;
t1.p1 := 'запись 2';
t1.p2 := 222;
insert current t1;
end;
cmOk:
begin
// Устанавливаем текущий корневой контейнер
CfsSetCurrentContainer('TestConfAPI');
var p2self: LongInt;
var rc: LongInt;
// Создаем объект с типа "Column" с названием "newpole" в контейнере "br1"
rc := CfsCreateObject('Column', 'br1', 'newpole', False, p2self);
if CheckCfResult(rc, 'Не удалось создать поле "newpole"') then
begin
// Устанавливаем свойство "Title" объекта "newpole"
CfsSetProp('newpole', 'Title', 'new pole');
// Устанавливаем свойство "FieldName" объекта "newpole"
CfsSetProp('newpole', 'FieldName', 't1.p2');
end;
RescanPanel(#t1);
end;
end;
end.
Затем еще одно сообщение:Нет такой функции, поля или метода: NEWPOLE
newpole
Затем уже выводится сообщение функции CheckCfResult, из которого видно,Ошибка интерпретации имени поля: "newpole"
что возникает ошибка с кодом -12 "Нельзя создать объект в указанном контейнере".
Что я делаю неправильно? Почему нельзя создать объект "Column" в контейнере "browse"?