Импорт текстового файла в 1С 8.3: выписки, таблицы и свой код

· 10 мин

Содержание

Способ загрузить txt файл в 1С зависит от того, что внутри. Выписку банка (файл kl_to_1c.txt, первая строка 1CClientBankExchange) загружают штатно: в БП 3.0 — Банк и касса → Банковские выписки, кнопка Загрузить. Таблицу с колонками (номенклатура, контрагенты, строки накладной) сначала открывают в Excel, сохраняют в xlsx и загружают командой загрузки из файла в списке справочника или в табличной части документа. Всё прочее читают кодом: объектами ЧтениеТекста или ТекстовыйДокумент.

Почти все проблемы при импорте txt связаны с двумя вещами: кодировкой (кракозябры вместо русских букв) и форматом чисел и дат. Обе решаются до загрузки, если заранее посмотреть на файл. Инструкция ниже — для платформы 8.3 и интерфейса «Такси», пути меню даны по БП 3.0.

1. Что проверить в текстовом файле до загрузки в 1С

Откройте файл в Notepad++ или другом редакторе, который показывает кодировку и скрытые символы. Обычный «Блокнот» тоже подойдёт, но хуже: он не покажет табуляцию.

Ответьте себе на пять вопросов:

  • 🔤 Кодировка. Windows-1251 (ANSI), UTF-8 с BOM, UTF-8 без BOM или DOS (CP866). В Notepad++ она видна в правом нижнем углу.
  • ✂️ Разделитель колонок. Табуляция, точка с запятой, запятая, вертикальная черта или фиксированная ширина (каждое поле занимает строго N символов).
  • 🔢 Формат чисел. 1 234,50, 1234.50 или 1234,5. Пробел-разделитель тысяч часто оказывается неразрывным, и он ломает преобразование в число.
  • 📅 Формат дат. 07.10.2026, 2026-10-07 или 20261007.
  • 🧾 Служебные строки. Заголовок, итоговая строка внизу, пустые строки в конце.

Если в колонке ИНН, КПП, артикулы или номера счетов, ведущие нули легко потерять при переносе через Excel. Их нужно сразу пометить как текст (об этом в разделе 3).

Как опознать формат по первым строкам

Что видите в начале файлаЧто этоКак загружать
1CClientBankExchange, ВерсияФормата=…, Кодировка=WindowsВыписка из клиент-банкаШтатная загрузка выписок
Строка заголовков, дальше данные через ; или ,CSV в txtЧерез Excel → xlsx → загрузка из файла
Колонки ровно выровнены пробеламиФиксированная ширинаЧерез Excel (мастер с фиксированной шириной) или кодом
Произвольный текст, теги, пары ключ=значениеСобственный форматТолько кодом

2. Банковская выписка в txt: штатная загрузка

Это самый частый случай. Банк выгружает файл в формате обмена «1С:Предприятие — Клиент банка». Его 1С читает без всяких обработок.

Порядок в БП 3.0:

  1. Выгрузите выписку из интернет-банка в формате для 1С. Файл обычно называется kl_to_1c.txt или похоже.
  2. Откройте Банк и касса → Банковские выписки.
  3. Нажмите Загрузить. Откроется форма обмена с банком.
  4. Выберите организацию, банковский счёт и укажите путь к файлу.
  5. Нажмите загрузку. Программа покажет список документов, которые создаст: списания и поступления на расчётный счёт.
  6. Проверьте строки, где не найден контрагент или договор, и завершите загрузку.

В УТ 11 и КА 2 выписки загружают из раздела казначейства или финансов, логика та же: список выписок → команда загрузки → выбор файла.

Что важно в заголовке выписки

Строка Кодировка=Windows или Кодировка=DOS в начале файла говорит программе, как его читать. Если банк выгрузил файл в одной кодировке, а написал другую, вместо назначений платежей будут нечитаемые символы.

Проверьте и счёт. В файле есть строка РасчСчет=…. Если такой счёт не заведён в карточке организации в 1С, загрузка его не примет. Сначала добавьте банковский счёт организации, потом повторите загрузку.

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

3. Табличные данные из txt: перенос через Excel

Для справочников и табличных частей в типовых конфигурациях есть загрузка из файла. Она работает с табличными форматами (xlsx, xls, ods, mxl), а не с произвольным текстом. Поэтому txt сначала превращают в таблицу.

Шаг 1. Откройте txt в Excel правильно

Не открывайте файл двойным щелчком: Excel сам угадает кодировку и разделитель и часто ошибается.

  1. Создайте пустую книгу.
  2. На вкладке Данные выберите импорт из текста/CSV.
  3. Укажите кодировку: 1251: Кириллица (Windows) или 65001: Юникод (UTF-8). Смотрите на предпросмотр: русские буквы должны читаться.
  4. Укажите разделитель или фиксированную ширину.
  5. Для колонок с ИНН, кодами и артикулами задайте тип «Текст». Иначе 0012345 превратится в 12345.
  6. Загрузите данные на лист и сохраните книгу как .xlsx.

Шаг 2. Загрузите файл в 1С

Для справочника (например, номенклатуры или контрагентов в БП 3.0):

  1. Откройте список справочника.
  2. Найдите в командной панели команду загрузки из файла (кнопка Загрузить или пункт в меню Ещё).
  3. Выберите xlsx-файл или вставьте данные из буфера обмена в таблицу формы.
  4. Сопоставьте колонки файла с реквизитами 1С.
  5. Посмотрите результат сопоставления: какие строки будут созданы как новые, какие найдены среди существующих.
  6. Подтвердите загрузку.

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

Шаг 3. Настройте соответствие колонок

Здесь решается, создаст ли 1С дубли. Главное поле — то, по которому программа ищет уже существующий элемент.

Сопоставление полей
Артикул→Номенклатура.Артикул (поле поиска)
Наименование→Номенклатура.Наименование
Ед. изм.→Единица измерения (справочник классификатора)
Кол-во→Количество
Цена→Цена
ИНН поставщика→Контрагент.ИНН (поле поиска)

Правила, которые спасают от дублей:

  • ✅ Ищите номенклатуру по артикулу или штрихкоду, а не по наименованию. «Бумага А4» и «Бумага А4» с двумя пробелами — для 1С разные строки.
  • ✅ Контрагентов ищите по ИНН. Для ИП и юрлиц с одинаковыми названиями это единственный надёжный ключ.
  • ✅ Единицы измерения проверьте заранее: «шт», «шт.» и «штука» должны сводиться к одной записи классификатора.

Если загрузки из файла в конфигурации нет

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

4. Как загрузить txt в 1С кодом: чтение файла построчно

Когда формат нестандартный или загрузку нужно повторять каждый день, проще написать короткий код. Его запускают во внешней обработке или в обработке выполнения произвольного кода (консоли кода).

Ниже пример: файл в Windows-1251, разделитель — точка с запятой, первая строка — заголовок. Колонки: дата, ИНН, сумма, комментарий.

ИмяФайла = "C:\Обмен\payments.txt";
Чтение = Новый ЧтениеТекста(ИмяФайла, "windows-1251");

Строка = Чтение.ПрочитатьСтроку(); // пропускаем заголовок
НомерСтроки = 1;

Строка = Чтение.ПрочитатьСтроку();
Пока Строка <> Неопределено Цикл
	НомерСтроки = НомерСтроки + 1;

	Если ПустаяСтрока(Строка) Тогда
		Строка = Чтение.ПрочитатьСтроку();
		Продолжить;
	КонецЕсли;

	Поля = СтрРазделить(Строка, ";", Истина);
	Если Поля.Количество() < 4 Тогда
		Сообщить(СтрШаблон("Строка %1: ожидалось 4 поля, найдено %2",
			Формат(НомерСтроки, "ЧГ=0"), Поля.Количество()));
		Строка = Чтение.ПрочитатьСтроку();
		Продолжить;
	КонецЕсли;

	// дата вида 07.10.2026 -> 20261007
	ТекстДаты = СокрЛП(Поля[0]);
	ДатаПлатежа = Дата(Сред(ТекстДаты, 7, 4) + Сред(ТекстДаты, 4, 2) + Лев(ТекстДаты, 2));

	ИНН = СокрЛП(Поля[1]);

	// сумма вида "1 234,50": убираем пробелы и неразрывные пробелы, запятую меняем на точку
	ТекстСуммы = СтрЗаменить(СокрЛП(Поля[2]), " ", "");
	ТекстСуммы = СтрЗаменить(ТекстСуммы, Символы.НПП, "");
	ТекстСуммы = СтрЗаменить(ТекстСуммы, ",", ".");
	Сумма = Число(ТекстСуммы);

	Комментарий = СокрЛП(Поля[3]);

	Сообщить(СтрШаблон("%1 | %2 | %3 | %4",
		Формат(ДатаПлатежа, "ДФ=dd.MM.yyyy"), ИНН, Формат(Сумма, "ЧДЦ=2"), Комментарий));

	Строка = Чтение.ПрочитатьСтроку();
КонецЦикла;

Чтение.Закрыть();

Что здесь важно:

  • ПрочитатьСтроку() возвращает Неопределено, когда файл закончился. На этом построен цикл.
  • Третий параметр СтрРазделить = Истина сохраняет пустые поля. Без него строка 07.10.2026;;500; даст не 4 поля, а 2, и колонки съедут.
  • Номер строки в сообщении помогает быстро найти битую запись в файле.
  • Вместо Сообщить в рабочей обработке пишут создание документа или элемента справочника.

Табуляция и фиксированная ширина

Для файла с табуляцией замените ";" на Символы.Таб. Для фиксированной ширины поля режут функцией Сред: например, Сред(Строка, 1, 10) — первые 10 символов, Сред(Строка, 11, 12) — следующие 12.

Альтернатива: ТекстовыйДокумент

Если файл небольшой, его удобно прочитать целиком:

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

Для файлов на сотни мегабайт лучше ЧтениеТекста: оно не держит весь текст в памяти.

Путь C:\Обмен\… должен быть доступен той стороне, где выполняется код. В клиент-серверной базе код на сервере видит диск сервера, а не компьютера пользователя. Если файл лежит у пользователя, его сначала передают на сервер (в управляемом приложении — через помещение файла во временное хранилище) или читают на клиенте.

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

5. Кодировка и спецсимволы: как убрать кракозябры

Кракозябры значат одно: файл прочитали не в той кодировке, в которой его записали.

Что видитеВероятная причинаЧто сделать
Платеж вместо «Платеж»Файл в UTF-8, читали как Windows-1251Указать КодировкаТекста.UTF8 или выбрать 65001 в Excel
Ïëàòåæ или знаки вопросаФайл в Windows-1251, читали как UTF-8Указать "windows-1251" или КодировкаТекста.ANSI
Псевдографика, ЏҐаҐФайл в DOS (CP866)Указать "cp866" или пересохранить в 1251
Первая колонка первой строки не находитсяНевидимый BOM в начале UTF-8Читать как UTF-8 или сохранить файл без BOM

Проще всего привести файл к одной кодировке до загрузки. В Notepad++ это меню Кодировки → Преобразовать в …. Обратите внимание: нужно именно «Преобразовать», а не просто «Кодировать в»: второе меняет только способ отображения.

Спецсимволы внутри данных

  • 🔸 Разделитель внутри текста. Наименование ООО «Ромашка; филиал» при разделителе ; разобьётся на две колонки. Нормальный CSV берёт такие поля в кавычки. Excel это понимает, а простой СтрРазделить — нет. Для такого файла либо грузите через Excel, либо разбирайте строку посимвольно с учётом кавычек.
  • 🔸 Неразрывный пробел. Выглядит как обычный, но Число() на нём падает. В коде выше он убран через Символы.НПП.
  • 🔸 Перевод строки внутри поля. Многострочный комментарий рвёт запись на две строки файла. Признак — строки, где полей меньше, чем должно быть.
  • 🔸 Кавычки-ёлочки и длинное тире. В кодировке DOS их нет, при конвертации они превращаются в знаки вопроса.

6. Ошибки при загрузке txt и что с ними делать

Диагностика: выберите симптом

7. Частые вопросы о загрузке текстовых файлов

Можно ли открыть txt прямо в 1С без загрузки?
Да, через Файл → Открыть 1С покажет текстовый файл в своём окне. Но это просмотр: документы и элементы справочников из него не создаются.
Почему банк выгружает выписку в кодировке DOS?
Это наследие старых клиент-банков. В настройках выгрузки интернет-банка обычно можно выбрать Windows. Если выбора нет, 1С прочитает DOS-файл, если в его заголовке правильно указано Кодировка=DOS.
Как загружать один и тот же формат каждый день, не настраивая колонки заново?
Оформите разбор кодом во внешней обработке и подключите её к нужному разделу через дополнительные обработки. Сопоставление колонок будет зашито в код.
Что делать, если в txt больше 100 тысяч строк?
Не открывайте его в Excel целиком: на таком объёме он работает медленно. Читайте файл объектом ЧтениеТекста и записывайте объекты порциями, например по 1000 строк в одной транзакции.
Можно ли загрузить txt в 1С:Фреш или другую облачную базу?
Штатная загрузка выписок и загрузка из xlsx работают и в облаке, файл выбирается с компьютера пользователя. Код с путём вида C:\… в облаке не сработает: сервер не видит ваш диск.