У меня имеется некая таблица (PatternTable), в которой имеется поле статуса (Status) на основе перечисления и может принимать определенные значения. При изменении этого поля нужно остальным записям сменить это значение статуса. В общем мне нужно чтоб в таблице было много записей со статусом elDefault, одна запись со статусом elOk и много записей со статусом elClose. Если какая-то запись переводиться в статус elOk и уже есть в таблице иная запись с подобным статусом, ее нужно перевести в статус elClose и только потом перевести необходимую запись в статус elOk.
Проблема в том, что мой код не меняет статус записей. Я отлаживал под отладчиком и видел что реально статус меняется, но на форме не отображаются изменения. Мало того, если закрыть форму и открыть ее заново, то изменения тоже не появляются. Может где-то фечить нужно изменения, но я не могу понять как это делается в Аксапте.
Привожу пример кода:
PHP код:
void SetStatusOk()
{
int countPattern;
PatternTable patternTable; // таблица шаблонов
if (this.Status==ptStatus::elOk) return;
countPattern = (select count(RecID) from PatternTable
where((PatternTable.Status==ptStatus::elOk) && (PatternTable.ID!=this.ID))).RecID;
if (countPattern>0)
{
if (box::yesNo('Сменить статус?', DialogButton::Yes)==DialogButton::Yes)
{
ttsBegin;
while select forupdate patternTable
where ((patternTable.Status==ptStatus::elOk) && (patternTable.ID!=this.ID))
{
patternTable.Status = ptStatus::elClose;
// меняю статус записям (!! НО статус не меняется в форме!!)
info(patternTable.ID);
}
ttsCommit;
}
else
{
return;
}
}
this.Status = ptStatus::elOk;
}