Показать сообщение отдельно
Старый 03.11.2005, 12:54   #1  
Константин! is offline
Константин!
Участник
 
180 / 10 (1) +
Регистрация: 13.04.2005
Адрес: Казань
Возникла необходимость запустить несколько клиентов навижн с помощью планировщика, соответственно нужно знать прошел запуск клиента нормально или нет т.к. пакетное задание должно запускаться, только если все клиенты стартовали удачно.
Пытался провернуть следующее:
Создал таблицу c полями CompanyName,ClientRun потом в ф-и LogInStart() (CU1) в конце
ставлю галку
Table1.RESET;
Table1.SETRANGE(Company,COMPANYNAME);
IF Table1.FIND('-') THEN BEGIN
Table1.ClientRun:=TRUE;
Table1.MODIFY;
CODEUNIT.run(50000); // здесь лежит пакетник
end;

CODEUNIT 50000;
OnRun()
REPEAT
COMMIT;
GlobalDimCompany.RESET;
GlobalDimCompany.SETRANGE(ClientRun,FALSE);
UNTIL GlobalDimCompany.ISEMPTY;
// потом идет код пакетника

Так вот собственно проблема: весь этот алгоритм работает только для последнего клиента т.е. все N-1 клиент запускаются, ставят галку и начинают крутиться в цикли ждать пока все клиенты не поставят галку и никак этого не дожидаются и только N (последний) клиент спокойно проходит этот цикл и начинает работать. Такое ощущение, что предыдущие клиенты не обновляют таблицу и не видят галку. Какие есть соображения? Может можно сделать проще, а я туплю?