В среде 1С:Предприятие работа с внешней файловой системой является одной из базовых задач, с которыми сталкивается разработчик практически ежедневно. Будь то выгрузка отчетов в Excel, загрузка прайс-листов контрагентов или создание резервных копий конфигурации, все эти процессы требуют взаимодействия с объектами файловой системы. Понимание того, как именно платформа управляет файлами, критически важно для написания надежного и безопасного кода.

Механизмы работы делятся на два основных уровня: низкоуровневый объект Файл для получения метаданных и высокоуровневый глобальный контекст ФайловыйМенеджер для выполнения операций чтения и записи. Ошибки на этом этапе часто приводят к падению клиентских приложений или блокировке файлов антивирусным ПО, поэтому подход должен быть системным и аккуратным.

Объект Файл и получение метаданных

Основным инструментом для работы с информацией о файле является объект Файл. Важно понимать, что создание экземпляра этого объекта не приводит к физическому созданию файла на диске. Это лишь ссылка на путь, которая позволяет программе «спросить» операционную систему о существовании объекта и его свойствах.

С помощью этого объекта можно получить полный путь, имя файла без расширения, размер в байтах и дату последнего изменения. Эти данные часто используются перед началом обработки, чтобы избежать ошибок выполнения. Например, перед попыткой прочитать большой архив логично проверить его размер, чтобы не исчерпать оперативную память.

Для работы с путями существует специальное свойство ПолноеИмя, которое возвращает абсолютный путь. Это особенно полезно в сетевых средах, где относительные пути могут трактоваться по-разному в зависимости от текущего каталога запуска клиента . Всегда используйте полные пути для однозначности.

💡

Используйте метод ПолноеИмя() объекта Файл, чтобы получить канонический путь, даже если вы передали относительный путь или путь с символами «..».

⚠️ Внимание: Объект Файл не проверяет существование файла при создании. Методы проверки существования вызываются отдельно и требуют прав доступа к родительской папке.

Глобальный контекст ФайловыйМенеджер

Непосредственные операции копирования, перемещения, удаления и переименования выполняются через методы глобального контекста ФайловыйМенеджер. Эти методы доступны как в тонком, так и в толстом клиенте, однако их поведение может отличаться в файловом и клиент-серверном вариантах работы.

Одной из частых задач является копирование файла из одной директории в другую. Метод КопироватьФайл принимает два аргумента: источник и приемник. Если файл с таким именем уже существует в папке назначения, операция завершится ошибкой, если не использовать специальные режимы перезаписи, доступные в некоторых версиях платформы.

При удалении файлов следует быть предельно осторожным. Метод УдалитьФайл безвозвратно стирает данные, минуя корзину операци-онной системы (в большинстве случаев). Восстановить такой файл средствами 1С невозможно, поэтому перед удалением часто создают временную копию или меняют расширение.

📊 Какой тип клиента 1С вы используете чаще всего?
Тонкий клиент
Толстый клиент
Веб-клиент
Мобильное приложение

Чтение и запись текстовых данных

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

Процесс записи обычно выглядит так: создается объект, в него добавляются строки через метод ДобавитьСтроку, а затем вызывается метод Записать. При записи можно указать кодировку, что критически важно при обмене данными с внешними системами, например, при выгрузке в формате CSV для импорта в Excel.

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

Текст = Новый ТекстовыйДокумент;

Текст.ДобавитьСтроку("Заголовок отчета");

Текст.Записать("C:\Reports\Otchet.txt", КодировкаТекста.UTF8);

Какую кодировку выбрать для Excel?

Для корректного открытия файлов в Excel на русских версиях Windows часто требуется кодировка Windows-1251, тогда как для веб-систем стандартом является UTF-8 без BOM.

Работа с двоичными данными и потоками

Когда речь заходит о картинках, архивах, исполнительных файлах или сложных документах Word, текстовые методы бесполезны. Здесь в игру вступает объект ДвоичныеДанные и работа с потоками Поток. Это низкоуровневый механизм, позволяющий читать и писать байты напрямую.

Типичный сценарий — сохранение картинки, полученной от сканера штрих-кодов, или загрузка логотипа компании в базу. Данные считываются в буфер, преобразуются в объект ДвоичныеДанные и могут быть сохранены в базу данных как поле типа ХранениеДанных или записаны на диск.

Работа с потоками требует ручного управления ресурсами. После завершения операций поток необходимо закрывать, чтобы снять блокировку с файла. В современных версиях платформы для этого удобно использовать конструкцию Попытка...Исключение с блоком Окончание, где и происходит закрытие.

Объект 1С Назначение Тип данных
ТекстовыйДокумент Работа с текстом построчно Текст
ЧтениеТекста Потоковое чтение больших файлов Текст
ДвоичныеДанные Работа с бинарными файлами Байты
ЗаписьJSON Сериализация объектов в JSON Текст/Поток
💡

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

Временные файлы и каталоги

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

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

Очистка временных файлов — задача разработчика. Система не удаляет их автоматически сразу после завершения сеанса. Хорошим тоном считается удаление созданных временных файлов в блоке Окончание или при старте следующей сессии, если они помечены специальным префиксом.

  • 📁 Используйте ПолучитьИмяВременногоФайла() для генерации уникального пути.
  • 🗑️ Всегда удаляйте временные файлы после обработки, чтобы не переполнять диск.
  • 🔒 Проверяйте права доступа к временной папке в многопользовательском режиме.
⚠️ Внимание: В режиме веб-клиента прямой доступ к файловой системе клиента ограничен браузером. Запись возможна только в специальную папку загрузок или через механизмы расширения браузера.

Обработка ошибок и исключительных ситуаций

Файловая система — среда нестабильная. Файл может быть удален другим процессом, занят антивирусом, или диск может переполниться в момент записи. Поэтому любой код, работающий с файлами, должен быть обернут в конструкцию обработки исключений.

Стандартный блок Попытка...Исключение позволяет перехватить ошибку и корректно завершить работу, уведомив пользователя. В описании исключения часто содержится код ошибки ОС, который помогает диагностировать проблему: «Нет места на диске», «Отказано в доступе» или «Файл занят».

Особое внимание стоит уделить сетевым ресурсам. При работе с UNC-путями (например, \\Server\Base\Docs) скорость доступа может быть низкой, а разрывы соединения — частыми. В таких случаях полезно реализовать механизм повторных попыток записи перед выдачей финальной ошибки.

☑️ Чек-лист безопасной работы с файлами

Выполнено: 0 / 5

FAQ: Часто задаваемые вопросы

Как получить список всех файлов в папке?

Для этого используется объект Файл в сочетании с методами поиска или перебором через ФайловыйМенеджер (в зависимости от версии платформы). Можно получить массив объектов Файл и отфильтровать их по расширению или дате.

Почему не удается удалить файл, хотя код верный?

Скорее всего, файл открыт в другой программе или захвачен процессом самой 1С (например, не закрыт поток чтения). Также проверьте права доступа пользователя ОС к данной папке.

Можно ли работать с файлами из веб-клиента?

Напрямую — нет, браузеры блокируют доступ к файловой системе в целях безопасности. Однако можно использовать механизмы загрузки/выгрузки через диалоговые окна или работать с файлами на стороне сервера 1С.

В чем разница между ПутемКФайлу и ПолнымИменем?

ПутьКФайлу возвращает путь к каталогу, где лежит файл, а ПолноеИмя — полный путь вместе с именем самого файла и расширением.