Приветствую всех и прошу подсказать решение нехитрой, я думаю, проблемы. Добавил в оный интерфейс в спецификацию дополнительное поле "Наименование из сметы":
Дак у тебя sMc, которую ты указываешь в качестве имени создаваемого объекта посредством cfsCreateObject - переменная. Ясен перец одно и тоже значение будет казать.
в логической таблице нужно для этого просто указать вычисляемое поле.
Ещё вопрос по этому интерфейсу: как изменить значение нового поля? Добавил в спецификацию объект TreeColumn, изменяю его, ловлю событие cmCheckField, но модификация не проходит. Сейчас имею:
handleevent
cmCheckField:
{
case curfield of
#NameMcSpec:
{
if isvalid(#claim) then cClaim := claim.nrec;
clearbuffer(#claim);
if getfirst claim where((cClaim == claim.nrec)) = tsOk then update current claim set claim.name:= NameMcSpec; //Здесь NameMcSpec = ''
}
else inherited::handleevent(cmCheckField);
end;
}
cmCheckField - табличное событие. Писать нужно либо в событии панели таблицы либо что правильней в TableEvent
Но вопрос - зачем вам менять руками? может лучше событие cmPick?
Panel specClaim table Claim;
HandleEvent
cmCheckField:
{
if inherited::handleEvent(cmCheckField) = heOk then
{
case curfield of
#NameMcSpec:
{
if isvalid(#claim) then cClaim := claim.nrec;
clearbuffer(#claim);
if getfirst claim where((cClaim == claim.nrec)) = tsOk then update current claim set claim.name:= NameMcSpec;
}
end;
}
}
end;
end;
Проблема осталась: введённый текст не сохраняется в переменную NameMcSpec. Правильно ли эта переменная используется?
Смысл доработки в том, чтобы исполнитель ввёл руками текст в доп. поле и оно бы сохранилось в claim.name.
cmPick подойдёл ли для такого действия?
Ну тогда вам нужно
TableEvent Table ??????????????; - основная табла спецификации
cmExprFieldChanged :
{ inherited :: handleEvent (cmExprFieldChanged);
case curfield of
#ваше_поле:
{ здесь чего то делаем с ExprFieldValue например update claim
}
end;
}
проше навернео просто claim.name вывести - но вы должны его в select проверить как оно связано со спецификацией
Ещё вопросик по Bookings, не обойдите вниманием:
открыл заявку на редактирование (интерфейс Win1), помечаю записи по Insert. Хочется считать оные записи в свою временную таблицу. Вариантов, как я понимаю, два: pick и маркер. Таблица pick вроде есть во view, но прочитать записи не получилось. Остаётся маркер, но в документации по Bookings о нём информации нет. Просьба подсказать, кто знает..