|
Отказ от модальности | ☑ | ||
---|---|---|---|---|
0
NewBieOneS
17.10.17
✎
20:38
|
Всем привет!
Пишу обработку, одной из функций которой является поиск всех файлов и каталогов по заданному пути и вывод найденных файлов в таблицу, содержащую следующие колонки: "Имя файла", "Путь", "Признак каталога". Привожу часть кода, которая реализует вышесказанное: &НаКлиенте Процедура ЗаполнитьТаблицуИмен() Оповещение = Новый ОписаниеОповещения("ЗаполнитьТаблицуИмен_ПоискФайлов", ЭтаФорма); НачатьПоискФайлов(Оповещение, ИсходныйПуть, "*.*", Истина); КонецПроцедуры &НаКлиенте Процедура ЗаполнитьТаблицуИмен_ПоискФайлов(НайденныеФайлы, ДополнительныеПараметры) Экспорт ТаблицаИмен.Очистить(); Для Каждого НайденныйФайл Из НайденныеФайлы Цикл Оповещение = Новый ОписаниеОповещения("ЗаполнитьТаблицуИмен_ПроверкаНаКаталог", ЭтаФорма, НайденныйФайл); НайденныйФайл.НачатьПроверкуЭтоКаталог(Оповещение); КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ЗаполнитьТаблицуИмен_ПроверкаНаКаталог(ЭтоКаталог, ДополнительныеПараметры) Экспорт НоваяСтрока = ТаблицаИмен.Добавить(); НоваяСтрока.ЭтоКаталог = ЭтоКаталог; НоваяСтрока.Имя = ДополнительныеПараметры.Имя; НоваяСтрока.Путь = ДополнительныеПараметры.Путь; КонецПроцедуры Учитывая, что проверка на каталог выполняется в цикле и итерации будут продолжаться не дожидаясь окончания проверки я не могу узнать, когда завершится весь процесс. После окончания заполнения таблицы и получения всех файлов нужно выполнить еще действия. Как решить подобную проблему? Подскажите, пожалуйста. |
|||
1
Филиал-msk
17.10.17
✎
21:23
|
Выносишь найденные файлы и указатель на текущий проверяемый в глобальную область видимости, проверяешь поодиночке двигая указатель пока не дойдешь до конца.
|
|||
2
NewBieOneS
17.10.17
✎
22:58
|
А зачем в глобальную область? Нельзя, например, создать реквизит формы (счетчик) и его увеличивать? Или я что-то не понимаю?
|
|||
3
Филиал-msk
17.10.17
✎
23:00
|
(2) Не понимаешь. Реквизит формы - уже глобальная область по отношению к процедуре.
|
|||
4
Otark
18.10.17
✎
06:07
|
Я Понимаю отказ от модальности и все такое, но че с отключенной модальностью ЭтоКаталог() выдает ошибку? Вроде как можно пользоваться?
|
|||
5
Otark
18.10.17
✎
06:57
|
Да и немодальный поиск файлов здесь с какой целью? Какая то есть на это причина?
|
|||
6
Филиал-msk
18.10.17
✎
07:48
|
(4)(5) ТС банально называет асинхронность отказом от модальности. Типичная фича для 97% одинесников, так же как и путаница "регламентное"-"фоновое" и т.п.
|
|||
7
NewBieOneS
18.10.17
✎
14:13
|
(6) Я понимаю, что такое асинхронность. По Вашему - каждая проверка на "ЭтоКаталог" выполняется параллельно (в отдельном потоке или процессе)? Т.е. "здравствуй, многопоточность"? ))) Если так, то с решением все понятно. Я думал есть более "красивые" способы решить подобную проблему.
(4) А зачем тогда нужны немодальные функции поиска файлов, проверки на каталог? В чем смысл их использования, если можно юзать старые? |
|||
8
Otark
19.10.17
✎
05:31
|
(7)Они нужны тогда, когда нет возможности или необходимости ждать ответа от клиента. Есть возможность обработать ответ клиента, когда событие произойдет. Это очень удобно бывает местами. Здесь этот случай?
|
|||
9
NewBieOneS
19.10.17
✎
13:57
|
(8) В моем случае такой необходимости нет. Спасибо за ответ.
Кстати, асинхронности в настоящем понимании этого слова в рассматриваемом вопросе нет. Это именно "НеМодальность". Параллельных вычислений, к сожалению, не организуешь. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |