Показать сообщение отдельно
Старый 11.02.2011, 02:11   #27  
Geo is offline
Geo
Участник
Аватар для Geo
 
258 / 47 (2) +++
Регистрация: 04.04.2008
Ниччего не получается

Хочу сделать так, чтобы у отмеченных записей инвертировалось логическое поле Archives. Сделал метод вот такой:
X++:
public static void main(Args _args)
{
    FormRun         fr;
    FormDatasource  fds;
    PurchReqTable   purchReqTableLocal;
    ;

    if(!_args)
        throw error("Класс должен быть вызван с параметрами!");
    else
    {
        fr = _args.caller();
        //info(fr.name());

        if (fr)
        {
            fds = fr.dataSource();

            ttsbegin;
            for (purchReqTableLocal = fds.getFirst(true) ? fds.getFirst(true) : fds.cursor(); purchReqTableLocal; purchReqTableLocal = fds.getNext())
            {
                purchReqTableLocal.Archives = !purchReqTableLocal.Archives;
                purchReqTableLocal.doUpdate();
            }
            ttscommit;
            
            // делаем проверку, изменилось ли содержимое:
            for (purchReqTableLocal = fds.getFirst(true) ? fds.getFirst(true) : fds.cursor(); purchReqTableLocal; purchReqTableLocal = fds.getNext())
            {
                info(strfmt("%1, %2", purchReqTableLocal.PurchReqId, purchReqTableLocal.Archives));
            }
        }
    }
}

Не работает!
"Проверка" проходит нормально, отображаются правильные ключи отмеченных записей с правильным (как бы новым) значением изменяемого поля. Но записи реально не изменяются (убедился через журнал базы данных). При этом, если не отмечать несколько записей, а запускать для просто текущей - оно работает.
Пробовал ttsbegin и ttscommit помещать внутрь цикла - не помогло.

Помогите, пожалуйста.