К статье
Практический материал

Быстрый старт · 10 мин

Как открыть текстовый документ в 1С

Как открыть текстовый документ в 1С: через меню Файл, кодом на встроенном языке, чтение и запись TXT-файлов. Способы, ошибки и решения.

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

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

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

Как открыть текстовый файл через интерфейс 1С

Самый простой сценарий — открыть TXT-файл прямо из окна программы. В большинстве конфигураций (Бухгалтерия, Управление торговлей, Зарплата и управление персоналом) доступно стандартное меню «Файл» в левом верхнем углу главного окна. Выберите пункт «Файл — Открыть», в диалоге укажите тип файла «Текстовые документы (*.txt)» либо переключите фильтр на «Все файлы», найдите нужный файл и подтвердите открытие.

Файл откроется во встроенном редакторе текстовых документов. Это полноценный просмотрщик с возможностью редактирования: можно изменить содержимое и сохранить его через «Файл — Сохранить» или «Сохранить как». Учтите, что объёмные файлы (сотни мегабайт) могут открываться медленно — встроенный редактор не рассчитан на большие объёмы.

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

Открытие файла через интерфейс
  1. 1
    Откройте меню «Файл» в главном окне 1С.
  2. 2
    Выберите пункт «Открыть» (Ctrl+O).
  3. 3
    В диалоге выберите тип «Текстовые документы» или «Все файлы».
  4. 4
    Укажите файл и нажмите «Открыть».
  5. 5
    Проверьте, что текст отображается без искажений; при «кракозябрах» разберитесь с кодировкой.

Открытие текстового документа в конфигураторе

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

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

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

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

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

bsl
ЧтениеТекста = Новый ЧтениеТекста("C:\Обмен\vygruzka.txt", КодировкаТекста.UTF8);
Строка = ЧтениеТекста.ПрочитатьСтроку();
Пока Строка <> Неопределено Цикл
    // обработка строки
    Строка = ЧтениеТекста.ПрочитатьСтроку();
КонецЦикла;
ЧтениеТекста.Закрыть();

Альтернатива — объект ТекстовыйДокумент с методом «Прочитать»:

bsl
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать("C:\Обмен\vygruzka.txt", КодировкаТекста.UTF8);
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
    Строка = Текст.ПолучитьСтроку(НомерСтроки);
КонецЦикла;

Перед чтением полезно проверить существование файла, иначе код завершится ошибкой. Для этого служит объект «Файл» с методом «Существует». Также помните: в клиент-серверном режиме код на сервере видит файловую систему сервера, а не компьютера пользователя. Путь «C:\Обмен\...» будет искаться на сервере — это одна из самых частых причин «не открывается файл».

Запись и сохранение текстового документа

Обратная задача — создать текстовый файл из 1С — решается симметрично. Объект «ЗаписьТекста» пишет построчно, а ТекстовыйДокумент сохраняется методом «Записать» с указанием пути и кодировки. В диалоговых методах можно дать пользователю выбрать путь сохранения через «ДиалогВыбораФайла».

При записи важно явно указывать кодировку, особенно если файл заберёт сторонняя система: банковские выгрузки часто требуют ANSI (Windows-1251), а современные API — UTF-8. Если кодировку не указать, платформа использует значение по умолчанию, которое может не совпасть с ожиданиями принимающей стороны.

Кодировки: почему текст открывается «кракозябрами»

Кодировка — это таблица соответствия байтов символам. Один и тот же файл выглядит нормально в UTF-8 и превращается в набор нечитаемых знаков при открытии в Windows-1251, и наоборот. В 1С кодировка задаётся значением перечисления «КодировкаТекста»: UTF8, ANSI, OEM, UTF16 и другие.

Практическое правило: файлы, созданные в старых программах и банковских клиентах под Windows, чаще всего в ANSI (Windows-1251); файлы из Linux-систем, веб-сервисов и современных обменников — в UTF-8. Если при чтении русский текст искажён, попробуйте сменить кодировку и прочитать файл заново — это безопасно, содержимое файла на диске не меняется.

Быстрый способ определить кодировку без кода — открыть файл в редакторе Notepad++: кодировка отображается в строке состояния. Зная её, укажите соответствующее значение в параметрах чтения в 1С.

Маршрут решения

Как выбрать кодировку

Файл из клиент-банка или старой Windows-программыИспользуйте КодировкаТекста.ANSI (Windows-1251)
Файл из веб-сервиса, API или Linux-системыИспользуйте КодировкаТекста.UTF8
Русские буквы читаются как иероглифыПрочитайте файл заново с другой кодировкой — исходный файл не пострадает
Кодировка неизвестнаОткройте файл в Notepad++ и посмотрите кодировку в строке состояния

Типичные ошибки и их устранение

Большинство проблем при открытии текстовых файлов в 1С сводится к нескольким повторяющимся ситуациям. Разбор каждой экономит время на диагностике.

Типичные ошибки
01
Неверный путь в клиент-серверном режиме: код на сервере ищет файл на диске сервера, а не на компьютере пользователя. Решение — передавать файл с клиента на сервер через временное хранилище.
02
Чтение без указания кодировки: текст искажается. Решение — всегда задавать КодировкаТекста явно.
03
Отсутствие проверки существования файла: код падает с ошибкой. Решение — проверять через Новый Файл(Путь).Существует().
04
Незакрытый объект чтения/записи: файл остаётся заблокированным. Решение — вызывать Закрыть(), желательно в конструкции Попытка...Исключение.
05
Нет прав на каталог: у учётной записи, под которой работает сервер 1С, нет доступа к сетевой папке. Решение — выдать права или использовать локальный каталог сервера.

Отдельно стоит сказать про файлы, открытые другой программой. Если текстовый файл занят, например, открыт в Excel с монопольным доступом, 1С может не смочь его прочитать или записать. Закройте файл в стороннем приложении и повторите операцию.

Проверка результата и выбор подходящего способа

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

Контрольные точки

Как проверить результат

Отображение текста
Норма

Русский текст читаем, структура строк сохранена

Тревожный признак

Кракозябры, квадраты вместо символов — неверная кодировка

Количество строк
Норма

Совпадает с числом строк в исходном файле

Тревожный признак

Строк меньше — возможен обрыв чтения или неверный разделитель

Доступность файла после операции
Норма

Файл можно открыть и изменить в другой программе

Тревожный признак

Файл заблокирован — объект чтения/записи не закрыт

Выбор способа зависит от задачи. Разовый просмотр — интерфейсное меню «Файл — Открыть». Регулярный обмен — программное чтение с проверками и обработкой ошибок. Хранение неизменяемых шаблонов — текстовый макет в конфигурации.

Сравнение способов

Меню «Файл — Открыть»

Подходит для разового просмотра и ручного редактирования. Не требует кода, но не автоматизируется.

ЧтениеТекста

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

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

Удобен для небольших файлов, когда нужен доступ к произвольной строке. Загружает файл целиком в память.

Макет в конфигурации

Для шаблонов, которые не должен менять пользователь. Не подходит для файлов, приходящих извне.

Итог

Что важно запомнить

Для ручного просмотра используйте «Файл — Открыть», для автоматизации — ЧтениеТекста или ТекстовыйДокумент с явным указанием кодировки. Проверяйте существование файла, закрывайте объекты чтения/записи и помните, что в клиент-серверном режиме пути разрешаются на стороне сервера.

Частые вопросы

Почему 1С не видит файл, хотя он точно лежит в указанной папке?

Чаще всего код выполняется на сервере, а путь указывает на диск вашего компьютера. Проверьте, где исполняется код (директива &НаСервере), и либо положите файл в доступный серверу каталог, либо передавайте его с клиента через временное хранилище. Также проверьте права учётной записи сервера 1С на папку.

Как открыть CSV-файл в 1С?

CSV — это обычный текстовый файл с разделителями. Откройте его тем же ЧтениеТекста, читайте построчно и разбивайте каждую строку функцией СтрРазделить по символу-разделителю (точка с запятой или запятая). Учтите, что Excel часто сохраняет CSV в кодировке ANSI.

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

Да, через механизм «НачатьПомещениеФайла» или диалог выбора файла содержимое передаётся на сервер в виде двоичных данных или строки, после чего его можно обработать без постоянного хранения на диске. Файл при этом временно размещается во временном хранилище.

Что делать, если файл очень большой и 1С «зависает» при открытии?

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

Как узнать, в какой кодировке записан файл, не открывая его в 1С?

Откройте файл в Notepad++ — кодировка показана в правой части строки состояния. Затем укажите соответствующее значение КодировкаТекста при чтении в 1С. Если редактора нет, переберите наиболее вероятные варианты: UTF-8 и ANSI покрывают подавляющее большинство случаев.

Можно ли открыть текстовый документ из макета конфигурации программно?

Да. Используйте ПолучитьОбщийМакет("ИмяМакета") — для макета типа «Текстовый документ» метод вернёт объект ТекстовыйДокумент, из которого можно читать строки или получить текст целиком методом ПолучитьТекст().