Что означает выбрать файл
Время неумолимо идёт вперёд, а платформа 1С 8 бежит ещё быстрей этого времени.
Управляемые формы теперь называются "интерфейс ТАКСИ", модальные окна запрещены, а режим использования синхронных вызовов расширений и внешних компонент наглухо положил работоспособность большинства этих расширений и внешних компонент, и половину старых методов в добавок.
В общем, пацаны, дела такие - многие из вас читали статью великолепного Чистова П. о работе с файлами в 8.3
Если Вы ещё этого не сделали - бегом марш! (ссылка)
Суть механизма работы с файлами в кратце:
1) На клиенте выбираем файл
2) Пихаем его в чёрный ящик
3) Сохраняем содержимое чёрного ящика на сервере
Загвоздка состоит в том, что делать это надо особенно, по-новому и с душой.
и прочие языческие штучки здесь не прокатят.
Вот листинг кода, который позволяет загрузить файл с клиента
Нас интересует метод "НачатьПомещениеФайлов", который, собственно, вызывает диалог выбора файла и помещает этот файл во временное хранилище. Заморачиваться с описанием временного хранилища нет смысла, просто запомните - это то место, куда помещаются все выбранные нами файлы в виде двоичных данных (черный ящик).
Понять, что там и как храниться в этом временном хранилище практически невозможно. Можно только обратиться к нашему файлу по навигационной ссылке, которая присваивается автоматически (см. переменную "Адрес").
С тем, что файлы нужно хранить в реквизите или ресурсе с типом "Хранилище значения", спорить, думаю, никто не будет. Достать файл из временного хранилища и поместить его в реквизит с типом "Хранилище значения" можно след.образом:
С одним разобрались, теперь второе - как достать файл из этого хранилища значений (которое, напомню, находится на сервере) и сохранить на диск клиента?
Прежде всего, нам надо получить навигационную ссылку на реквизит с типом "Хранилище значения", куда у нас помещается файл в виде бинарных данных.
Будьте, внимательны! Эта навигационная ссылка уже не имеет с временным хранилищем ничего общего! Проверить тип навигационной ссылки можно методом
По традиции, листинг кода, который вызывает диалог сохранения файла
Значение переменной "Файл" это ещё одна особенность данного способа. Здесь стоит обратить внимание на "ИмяФайла". Дело в том, что помещая файл во временное хранилище, информация о его имени и расширении теряется. Поэтому не забудьте где-нибудь сохранять корректное имя файла, или хотя бы его расширение, чтобы потом не мучаться с вопросом "А это вордовский документ или мп3?"
Метод "НачатьПолучениеФайлов" аналогичен методу "НачатьПомещениеФайлов". Просто один открывает диалог для выбора файла, другой же, наоборот, открывает диалог для сохранения файла.
При использовании данного способа, никакие совместимости модальности и синхронных вызовов в свойствах конфигурации устанавливать не нужно.
Получите доступ к файлам и папкам, разрешив пользователю взаимодействовать со средством выбора. Для получения доступа к файлам можно использовать классы FileOpenPicker и FileSavePicker, а для получения доступа к папкам — класс FolderPicker.
Необходимые компоненты
Общее представление об асинхронном программировании для приложений универсальной платформы Windows (UWP) .
Права доступа к расположению
Поиск скачанных файлов на компьютере
Диспетчер загрузки отслеживает изображения, документы и другие файлы, скачиваемые из Интернета. Скачанные файлы автоматически сохраняются в папке Загрузки. Эта папка обычно находится на диске, где установлена ОС Windows (например, C:\Пользователи\имя_пользователя\Загрузки). Скачанные файлы можно перемещать из папки "Загрузки" в другие папки на компьютере.
Чтобы просмотреть файлы, загруженные с помощью Internet Explorer, откройте Internet Explorer, а затем нажать кнопку Инструменты и выбрать просмотреть загрузки. Вы сможете посмотреть, что вы скачали из Интернета, где эти элементы хранятся на вашем компьютере, и выбрать действия для скачивания.
Изменение стандартной папки для скачивания на компьютере
Откройте Internet Explorer, выберите кнопку Инструменты, а затем выберите Просмотреть загрузки.
В диалоговом окне Загрузки представления выберите Параметры в левом нижнем поле.
Выберите другое расположение для скачивания по умолчанию, на выбрав обзор и на выбрав ОК.
Диалог выбора файла
Сразу приведу код, который получился после упрощения.
Я специально привел ранее вариант для обычных форм, чтобы проще было сравнивать. Код разбился на две примитивные процедуры и практически не изменился за счет метода ВыполнитьСценарийВыбораФайла(). Этот метод скрывает все рутинные асинхронные действия:
- подключает расширение по работе с файлами
- если расширение не подключено, то задает пользователю вопрос по его подключению
- начинает установку расширения, если пользователь подтвердит это действие
- открывает диалог выбора файла
- передает результаты выбора файла назад в прикладную процедуру КаталогНачалоВыбораЗавершение()
Далее приведу код этой служебной процедуры, написанной по принципу, из этой статьи.
То есть вместо того, чтобы писать несколько процедур с труднопонимаемыми названиями в стиле ЗагрузитьФайлКонсолиПослеПодключенияРасширенияПослеПомещенияФайла() , вся последовательность действий описана в одной. Кроме того, можно заметить, что она универсальная и не содержит зависимостей от контекста формы. То есть ее можно перенести в другую форму простым копированием
Выбор одного файла: пошаговые инструкции
Использование средства выбора файлов включает создание и настройку объекта «средство выбора файлов» и отображение средства выбора файлов, чтобы дать пользователю возможность выбрать один или несколько элементов.
Создание и настройка FileOpenPicker
Задайте свойства объекта «средство выбора файлов», соответствующие вашим пользователям и приложению.
В этом примере создается сложное визуальное представление в виде картинок в удобном расположении, из которых может выбирать пользователь, путем задания трех свойств: ViewMode, SuggestedStartLocation и FileTypeFilter.
Задание для свойства ViewMode значения Thumbnail перечисления PickerViewMode создает сложное визуальное представление за счет эскизов изображений, представляющих файлы в средстве выбора файлов. Выполните это, чтобы выбрать визуальные файлы, например фотографии или видео. В других случаях воспользуйтесь PickerViewMode.List. Гипотетическое почтовое приложение с функциями Прикрепить изображение или видео и Прикрепить документ установит свойство ViewMode, соответствующее функции, прежде чем отобразить средство выбора файлов.
Выбор библиотеки «Изображения» в качестве значения для параметра SuggestedStartLocation с помощью PickerLocationId.PicturesLibrary позволяет пользователю начать работу в расположении вероятного нахождения изображений. Присвойте свойство SuggestedStartLocation расположению, подходящему для типа выбранных файлов, например «Музыка», «Изображения», «Видео» или «Документы». Из начального расположения пользователь может перейти в другие расположения.
Использование FileTypeFilter для указания типов файлов сохраняет внимание пользователя на выборе соответствующих файлов. Чтобы заменить предыдущие типы файлов в FileTypeFilter новыми записями, используйте вместо метода Add метод ReplaceAll.
Отображение FileOpenPicker
Выбор одного файла
Выбор нескольких файлов
Как работают средства выбора
Используя средство выбора, ваше приложение может получать доступ к файлам и папкам в системе пользователя, просматривать и сохранять их. Ваше приложение получает эти выбранные элементы в виде объектов StorageFile и StorageFolder, с которыми потом можно работать.
Средство выбора использует единый унифицированный интерфейс для обеспечения пользователю возможности выбора файлов и папок из файловой системы либо из других приложений. Файлы, выбранные из других приложений, воспринимаются как файлы из файловой системы: они возвращаются как объекты StorageFile. В целом ваше приложение может работать с ними так же, как с другими объектами. Другие приложения обеспечивают доступ к файлам за счет участия в контрактах средства выбора файлов. Сведения о настройке вашего приложения для предоставления другим приложениям файлов, места сохранения или обновлений файлов см. в разделе Взаимодействие с контрактами "Средство выбора файлов".
Например, вы можете вызывать средство выбора файлов в своем приложении, чтобы пользователь имел возможность открыть необходимый файл. За счет этого ваше приложение становится вызывающим приложением. Средство выбора файлов взаимодействует с системой и/или другими приложениями, обеспечивая пользователю возможность поиска и выбора определенного файла. Когда пользователь выбирает файл, средство выбора файлов возвращает этот файл в ваше приложение. Ниже показан процесс, который имеет место при выборе пользователем файла из другого приложения, например OneDrive.
Скачивание и предупреждения системы безопасности
Во время скачивания файла Internet Explorer по ряду признаков проверяет, не представляет ли файл угрозу для компьютера. Если Internet Explorer определит скачанный файл как подозрительный, вы получите уведомление, чтобы решить, сохранять, запускать или открывать файл. Не все файлы, для которых выводится предупреждение, на самом деле опасны, но важно скачивать только действительно нужные файлы и только с надежных сайтов.
Если вы видите предупреждение системы безопасности о том, что издателю данной программы не удалось подтвердить проверку, это означает, что Internet Explorer не распознает сайт или организацию, запрашивающие скачивание файла. Перед сохранением или открытием такого файла убедитесь, что его издателю можно доверять.
Скачивание файлов из Интернета всегда сопряжено с риском. Вот некоторые меры предосторожности, которые можно предпринять для защиты компьютера при скачивании файлов:
Установите и используйте антивирусную программу.
Скачивайте файлы только с веб-сайтов, которым доверяете.
Если файл имеет цифровую подпись, убедитесь, что она действительна и файл получен из надежного источника. Для просмотра цифровой подписи перейдите по ссылке издателя в диалоговом окне предупреждения о безопасности, которое отображается при первом скачивании файла.
Еще с помощью клавиш можно осуществлять выбор файлов и папок. Думаю, что вы обратили внимание на то, что вы можете выбрать мышкой только один объект за раз. Это значит, что если вы один раз кликните мышкой на файле, то он будет выделен, если вы кликните мышкой на другом файле, то выделение с первого файла будет снято и выделенным станет уже второй файл. Что же делать, если необходимо выбрать сразу несколько объектов. Для этого можно воспользоваться либо мышью, либо еще и клавишами-модификаторами. Давайте разбираться.
Если вы хотите выделить несколько файлов, которые находятся друг за другом, то вы можете нажать левую кнопку мыши в свободной области окна Проводника и, не отпуская ее, переместить указатель мыши таким образом, чтобы возникшей рамкой захватить все необходимые файлы и папки (рис. 158). Это наверно самый простой и удобный способ выбора. Но иногда возникает необходимость выбрать файлы, которые находятся не по порядку или список файлов велик и неудобно осуществлять выбор с помощью рамки. В этом случае на помощь придут клавиши Ctrl и Shift.
![]() | ![]() |
Рис. 158. Выбор файлов и папок с помощью мыши | Рис. 159. Выбор файлов с помощью Ctrl |
Если необходимо выбрать несколько файлов или папок подряд, то можно это проделать следующим образом. Выберите первый объект (файл или папку), затем нажмите и удерживайте нажатой клавишу Shift и щелкните на последнем объекте из вашей выборки. Все объекты, находящиеся между выбранными вами объектами, попадут в выделение.
Если вам необходимо выбрать несколько объектов, расположенных не по порядку, то воспользуйтесь клавишей Ctrl. Выберите первый объект, щелкнув на нем мышкой, затем нажмите клавишу Ctrl и удерживая ее нажатой продолжайте щелкать на любых объектах. Они будут добавляться в вашу выборку (рис.159). На рисунке 159 файлы изображений выбраны через один с использованием клавиши Ctrl.
После того, как вы выбрали необходимые файлы и папки, вы можете их копировать, перемещать или удалять уже известными вам способами.
С появлением управляемого приложения и веб-клиента некоторые задачи, которые решались в обычном приложением за несколько строчек, существенно усложнились. Казалось бы такая простая и часто используемая операция, как интерактивный выбор файла, которая в обычном приложении решалась в одном методе, теперь требует создания цепочки из нескольких процедур, которые вызываются одна за другой через ОписаниеОповещения. Вот как это было с использованием модальных вызовов:
Но как эту задачу решить на веб-клиенте? В поисковике не удалось найти готового универсального решения. Поискал в типовых, но там все разбросано по модулям и как-то запутано. Посмотрел пример в консоли СКД с диска ИТС для управляемых форм. Там тоже надо вычленять по кусочкам все шаги. Кроме того там применяется одна фича, которая позволяет открывать диалог выбора файла без установленного расширения работы с файлами. Но в общем случае эта хитрость не подойдет, так как она работает только для существующих файлов, насколько я понял. Поэтому написал процедуры, которые можно просто скопировать и использовать в будущем, не тратя время на то, чтобы вспоминать, как это работает.
Выбор папки: приводится полный код
Каждый раз, когда ваше приложение получает доступ к файлу или папке через средство выбора, добавляйте этот файл или папку в свойство FutureAccessList или MostRecentlyUsedList приложения для отслеживания. Подробнее об использовании этих списков см. в разделе Отслеживание последних использованных файлов и папок.
Получите скорость, безопасность и конфиденциальность с помощью Microsoft Edge .
Из Интернета можно скачивать несколько типов файлов: документы, изображения, видеозаписи, приложения, в том числе расширения и панели инструментов для браузера. Если выбрать файл для скачивания, Internet Explorer спросит, что нужно сделать с этим файлом. В зависимости от типа скачиваемого файла доступны следующие варианты:
Открыть файл для просмотра, но не сохранять на компьютере.
Сохранить файл на компьютере в стандартной папке для скачивания. После того как Internet Explorer проверит безопасность и завершит скачивание файла, вы сможете открыть файл, открыть папку, в которой он сохранен, либо просмотреть файл в диспетчере загрузок.
Сохранить под другим именем, с другим типом или в другой папке на компьютере.
Выполнить приложение, расширение или файл другого типа. После того как Internet Explorer выполнит проверку безопасности, файл откроется и запустится на компьютере.
Отменить скачивание и вернуться к просмотру веб-страниц.
На компьютере можно также сохранять файлы меньшего размера, например отдельные картинки. Для этого щелкните объект правой кнопкой мыши изображение, ссылку или файл и выберите пункт Сохранить изображение или Сохранить объект как.
Файл для скачивания
К публикации прилагается пример, который можно использовать как шаблон для описанных операций. В нем реализованы несколько наиболее востребованных случаев: выбор существующего файла, выбор имени файла для сохранения, выбор каталога и множественный выбор. Для полноты картины приведены аналогичные операции для обычных форм. Тестировались процедуры на платфроме 8.3, на конфигурацях начиная с режима совместимости 8.2.13
Пользовательский интерфейс средства выбора файлов
В средстве выбора файлов отображаются сведения, позволяющие сориентировать пользователей и обеспечить им привычное взаимодействие с системой при открытии и сохранении файлов.
Эти сведения включают следующее:
- текущее расположение;
- выбранный пользователем элемент или несколько элементов;
- дерево расположений, к которым может перейти пользователь. Они включают расположения в файловой системе, например папку «Музыка» или «Загрузки», а также приложения, которые реализуют контракт средства выбора файлов (такие как «Камера», «Фотографии» и Microsoft OneDrive).
Почтовое приложение может отображать средство выбора файлов, чтобы предоставить пользователю возможность выбора вложений.
Загрузка файлов с клиента на сервер
Постановка задачи: пусть требуется метод, который умеет помещать на сервер выбранный на клиенте файл. Если выбранный файл является каталогом, то необходимо поместить на сервер все файлы, содержащиеся в этом каталоге (подчиненные каталоги игнорировать).
Последовательность асинхронных действий:
- определить является ли файл каталогом
- если не является, то добавить его в массив помещаемых файлов
- если является, то найти все файлы этого каталога
- каждый из найденных файлов проверить является ли он каталогом. Если не является то добавить в массив помещаемых файлов (каждая итерация цикла обхода файлов является асинхронной, потому что вместо синхронного Файл.ЭтоФайл() необходимо использовать его аналог Файл.НачатьПроверкуЭтоФайл())
- поместить файлы на сервер
- вернуть результат помещения в прикладную процедуру, которая будет выполнять обработку файлов по какому-то алгоритму
Данная задача снова решается за три простых шага
Все детали скрыты в процедуре ВыполнитьСценарийЗагрузкиФайлаНаСервер(), которая подходит как для файлов, так и для каталогов. При необходимости ее можно доработать, чтобы она покрывала больше случаев.
Выбор одного файла: полный код
Почему некоторые файлы не открываются в Internet Explorer
Internet Explorer использует такие надстройки, как Adobe Reader, для просмотра некоторых файлов в браузере. Если файл, для которого требуется надстройка, не открывается, возможно, у вас есть более старая версия надстройки, которую необходимо обновить.
Читайте также: