Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Отказ от модальности

Отказ от модальности
Я
   NewBieOneS
 
17.10.17 - 20:38
Всем привет!

Пишу обработку, одной из функций которой является поиск всех файлов и каталогов по заданному пути и вывод найденных файлов в таблицу, содержащую следующие колонки: "Имя файла", "Путь", "Признак каталога". Привожу часть кода, которая реализует вышесказанное:

&НаКлиенте
Процедура ЗаполнитьТаблицуИмен()
    Оповещение = Новый ОписаниеОповещения("ЗаполнитьТаблицуИмен_ПоискФайлов", ЭтаФорма);
    НачатьПоискФайлов(Оповещение, ИсходныйПуть, "*.*", Истина);    
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьТаблицуИмен_ПоискФайлов(НайденныеФайлы, ДополнительныеПараметры) Экспорт
    ТаблицаИмен.Очистить();
    Для Каждого НайденныйФайл Из НайденныеФайлы Цикл
        Оповещение = Новый ОписаниеОповещения("ЗаполнитьТаблицуИмен_ПроверкаНаКаталог", ЭтаФорма, НайденныйФайл);
        НайденныйФайл.НачатьПроверкуЭтоКаталог(Оповещение);    
    КонецЦикла;        
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьТаблицуИмен_ПроверкаНаКаталог(ЭтоКаталог, ДополнительныеПараметры) Экспорт
    НоваяСтрока = ТаблицаИмен.Добавить();    
    НоваяСтрока.ЭтоКаталог = ЭтоКаталог;
    НоваяСтрока.Имя = ДополнительныеПараметры.Имя;
    НоваяСтрока.Путь = ДополнительныеПараметры.Путь;
КонецПроцедуры


Учитывая, что проверка на каталог выполняется в цикле и итерации будут продолжаться не дожидаясь окончания проверки я не могу узнать, когда завершится весь процесс. После окончания заполнения таблицы и получения всех файлов нужно выполнить еще действия. Как решить подобную проблему? Подскажите, пожалуйста.
 
 
   Филиал-msk
 
1 - 17.10.17 - 21:23
Выносишь найденные файлы и указатель на текущий проверяемый в глобальную область видимости, проверяешь поодиночке двигая указатель пока не дойдешь до конца.
   NewBieOneS
 
2 - 17.10.17 - 22:58
А зачем в глобальную область? Нельзя, например, создать реквизит формы (счетчик) и его увеличивать? Или я что-то не понимаю?
   Филиал-msk
 
3 - 17.10.17 - 23:00
(2) Не понимаешь. Реквизит формы - уже глобальная область по отношению к процедуре.
   Otark
 
4 - 18.10.17 - 06:07
Я Понимаю отказ от модальности и все такое, но че с отключенной модальностью ЭтоКаталог() выдает ошибку? Вроде как можно пользоваться?
   Otark
 
5 - 18.10.17 - 06:57
Да и немодальный поиск файлов здесь с какой целью? Какая то есть на это причина?
   Филиал-msk
 
6 - 18.10.17 - 07:48
(4)(5) ТС банально называет асинхронность отказом от модальности. Типичная фича для 97% одинесников, так же как и путаница "регламентное"-"фоновое" и т.п.
   NewBieOneS
 
7 - 18.10.17 - 14:13
(6) Я понимаю, что такое асинхронность. По Вашему - каждая проверка на "ЭтоКаталог" выполняется параллельно (в отдельном потоке или процессе)? Т.е. "здравствуй, многопоточность"? ))) Если так, то с решением все понятно. Я думал есть более "красивые" способы решить подобную проблему.

(4) А зачем тогда нужны немодальные функции поиска файлов, проверки на каталог? В чем смысл их использования, если можно юзать старые?
   Otark
 
8 - 19.10.17 - 05:31
(7)Они нужны тогда, когда нет возможности или необходимости ждать ответа от клиента. Есть возможность обработать ответ клиента, когда событие произойдет. Это очень удобно бывает местами. Здесь этот случай?
   NewBieOneS
 
9 - 19.10.17 - 13:57
(8) В моем случае такой необходимости нет. Спасибо за ответ.

Кстати, асинхронности в настоящем понимании этого слова в рассматриваемом вопросе нет. Это именно "НеМодальность". Параллельных вычислений, к сожалению, не организуешь.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует