Имя: Пароль:
1C
1С v8
Ожидание завершения
0 askharlov
 
13.08.12
20:45
Добрый вечер!
Есть задача в обработке последовательно создавать документы.
После создания каждого документа хочу программно открыть его, дать пользователю проверить и нажать "ОК" или "Закрыть". Только после этого создаю следующий документ.
Вопрос: как останавливать обработку до момента закрытия пользователем предыдущего созданного документа?
Модальное открытие не хочу использовать, так как весь процесс обработки может занять длительное время, на протяжении которого может понадобиться временно переключиться в другое окно.
Фоновые задания, похоже, не подходят, так у нас файловый, а не клиент-серверный вариант.
Есть идеи как реализовать?
Спасибо.
1 Живой Ископаемый
 
13.08.12
20:54
фоновые не подходят совсем не по-этому.
2 andrewks
 
13.08.12
20:56
"Модальное открытие не хочу использовать, так как весь процесс обработки может занять длительное время, на протяжении которого может понадобиться временно переключиться в другое окно. "

что мешает подключить отдельного юзера на это дело?
3 anddro
 
13.08.12
21:14
Поменяй постановку задачи. Не останавливай до закрытия, а возобновляй после закрытия. Документ при закрытии взывает оповестить(), а твоя обработка обратывает оповещение, создает следующий и открывает его форму.
4 askharlov
 
13.08.12
21:22
(3) спасибо. сейчас попытаюсь осмыслить практическую реализацию совета
5 askharlov
 
13.08.12
21:27
(3) блин, делаю в цикле по выборке из запроса.. как запомнить место в выборке, чтоб к нему вернуться?
6 anddro
 
13.08.12
21:41
примерно так (под рукой 1с нет, могут быть неточности):

Перем мВыборка;//глобальная переменная модуля формы

Процедура НачалоПроцесса()
  Запрос = Новый Запрос;
  //формирование запроса и условий
  мВыборка = Запрос.Выполнить().Выбрать();
  СформироватьОчереной();
КонецПроцедуры

Процедура СформироватьОчередной()
  Если НЕ Выборка.Следующий() Тогда
     Предупреждение("Закончили");
     Возврат;
  КонецЕсли;
  //формируем документ по текущим полям мВыборка, открываем его форму
КонецПроцедуры

Процедура ОбработкаОповещения(параметры, не помню)
 //проверим что это наше оповещение
 //если проверка пройдена
 СформироватьОчередной();
КонецПроцедуры
7 anddro
 
13.08.12
21:49
Но это простейший вариант, когда информация о текущем состоянии процесса хранится в глобальной переменной основной формы (т.е. после ее закрытия все сначала).
Возможно сделать более сложный вариант, когда результат запроса выгружается в ТЗ, создаешь структуру, где хранишь саму ТЗ и индекс текущей строки. в СформироватьСледующий() структуру запоминаешь через СохранитьЗначение(), а при  при открытии восстанавливаешь значение и продолжаешь. Тут и еще есть варианты, но они упираются в конкретику задачи и потребностей.
8 askharlov
 
14.08.12
09:59
(7) спасибо, ушел делать
2 + 2 = 3.9999999999999999999999999999999...