Разработка и Конфигурация · 10 мин
Как открыть текстовый файл в 1С
Как открыть текстовый файл в 1С: через меню Файл — Открыть, объекты ТекстовыйДокумент и ЧтениеТекста, работа с кодировками, типичные ошибки и проверка результата.
Текстовые файлы в 1С встречаются постоянно: это выгрузки из банков, CSV-отчёты, логи обмена, файлы настроек и макеты печатных форм. Открыть их можно двумя принципиально разными способами — интерактивно, прямо из интерфейса программы, и программно, средствами встроенного языка. Выбор зависит от задачи: разово посмотреть содержимое или загрузить данные в базу.
Интерактивный способ не требует никаких навыков программирования и доступен даже рядовому пользователю, если у него есть соответствующие права. Программный способ нужен разработчикам и администраторам: он позволяет читать файлы построчно, обрабатывать большие объёмы, указывать кодировку и встраивать чтение в регламентные операции обмена.
Ниже разобраны оба подхода, работа с кодировками, чтение на клиенте и на сервере, а также типичные ошибки, из-за которых файл либо не открывается, либо отображается «кракозябрами».
Что нужно проверить перед открытием файла
Прежде чем открывать текстовый файл, убедитесь в трёх вещах: файл действительно текстовый, у вас есть к нему доступ, и вы понимаете, в какой он кодировке. Файл с расширением .txt, .csv, .log или .xml обычно текстовый, но расширение само по себе ничего не гарантирует — за ним может скрываться двоичное содержимое.
Проверьте, что файл не заблокирован другой программой. Если файл открыт в Excel или сейчас записывается другим процессом, 1С может получить ошибку доступа либо прочитать неполные данные. Для файлов, которые приходят по обмену, полезно дождаться окончания записи — например, проверять стабильность размера файла перед чтением.
Также уточните расположение файла: локальный диск, сетевая папка или путь на сервере 1С. От этого зависит, какой код сможет до него добраться — клиентский или серверный. Сервер «не видит» диски пользователя, а клиент не видит диски сервера.
Попробовать UTF-8, windows-1251 или OEM 866
Закрыть файл в других программах, проверить права на папку
Проверить, где выполняется код — на клиенте или на сервере
Как открыть текстовый файл через меню «Файл — Открыть»
Самый простой способ посмотреть содержимое текстового файла — встроенная команда открытия. В режиме 1С:Предприятие перейдите в главное меню (кнопка с оранжевым треугольником в левом верхнем углу), выберите «Файл», затем «Открыть». В диалоге укажите тип файлов «Текстовые документы» или «Все файлы», найдите нужный файл и подтвердите открытие.
Файл откроется во встроенном текстовом редакторе 1С. Здесь его можно просматривать, редактировать и сохранять. Это удобно, когда нужно быстро проверить выгрузку, подправить файл обмена или посмотреть лог, не выходя из программы и не запуская внешний редактор.
Аналогично файл открывается в конфигураторе: меню «Файл — Открыть» доступно и там. Конфигуратор дополнительно удобен тем, что умеет работать с файлами модулей и запросов, подсвечивая синтаксис.
Как открыть файл программно через ТекстовыйДокумент
Объект ТекстовыйДокумент подходит, когда файл нужно целиком загрузить в память, отредактировать или показать пользователю. Минимальный код чтения выглядит так:
Док = Новый ТекстовыйДокумент;
Док.Прочитать("C:\Обмен\выгрузка.txt", КодировкаТекста.UTF8);
Содержимое = Док.ПолучитьТекст();
После вызова Прочитать() весь текст попадает в память, и с ним можно работать: получать строки по номеру через ПолучитьСтроку(), искать фрагменты, заменять текст. Метод Показать() открывает содержимое пользователю в отдельном окне — это удобная альтернатива меню «Файл — Открыть», когда файл нужно показать из обработки.
Ограничение способа — объём. Очень большие файлы (сотни мегабайт) целиком грузить в память не стоит: возможны замедление работы и нехватка памяти. Для таких случаев предназначен объект ЧтениеТекста.
Как читать файл построчно через ЧтениеТекста
Объект ЧтениеТекста читает файл последовательно и не загружает его целиком в память. Это основной инструмент для обработки больших выгрузок и файлов обмена:
Чтение = Новый ЧтениеТекста("C:\Обмен\данные.csv", КодировкаТекста.UTF8);
Строка = Чтение.ПрочитатьСтроку();
Пока Строка <> Неопределено Цикл
// обработка строки
Строка = Чтение.ПрочитатьСтроку();
КонецЦикла;
Чтение.Закрыть();
Признак конца файла — метод ПрочитатьСтроку() возвращает Неопределено. После завершения работы обязательно вызывайте Закрыть(): незакрытый файл остаётся занятым процессом, и другие программы не смогут его изменить или удалить.
- 1Определите, где лежит файл и где выполняется код — на клиенте или на сервере
- 2Выберите объект: ТекстовыйДокумент для небольших файлов, ЧтениеТекста для больших
- 3Укажите кодировку явно — не полагайтесь на значение по умолчанию
- 4Прочитайте данные и обработайте их, обернув код в Попытка/Исключение
- 5Закройте файл и проверьте результат на контрольном примере
Как работать с кодировками и избежать «кракозябр»
Самая частая проблема при открытии текстовых файлов — неверная кодировка. Русский текст, сохранённый в windows-1251, при чтении как UTF-8 превращается в нечитаемые символы, и наоборот. В 1С кодировка задаётся перечислением КодировкаТекста: UTF8, ANSI (соответствует системной, обычно windows-1251), OEM (DOS, 866), UTF16 и другие.
Практическое правило: файлы, созданные современными программами и веб-сервисами, чаще всего в UTF-8; выгрузки старых бухгалтерских и банковских систем — в windows-1251 или OEM 866. Если кодировка неизвестна, откройте файл в Блокноте или Notepad++ — там кодировка обычно отображается в строке состояния, и её можно подсмотреть до написания кода.
Если кодировку не указывать вовсе, платформа попытается определить её автоматически (в том числе по BOM-маркеру для UTF), но для файлов без маркера результат может быть неверным. Явное указание кодировки — простой способ исключить целый класс ошибок.
Чтение файла на клиенте и на сервере: в чём разница
В клиент-серверном режиме код выполняется в двух местах, и это критично для работы с файлами. Серверная процедура (директива &НаСервере) видит только диски и сетевые пути, доступные серверу 1С. Клиентская процедура (&НаКлиенте) видит компьютер пользователя, но в тонком и веб-клиенте доступ к файловой системе ограничен и требует расширения работы с файлами.
Типовая схема загрузки файла от пользователя в серверную базу такова: на клиенте файл помещается во временное хранилище (методы НачатьПомещениеФайла или ПоместитьФайл), затем на сервере данные извлекаются из хранилища и читаются. Для асинхронной модели используются объекты НачатьПомещениеФайла и файловые потоки.
Если обмен идёт по расписанию и файл лежит в сетевой папке, правильнее читать его целиком на сервере в фоновом задании — тогда не нужно участие пользователя, а путь должен быть задан относительно сервера, с учётом прав учётной записи, под которой работает агент сервера 1С.
Как выбрать действие
Как проверить результат и что делать при ошибках
После чтения файла не полагайтесь на отсутствие сообщений об ошибке — проверьте данные. Для загрузки в базу сверьте количество прочитанных строк с ожидаемым, убедитесь, что первая и последняя строки обработались корректно, а русские буквы отображаются нормально. Для разделённых форматов вроде CSV проверьте, что количество полей в строке совпадает со структурой.
Все операции чтения оборачивайте в конструкцию Попытка ... Исключение ... КонецПопытки и выводите ОписаниеОшибки() — это даст понятное сообщение вместо аварийного завершения. Типичные причины исключений: файл не найден, нет прав доступа, файл занят другим процессом, неверный путь.
Перед изменением исходного файла обработкой сделайте его копию. Если обработка по ошибке перезапишет или обрежет файл обмена, восстановить данные без резервной копии будет невозможно.
Как проверить результат
Совпадает с количеством строк в исходном файле
Строк меньше — возможен обрыв чтения или неверный разделитель
Символы читаемы
Кракозябры — неверная кодировка
Файл открывается другими программами
Файл заблокирован — не вызван метод Закрыть()
Частые вопросы
Чем отличается ТекстовыйДокумент от ЧтениеТекста?
ТекстовыйДокумент загружает файл целиком в память и позволяет редактировать и показывать его пользователю. ЧтениеТекста читает файл последовательно, экономит память и предназначен для обработки больших файлов, но не даёт произвольного доступа к строкам.
Почему вместо русского текста отображаются непонятные символы?
Кодировка файла не совпадает с кодировкой, указанной при чтении. Определите реальную кодировку файла в Блокноте или Notepad++ и укажите её явно: КодировкаТекста.UTF8, КодировкаТекста.ANSI или КодировкаТекста.OEM.
Как открыть файл, который выбирает пользователь, в клиент-серверной базе?
На клиенте поместите файл во временное хранилище через НачатьПомещениеФайл, передайте адрес хранилища в серверную процедуру и там извлеките данные. Напрямую читать диск пользователя с сервера нельзя.
Можно ли открыть CSV-файл как текстовый?
Да, CSV — это обычный текст с разделителями. Его можно открыть через «Файл — Открыть» или читать программно, разбирая каждую строку функцией СтрРазделить по символу-разделителю. Учтите, что разделители бывают разными: запятая, точка с запятой, табуляция.
Что делать, если файл занят другой программой?
Закройте файл в программе, которая его использует, и повторите чтение. Если файл пишется сторонним процессом по расписанию, дождитесь завершения записи — например, проверяя, что размер файла перестал меняться, и только потом читайте его.
Опасно ли открывать текстовый файл в 1С?
Само по себе чтение текстового файла безопасно — 1С не выполняет его содержимое. Осторожность нужна в двух случаях: когда обработка изменяет или удаляет файлы (делайте копии) и когда данные из файла загружаются в базу без проверки — ошибки в файле тогда попадут в учётные данные.
Что важно запомнить
Для разового просмотра файла достаточно меню «Файл — Открыть». Для загрузки данных используйте ТекстовыйДокумент (небольшие файлы) или ЧтениеТекста (большие), всегда указывайте кодировку явно, закрывайте файл после чтения и учитывайте, где выполняется код — на клиенте или на сервере.