Предназначен для работы с диалогом специального вида для открытия файла или нескольких файлов, сохранения файла или выбора каталога. В веб-клиенте, если расширение работы с файлами не установлено, может быть использован только для установки заголовка диалога или множественного выбора в методах НачатьПомещениеФайла и НачатьПомещениеФайлов.
Примеры платформы
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = НСтр("ru = 'Текст'; en = 'Text'")
+ "(*.txt)|*.txt";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Истина;
ДиалогОткрытияФайла.Заголовок = "Выберите файлы";
Если ДиалогОткрытияФайла.Выбрать() Тогда
МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
Для Каждого ИмяФайла Из МассивФайлов Цикл
ВыбФайл = Новый Файл(ИмяФайла);
Сообщить(ИмяФайла
+ НСтр("ru = '; Размер = '; en = '; Size = '")
+ ВыбФайл.Размер());
КонецЦикла;
Иначе
Предупреждение(НСтр("ru = 'Файл(ы) не выбран!'; en = 'File(s) not selected!'"));
КонецЕсли;Полное описание, параметры и ограничения
ДиалогВыбораФайла (FileDialog)
ДиалогВыбораФайла (FileDialog)
Доступен, начиная с версии 8.0.
Свойства:
ВыбранныеФайлы (SelectedFiles)
Заголовок (Title)
ИндексФильтра (FilterIndex)
Каталог (Directory)
МножественныйВыбор (MultipleChoice)
ПолноеИмяФайла (FullFileName)
ПредварительныйПросмотр (Preview)
ПроверятьСуществованиеФайла (CheckFileExistence)
Разделы (Sections)
Расширение (DefaultExt)
Режим (Mode)
ТипыСодержимого (MIMETypes)
Фильтр (Filter)
Методы:
Выбрать (Choose)
ВыбратьАсинх (ChooseAsync)
Показать (Show)
Конструкторы:
С заданным режимом работы
Описание:
Предназначен для работы с диалогом специального вида для открытия файла или нескольких файлов, сохранения файла или выбора каталога.
В веб-клиенте, если расширение работы с файлами не установлено, может быть использован только для установки заголовка диалога или множественного выбора в методах НачатьПомещениеФайла и НачатьПомещениеФайлов.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Пример:
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла = "";
Фильтр = НСтр("ru = 'Текст'; en = 'Text'")
+ "(*.txt)|*.txt";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Истина;
ДиалогОткрытияФайла.Заголовок = "Выберите файлы";
Если ДиалогОткрытияФайла.Выбрать() Тогда
МассивФайлов = ДиалогОткрытияФайла.ВыбранныеФайлы;
Для Каждого ИмяФайла Из МассивФайлов Цикл
ВыбФайл = Новый Файл(ИмяФайла);
Сообщить(ИмяФайла
+ НСтр("ru = '; Размер = '; en = '; Size = '")
+ ВыбФайл.Размер());
КонецЦикла;
Иначе
Предупреждение(НСтр("ru = 'Файл(ы) не выбран!'; en = 'File(s) not selected!'"));
КонецЕсли;
Использование в версии:
Доступен, начиная с версии 8.0.
Описание изменено в версии 8.3.20.
Методическая информация
Практические примеры
Асинхронно выбрать два учебных текста и проверить весь набор
Ждать получает реальный результат Обещания: массив имён или Неопределено при отмене. Нельзя считать само Обещание массивом или использовать одиночное ПолноеИмяФайла вместо результата.
Где и как запускать
Полный модуль своей управляемой формы внешней обработки. Настольный тонкий клиент Windows 8.5.1.1343; файловая система именно клиента. Запуск и отображение в 1С не проверены.
Подготовка
Работайте в отдельной учебной базе 8.5.1.1343. Создайте внешнюю обработку УчебныйВыборФайла85 с новой управляемой формой; рабочие документы, настройки и формы не нужны.
Сами создайте на компьютере клиента собственный каталог C:\1CLab\FileDialog85. Не используйте существующий чужой каталог, сетевой диск, символическую ссылку или папку с рабочими файлами.
В этом каталоге самостоятельно создайте book.txt с единственной строкой Книга: 3 и pen.txt со строкой Ручка: 1. Сохраните как UTF-8. Это собственные маленькие учебные тексты, не выгрузка клиентских данных.
Для каждого урока используйте отдельную копию формы. Вставьте полный код на уровне модуля. Создайте указанную команду, назначьте её Действие точно указанной процедуре и перетащите команду на форму как кнопку.
Примеры не выполнялись. При будущем ручном запуске первый и второй уроки могут только прочитать два подготовленных текста; третий только проверяет каталог, четвёртый только выбирает имя. Код не записывает и не удаляет файлы, не вызывает сервер, сеть или печать.
Windows-клиент указан намеренно: правила масок, доступность методов и поведение свойств различаются на веб-клиенте, Linux, macOS и мобильных платформах. Этот модуль не переносится туда без проверки.
Команда формы: ВыбратьДваУчебныхТекста → ВыбратьДваУчебныхТекста. Другие обработчики вручную не создавайте.
&НаКлиенте
Асинх Процедура ВыбратьДваУчебныхТекста(Команда)
Каталог = Новый Файл("C:\1CLab\FileDialog85");
Если Не Каталог.Существует() Тогда
Сообщить("Сначала создайте свой учебный каталог и два текста по инструкции");
Возврат;
КонецЕсли;
Если Не Каталог.ЭтоКаталог() Тогда
Сообщить("Учебный путь должен быть собственным каталогом");
Возврат;
КонецЕсли;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.Заголовок = "Выберите собственные book.txt и pen.txt";
Диалог.Каталог = "C:\1CLab\FileDialog85";
Диалог.МножественныйВыбор = Истина;
Диалог.Фильтр = "Учебные тексты (*.txt)|*.txt";
Диалог.ПроверятьСуществованиеФайла = Истина;
Имена = Ждать Диалог.ВыбратьАсинх();
Если Имена = Неопределено Тогда
Сообщить("Множественный выбор отменён; чтение не выполнялось");
Возврат;
КонецЕсли;
Если Имена.Количество() < 1 Или Имена.Количество() > 2 Тогда
Сообщить("Выберите один или два собственных учебных текста");
Возврат;
КонецЕсли;
Для Каждого ИмяФайла Из Имена Цикл
Если ИмяФайла <> "C:\1CLab\FileDialog85\book.txt"
И ИмяФайла <> "C:\1CLab\FileDialog85\pen.txt" Тогда
Сообщить("Есть чужое имя: весь выбранный набор отклонён до чтения");
Возврат;
КонецЕсли;
КонецЦикла;
Сообщить("Собственных выбранных файлов: " + Строка(Имена.Количество()));
Для Каждого ИмяФайла Из Имена Цикл
ПрочитатьСвойТекст(ИмяФайла);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ПрочитатьСвойТекст(ИмяФайла)
Если ИмяФайла = "C:\1CLab\FileDialog85\book.txt" Тогда
ОжидаемыйТекст = "Книга: 3";
ИначеЕсли ИмяФайла = "C:\1CLab\FileDialog85\pen.txt" Тогда
ОжидаемыйТекст = "Ручка: 1";
Иначе
Сообщить("Этот урок не читает файлы вне двух собственных учебных текстов");
Возврат;
КонецЕсли;
ФайлНаДиске = Новый Файл(ИмяФайла);
Если Не ФайлНаДиске.Существует() Тогда
Сообщить("Выбранный учебный файл уже отсутствует; восстановите свой образец");
Возврат;
КонецЕсли;
Если ФайлНаДиске.ЭтоКаталог() Тогда
Сообщить("Ожидался свой текстовый файл, а не каталог");
Возврат;
КонецЕсли;
Текст = Новый ТекстовыйДокумент;
Попытка
Текст.Прочитать(ИмяФайла, "UTF-8");
Исключение
Сообщить("Не удалось прочитать собственный образец; проверьте его наличие и права клиента");
Возврат;
КонецПопытки;
СтрокаОбразца = СтрЗаменить(СтрЗаменить(Текст.ПолучитьТекст(), Символы.ВК, ""), Символы.ПС, "");
Сообщить(СтрокаОбразца);
Сообщить(СтрокаОбразца = ОжидаемыйТекст);
КонецПроцедуры
Разбор по шагам
Асинх стоит в объявлении процедуры. Ждать применяется непосредственно к ВыбратьАсинх, а не к случайному массиву.
Отмена проверяется до Количество и перебора. Урок допускает один или два собственных файла, а не требует выдуманного фиксированного результата.
Первый цикл проверяет все имена и не читает содержимое. Если хотя бы одно имя вне двух точных образцов, весь набор отклоняется.
Второй цикл читает допущенные тексты. Порядок выбора не гарантируется, поэтому строки Книга и Ручка могут выводиться в любом порядке.
Ошибка чтения отдельного собственного файла не маскируется: помощник сообщает её. Этот урок не является атомарным импортом или записью набора в базу.
Как проверить результат
Выберите два образца: количество 2 и для каждого своя строка с Истина. Порядок строк произвольный.
Выберите только книгу: количество 1, Книга: 3, Истина. Отмена: только сообщение отмены.
Добавьте в выбор свой третий файл с другим именем: набор отклонён до любых вызовов ПрочитатьСвойТекст.
Ожидаемый результат
Проверяется весь выбранный набор до чтения; результат обещания не спутан с состоянием одиночного диалога.
На что обратить внимание
МножественныйВыбор не используется для Сохранение или ВыборКаталога.
Проверка имён и маска не заменяют проверки содержимого в настоящем импорте.
Настольные пути клиента не являются путями сервера; этот код не загружает файлы на сервер.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Получить выбранный каталог через оповещение
В режиме ВыборКаталога результат берём из Каталог. Свойство ВыбранныеФайлы содержит пустой массив; его нулевой элемент нельзя читать как путь каталога.
Где и как запускать
Полный модуль своей управляемой формы внешней обработки. Настольный тонкий клиент Windows 8.5.1.1343; файловая система именно клиента. Запуск и отображение в 1С не проверены.
Подготовка
Работайте в отдельной учебной базе 8.5.1.1343. Создайте внешнюю обработку УчебныйВыборФайла85 с новой управляемой формой; рабочие документы, настройки и формы не нужны.
Сами создайте на компьютере клиента собственный каталог C:\1CLab\FileDialog85. Не используйте существующий чужой каталог, сетевой диск, символическую ссылку или папку с рабочими файлами.
В этом каталоге самостоятельно создайте book.txt с единственной строкой Книга: 3 и pen.txt со строкой Ручка: 1. Сохраните как UTF-8. Это собственные маленькие учебные тексты, не выгрузка клиентских данных.
Для каждого урока используйте отдельную копию формы. Вставьте полный код на уровне модуля. Создайте указанную команду, назначьте её Действие точно указанной процедуре и перетащите команду на форму как кнопку.
Примеры не выполнялись. При будущем ручном запуске первый и второй уроки могут только прочитать два подготовленных текста; третий только проверяет каталог, четвёртый только выбирает имя. Код не записывает и не удаляет файлы, не вызывает сервер, сеть или печать.
Windows-клиент указан намеренно: правила масок, доступность методов и поведение свойств различаются на веб-клиенте, Linux, macOS и мобильных платформах. Этот модуль не переносится туда без проверки.
Команда формы: ВыбратьУчебныйКаталог → ВыбратьУчебныйКаталог. Другие обработчики вручную не создавайте.
&НаКлиенте
Процедура ВыбратьУчебныйКаталог(Команда)
Каталог = Новый Файл("C:\1CLab\FileDialog85");
Если Не Каталог.Существует() Тогда
Сообщить("Сначала создайте свой учебный каталог и два текста по инструкции");
Возврат;
КонецЕсли;
Если Не Каталог.ЭтоКаталог() Тогда
Сообщить("Учебный путь должен быть собственным каталогом");
Возврат;
КонецЕсли;
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);
Диалог.Заголовок = "Выберите только свой C:\1CLab\FileDialog85";
Диалог.Каталог = "C:\1CLab\FileDialog85";
Диалог.Показать(Новый ОписаниеОповещения("УчебныйКаталогВыбран", ЭтаФорма, Диалог));
КонецПроцедуры
&НаКлиенте
Процедура УчебныйКаталогВыбран(ВыбранныеФайлы, Диалог) Экспорт
Если ВыбранныеФайлы = Неопределено Тогда
Сообщить("Выбор каталога отменён");
Возврат;
КонецЕсли;
ИмяКаталога = Диалог.Каталог;
Если ИмяКаталога <> "C:\1CLab\FileDialog85"
И ИмяКаталога <> "C:\1CLab\FileDialog85\" Тогда
Сообщить("Выбран другой каталог; его содержимое не исследуем");
Возврат;
КонецЕсли;
Каталог = Новый Файл(ИмяКаталога);
Если Не Каталог.Существует() Тогда
Сообщить("Свой каталог уже отсутствует");
Возврат;
КонецЕсли;
Сообщить(Каталог.ЭтоКаталог());
Сообщить(Диалог.Режим = РежимДиалогаВыбораФайла.ВыборКаталога);
Сообщить(Диалог.ВыбранныеФайлы.Количество() = 0);
КонецПроцедуры
Разбор по шагам
Показать начинает отображение и не возвращает выбранный каталог синхронно. Остальная обработка находится в отдельной экспортной процедуре.
ОписаниеОповещения передаёт сам Диалог третьим аргументом конструктора. После закрытия callback получает два параметра: ВыбранныеФайлы и это дополнительное значение.
Неопределено означает отмену. Только после этой проверки читаем фактический Диалог.Каталог.
Урок допускает только свой подготовленный каталог с необязательным завершающим разделителем Windows. Другую папку не перечисляет и не открывает.
После повторной проверки существования ЭтоКаталог проверяет фактический вид объекта. Режим и пустое свойство ВыбранныеФайлы подтверждают различие выбора каталога и файла.
Как проверить результат
Выберите FileDialog85: три Истина. Ни один текст в этом уроке не читается.
Отмена: только сообщение отмены. Другая папка: сообщение отказа без чтения её содержимого.
Ожидаемый результат
Путь каталога получен из правильного свойства в правильный момент, а пустой массив не индексируется.
На что обратить внимание
Фильтр, ПредварительныйПросмотр и ПроверятьСуществованиеФайла не используются для выбора каталога; их фиктивная настройка сюда не добавлена.
Показать требует расширения работы с файлами в веб-клиенте; урок написан для Windows-клиента.
Оповещение — callback с двумя параметрами, не обработчик Нажатие обычной кнопки.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.