1с выбрать файлы из каталога

Рассмотрим как асинхронно (а в управляемых формах необходимо только так) программно обработать выбор пользователем пути к файлу.

Постановка задачи

Предположим, что на форме создан реквизит ПутьКФайлу. Этот реквизит имеет тип Строка и выведен на форму. Пользователь должен указывать в этом поле путь к файлу Excel.

Решение

Для удобства свойство КнопкаВыбора элемента формы установим в значение Да и будем обрабатывать событие НачалоВыбора этого элемента.

В процедуре начала выбора элемента ПутьКФайлу необходимо написать код:

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )

// Отказываемся от стандартной обработки процедуры
СтандартнаяОбработка = Ложь;

// Создаем диалог выбора файла и указываем для чего он будет использоваться
Диалог = Новый ДиалогВыбораФайла ( РежимДиалогаВыбораФайла . Открытие );
// Задаем фильтр доступных расширений файлов для выбора
Диалог . Фильтр = НСтр ( «ru=’Книга Excel 97 (*.xls)|*.xls|Книга Excel 2007 (*.xlsx)|*.xlsx’» );
// Задаем текст заголовка окна выбора
Диалог . Заголовок = НСтр ( «ru=’Выберите файл Excel’» );
// Создаем объект ОписаниеОповещения, который будет передан в метод Показать
ОповещениеЗавершения = Новый ОписаниеОповещения ( «ВыборФайлаЗавершение» , ЭтотОбъект );
// Открываем окно выбора файла
Диалог . Показать ( ОповещениеЗавершения );

Диалог . Показать ( ОповещениеЗавершения );

содержит описание процедуры, которая будет вызвана после закрытия диалога выбора. В этой процедуре должно быть два параметра:

  • ВыбранныеФайлы — массив выбранных имен файлов. Если пользователь отказался от выбора файла, то в параметре будет содержаться Неопределено;
  • ДополнительныеПараметры — произвольное значение, которое указано при создании объекта ОписаниеОповещения в третьем параметре (в нашем примере не задано).

Пример процедуры, которая будет вызвана после закрытия окна выбора файла:

&НаКлиенте
Процедура ВыборФайлаЗавершение ( ВыбранныеФайлы , ДополнительныеПараметры ) Экспорт

Если ВыбранныеФайлы <> Неопределено Тогда

ПутьКФайлу = ВыбранныеФайлы [ 0 ];

Внимание!

Процедура, указанная в объекте ОписаниеОповещения должна иметь ключевое слово Экспорт.

Приведенный пример можно немного усовершенствовать: передать в третий параметр конструктора ОписаниеОповещения переменную Диалог.

ОповещениеЗавершения = Новый ОписаниеОповещения ( «ВыборФайлаЗавершение» , ЭтотОбъект , Диалог );

Тогда в процедуре ВыборФайлаЗавершение будет доступно немного больше информации: из параметра ДополнительныеПараметры можно будет узнать каталог, в котором хранится выбранный файл, и фильтр, которому соответствует файл.

В конструкторе объекта ДиалогВыбораФайла в параметре указывается для чего будет открыт диалог. Возможные значения системного перечисления РежимДиалогаВыбораФайла:

Приведу еще несколько свойств объекта ДиалогВыбораФайла:

  • Каталог — текущий каталог;
  • ПолноеИмяФайла — начальное полное имя файла. После выбора файла содержит полное имя выбранного файла (кроме множественного выбора и выбора каталога);
  • МножественныйВыбор — флаг возможности выбора нескольких файлов;
  • ПредварительныйПросмотр — флаг необходимости показа окна предварительного просмотра файлов;
  • ПроверятьСуществованиеФайла — флаг необходимости проверки существования выбираемого файла.

Решение средствами БСП

В конфигурациях со втроенной Библиотекой стандартных подсистем можно использовать процедуру

ОбработчикВыбораФайла ( Объект , Знач ИмяСвойства , СтандартнаяОбработка = Ложь, Знач ПараметрыДиалога = Неопределено, ОповещениеЗавершения = Неопределено ) Экспорт

общего модуля ОбменДаннымиКлиент. При помощи этого метода приведенную выше задачу можно решить так:

&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )

НастройкиДиалога = Новый Структура ;
НастройкиДиалога . Вставить ( «Заголовок» , НСтр ( «ru=’Выберите файл Excel’» ));
НастройкиДиалога . Вставить ( «Фильтр» , НСтр ( «ru=’Книга Excel (*.xlsb)|*.xlsb|Книга Excel 2007 (*.xlsx)|*.xlsx|Книга Excel 97 (*.xls)|*.xls’» ));

ОбменДаннымиКлиент . ОбработчикВыбораФайла ( ЭтотОбъект , «ПутьКФайлу» , СтандартнаяОбработка , НастройкиДиалога );

Остались вопросы?
Спросите в комментариях к статье.

В 1С 8.3 (8.2) для работы с файлами существует два объекта: Файл и ДиалогВыбораФайла.

Рассмотрим каждый по отдельности.

Объект 1С — файл

Объект Файл служит для управления параметрами файлов.

Сразу стоит заметить, что данный объект не предназначен для чтения и записи из файлов.

Например, прочитаем параметры некоторого файла, находящегося на диске C:

В результате мы получим следующую информацию (если файл найден):

Параметры файла:
Полное имя файла: C:Работа с файламистатья.txt
Имя: статья.txt
Имя без расширения: статья
Расширение: .txt
Путь без имени: C:Работа с файлами
Размер: 899
Это файл: Да
Изменен: 18.05.2015 16:21:28
Только чтение: Нет
Невидимость: Нет

Запись в файл

Теперь, когда мы выбрали и открыли файл, можно с ним работать, т.е. прочитать его содержимое или записать в него что-нибудь.
Рассмотрим пример:

Получите 267 видеоуроков по 1С бесплатно:

Чтение файла в 1С

Часто бывает необходимо прочитать текст файла построчно, например, для анализа каждой строки. Для этого используем объект ЧтениеТекста.

Запись текста из 1С в файл

Заметим, что при записи текстового файла можно установить кодировку.

Копирование файла

Здесь все очень просто

Перемещение

Удаление

Диалог выбора файла

В указанных выше примерах есть одно неудобство. Путь к файлу прописан жестко в коде. Чтобы выбрать файл интерактивно, существует объект ДиалогВыбораФайла, о котором речь пойдет ниже.

Объект ДиалогВыбораФайла служит для открытия файла (файлов), сохранения файла или выбора каталога в диалоге специального вида.

Например, выберем и откроем некоторый файл с расширением txt:
Задаем режим диалога выбора. Доступны три варианта: ВыборКаталога, Открытие, Сохранение

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Для вызова стандартного диалога выбора файла или папки Windows в 1С существует специальный объект ДиалогВыбораФайла. У него существует три режима работы:

  • выбор каталога;
  • открытие файла;
  • сохранение файла.

Рассмотрим эти режимы.

Во всех режимах для того, чтобы определить, выбрал ли пользователь файл или каталог (не нажал ли он кнопку Отмена) используется функция Выбрать(). Если была нажата кнопка Отмена, эта функция возвращает Ложь. Эта же функция вызывает появление окна выбора у пользователя.

Диалог выбора каталога в 1С

Следует помнить, что путь к каталогу записывается без последнего слэша. Например, так: c:Папка1Папка2

Диалог открытия файла в 1С

В режиме открытия появляются дополнительные параметры работы диалога:

    Фильтр состоит из двух частей, разделенных символом «|»: строки представления, которая отображается в окне выбора файла, и строки маски. В маске могу использоваться стандартные символы: ? — любой символ, * — любые символы. Можно последовательно перечислить несколько фильтров, разделенных символом «|». Например:

Итак, код вызова диалога открытия одного файла будет выглядеть так:

Код вызова диалога открытия нескольких файлов будет выглядеть так:

Диалог сохранения файла в 1С

Диалог сохранения отличается от диалога открытия тем, что если выбранный файл существует, при сохранении будет задан вопрос, хочет ли пользователь его перезаписать. Также при сохранении не работает возможность множественного выбора файлов. В остальном все работает точно так же:

Оцените статью