Где-то там (у нормальных программистов) есть такое понятие callback hell. Я бы ее назвал лапшой вызовов, поскольку в нашей стране приплетать религию где-либо опасно :). Благодаря появлению в платформе 1С объекта "ОписаниеОповещения" и соответствующих обработчиков, а также (ранее) повсеместное использование "Начать(что-то делать)", лапша начинает плодится с такой скоростью... в общем секта летающего макаронного монстра по нам плачет.
Ну и как результат - общие модули "ДелаемНужноеКлиентСлужебный", отдельные области "ЗавершениеНемодальныхВызовов", ну и попытка продраться через последовательность вызовов. А еще можно последовательность оповещений, замкнуть в какой-нибудь "хитрый" общий обработчик (чур я вам этого не подсказывал).
Ну в общем, поплакал и хватит. В конце концов у нас есть Асинх и Ждать. В большинстве случаев на немодальные методы с оповещениями, появились их аналоги Асинх.
Хотя будьте осторожны. В некоторых случаях такие методы могут (например) не работать в веб-клиенте... хотя казалось бы, тогда зачем они нужны???
"И отличненько", сказал я, и пошел переписывать всю работу с файлами, благо выпала мне такая задача, где надо много и хорошо с ними работать. И в итоге родился общий модуль ФайловаяСистемаКлиентАсинх. Список методов, которые поддерживает данный общий модуль:
- ЗагрузитьФайл - помещает файл в хранилище. Может вызвать сам диалог выбора файла и обработать результат. Возвращает структуру с данными о результате помещения файла;
- ЗагрузитьФайлы - аналогично вышеуказанному методу, для нескольких файлов. Возвращает массив структур;
- СохранитьФайл - получает файл из хранилища и сохраняет в файловой системе. Может сам вызвать диалог сохранения файла. Возвращает ОписаниеПереданногоФайла;
- СохранитьФайлы - аналогично вышеуказанному методу, для нескольких файлов. А еще умеет упаковывать в архив. Возвращает массив описаний;
- УдалениеФайлов - выполняет удаление одного или нескольких файлов. Прошу не пинать за не совсем правильное наименование метода, УдалитьФайлы уже занято платформой, а я не сильно хотел думать;
- ВыбратьКаталог - открывает диалог выбора каталога, возвращает путь к нему;
- ВыбратьФайл - открывает диалог выбора файла, возвращает путь к нему;
- ВыбратьФайлы - аналогично вышеуказанному методу, для нескольких файлов;
- СоздатьВременныйКаталог - создает временный каталог, возвращает путь к нему;
- ПодключитьРасширениеДляРаботыСФайлами - предлагает пользователю установить расширение работы с файлами, возвращает признак подключенного расширения;
- СообщитьОшибкуПодключенияРасширения - вызывает сообщение пользователю, исключение или предупреждение (в зависимости от настройки) с текстом что необходимо подключить расширение работы с файлами.
Общий модуль работает в тонком, толстом и веб-клиенте. Все вызовы кроме методов получения параметров и сообщения выполняются с использованием конструкции Ждать. Окончания Асинх не использовано намерено, поскольку оно содержится в имени общего модуля.
В веб-клиенте выполняется проверка наличия расширения, предложение об установке и сохранение настройки о наличии расширения аналогично типовым методам общего модуля ФайловаяСистемаКлиент из БСП.
Был сделан с подглядыванием в БСП 3.1.4.232, но это не принципиально думается мне. Главное, чтобы платформа была 8.3.18 и выше.
Заключение
Данный общий модуль можно скачать из нашего репозитория, а можете поддержать автора и скачать его отсюда. $m стоят недорого, а мне приятно )))).
А еще я добавил шаблоны для удобной автозамены кода (по данному общему модулю). Эти и другие шаблоны вы можете найти в репозитории.
Ну и традиционно, другие полезные инструменты (их вы тоже можете найти в нашей библиотеке):
Пы.сы.
Данный общий модуль был отправлен специалистам 1С для включения в состав БСП, они сказали что рассмотрят и перенесут.