В 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. Мы работаем в Москве и области.
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Работа с файловой системой в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Платформа 1С:Предприятие 8.3 предоставляет большой выбор инструментов для работы с файлами. В данной статье будут рассмотрены основные функции по работе с файлами.
Поиск файлов
Для поиска файлов во встроенном языке существует метод НайтиФайлы, метод доступен в Тонком клиенте, веб-клиенте, мобильном клиенте, через сервер, толстый клиент, а также внешнее соединение, мобильное приложение (клиент) и мобильное приложение (сервер).
Метод принимает на вход путь к каталогу, в котором будет производиться поиск, маска имени для поиска файлов, флаг – «Искать в подкаталогах»:
Функция возвращает массив, элементы которого объекты типа Файл.
В результате работы алгоритма будут выведены имена всех doc-файлов, содержащихся на диске C:. Если последний параметр указать «истина», будут найдены все файлы во всех подчиненных каталогах. Несколько дополнительных слов по маске поиска, в ОС Windows допускается использовать символы «*» – любые символы в любом количестве и «?» – любой один символ. Сочетать несколько масок недопустимо. В других ОС (Linux, macOS, iOS, Android) маску можно задавать более гибко, подробнее можно посмотреть в справке по языку.
Объект «Файл»
Объект Файл является основным объектом для работы с файлом. Конструктор объекта принимает полное имя файла.
- НачатьПолучениеВремениИзменения
- НачатьПолучениеКартинкиПредставленияФайлаБиблиотекиМобильногоУстройства
- НачатьПолучениеНевидимости
- НачатьПолучениеРазмера
- НачатьПолучениеТолькоЧтения
- НачатьПолучениеУниверсальногоВремениИзменения
- НачатьПроверкуСуществования
- НачатьПроверкуЭтоКаталог
- НачатьПроверкуЭтоФайл
- НачатьУстановкуВремениИзменения
- НачатьУстановкуНевидимости
- НачатьУстановкуТолькоЧтения
- НачатьУстановкуУниверсальногоВремениИзменения
- ПолучитьВремяИзменения
- ПолучитьКартинкуПредставленияФайлаБиблиотекиМобильногоУстройства
- ПолучитьНевидимость
- ПолучитьПредставлениеФайлаБиблиотекиМобильногоУстройства
- ПолучитьТолькоЧтение
- ПолучитьУниверсальноеВремяИзменения
- Размер
- Существует
- УстановитьВремяИзменения
- УстановитьНевидимость
- УстановитьТолькоЧтение
- УстановитьУниверсальноеВремяИзменения
- ЭтоКаталог
- ЭтоФайл
Некоторые методы по своей сути делают одно и то же действие, например, НачатьУстановкуТолькоЧтения и УстановитьТолькоЧтение. Методы, которые начинаются с «Начать*», предназначены для работы в асинхронном режиме, они доступны только на клиентах, а вот их «братья» доступны и на сервере. При работе на клиенте с файлами рекомендуется использовать асинхронные методы, однако методы без префикса «Начать» также доступны на клиенте. При использовании таких методов в веб-клиенте нужно будет подключать расширение по работе с файлами (как это сделать, будет рассмотрено ниже в статье).
Пример кода работы с объектом Файл:
Данный код устанавливает признак только чтения у всех файлов “*.doc” на диске C:.
Пример этого же алгоритма, но с использованием асинхронных методов:
Писать асинхронный код очень неудобно, он получается громоздкий, но именно асинхронный подход надо применять, а особенно – при разработке для web клиента.
Работа с файлами в клиент-серверной архитектуре
При работе в клиент-серверной архитектуре мы не можем работать с файлом на сервере, который был выбран на клиенте, т.к. сервер и клиент – это физически две разных машины. Чтобы решить эту проблему, мы должны передать файл из клиента на сервер, используя временное хранилище.
Пример синхронного кода:
Для передачи файлов существуют также такие асинхронные методы, как:
Вместо функции ПолучитьИзВременногоХранилища также можно использовать функцию ПолучитьФайл.
Работа с файлами в web-клиенте
Для работы с файлами в веб-клиенте необходимо расширение работы с файлами, делается это функциями:
В БСП (подсистема ПодключаемоеОборудование) уже есть метод, который использует указанные выше функции.
Если у вас используется web клиент, рекомендуется использовать следующую конструкцию: