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

· 10 мин

Содержание

Способ загрузки txt-файла в 1С зависит от того, что внутри файла. Банковскую выписку kl_to_1c.txt загружают штатно: в 1С:Бухгалтерии 3.0 это Банк и касса → Банковские выписки → Загрузить. Список товаров, контрагентов или цен в виде строк с разделителями сначала превращают в таблицу (Excel или LibreOffice), а затем вставляют через кнопку Загрузить в нужном списке или табличной части документа. Нестандартные файлы и регулярный импорт делают внешней обработкой на встроенном языке.

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

Что внутри вашего txt: подготовка файла к загрузке в 1С

Откройте файл в Блокноте или прямо в 1С: Файл → Открыть. Платформа покажет txt в своём текстовом редакторе, и вы сразу увидите, читается ли русский текст.

Дальше определите тип файла по первым строкам.

Что видно в начале файлаЧто этоКак загружать
1CClientBankExchange, ВерсияФормата=, СекцияДокумент=Выписка из клиент-банкаШтатная загрузка выписок
Строки вида А-102;Болт М8;шт;12,50Таблица с разделителем «;»Через Excel или обработкой
Колонки, разделённые табуляциейТаблица с разделителем Tab (выгрузка из других программ)Через Excel или обработкой
Колонки выровнены пробелами, без разделителяФайл с фиксированной шириной полейМастер импорта Excel или обработка
<?xml в первой строкеЭто XML, просто с расширением txtЗагрузка XML, а не txt

Перед загрузкой проверьте пять вещей:

  • 🔹 Разделитель. Точка с запятой, запятая, табуляция или вертикальная черта. Если разделитель встречается внутри значений (например, запятая в названии «ООО Ромашка, филиал»), поля нужно брать в кавычки или менять разделитель.
  • 🔹 Строка заголовков. Есть ли первая строка с названиями колонок. При загрузке её пропускают.
  • 🔹 Кодировка. UTF-8, Windows-1251 или DOS (CP866). Подробнее ниже.
  • 🔹 Формат чисел и дат. Десятичная запятая или точка, пробелы между разрядами, дата 07.10.2026 или 2026-10-07.
  • 🔹 Ключ для поиска. По какому полю 1С будет искать существующие элементы: артикул, ИНН, штрихкод, код. Наименование — плохой ключ, в нём бывают лишние пробелы и опечатки.

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

Загрузка txt-выписки банка в 1С:Бухгалтерию

Самый частый txt в бухгалтерии — выписка из клиент-банка. Обычно файл называется kl_to_1c.txt. Это текстовый формат обмена «1С — Клиент банка»: ключи вида Ключ=Значение, секции документов и остатков.

Порядок загрузки в 1С:Бухгалтерии 3.0:

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

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

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

Повторная загрузка того же файла не задваивает платежи, если документы уже есть: 1С сопоставляет их по номеру, дате, сумме и счёту. Но если вы удалили документы с пометкой и загружаете снова, проверьте список перед записью.

Перевод txt в таблицу и стандартная загрузка из файла

Для справочников и табличных частей документов в 1С:Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 есть встроенная загрузка из файла. Она есть, например, в списке номенклатуры и в табличной части «Товары» документа поступления. Кнопка называется Загрузить. Форма принимает табличные файлы (xlsx, xls, ods, mxl) и умеет принимать данные, вставленные из буфера обмена.

Обычный txt в эту форму напрямую не подходит. Надёжный путь — перевести его в таблицу.

Шаг 1. Откройте txt в Excel с мастером импорта

  1. В Excel откройте Данные → Из текстового/CSV-файла.
  2. Выберите txt-файл.
  3. В поле «Источник файла» укажите кодировку: 1251: кириллица (Windows), 866: кириллица (DOS) или 65001: Юникод (UTF-8). Подберите ту, при которой текст в окне предпросмотра читается.
  4. Укажите разделитель. Для файла с фиксированной шириной выберите режим «Фиксированная ширина» и расставьте границы колонок.
  5. Колонкам с артикулами, ИНН и штрихкодами задайте тип «Текстовый». Иначе Excel срежет ведущие нули и превратит длинный штрихкод в 4,6E+12.
  6. Нажмите Загрузить и сохраните результат в xlsx.

В LibreOffice Calc всё проще: при открытии txt сразу появляется окно «Импорт текста», где задаются кодировка, разделители и тип колонок.

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

  1. Откройте нужный список, например Справочники → Номенклатура, или документ с табличной частью.
  2. Нажмите Загрузить.
  3. Есть два варианта: выбрать сохранённый xlsx или скопировать диапазон в Excel (Ctrl+C) и вставить в таблицу формы (Ctrl+V).
  4. Перейдите к сопоставлению колонок (следующий раздел).
  5. Проверьте результат и запишите данные.

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

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

Сопоставление колонок файла с полями 1С

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

Пример соответствия для загрузки номенклатуры:

Сопоставление полей
Артикул→Артикул (по нему ищется существующий элемент)
Наименование→Наименование
Ед. изм.→Единица измерения (классификатор единиц)
Ставка НДС→Ставка НДС
Цена→Цена (при загрузке в документ или установке цен)
Штрихкод→Штрихкод (если ведётся)

На что смотреть при сопоставлении:

  • 🔎 Поле поиска. Укажите, по какому реквизиту 1С ищет существующие элементы. Если поиск не задан или ключ не совпал, вместо обновления будут созданы дубли.
  • 📐 Ссылочные поля. Единица измерения, ставка НДС, контрагент — это ссылки на справочники. Текст из файла должен совпадать с тем, как значение записано в 1С: «шт» и «шт.» для программы разные строки.
  • 🔢 Числа. Сумма 1 250,00 с пробелом-разделителем разрядов может не распознаться. Уберите пробелы ещё в Excel, задав колонке числовой формат.
  • 📅 Даты. Приводите к виду ДД.ММ.ГГГГ.

После сопоставления форма показывает, какие строки будут созданы, какие обновлены, а какие не распознаны. Нераспознанные строки разбирайте до записи, а не после.

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

Программная загрузка txt-файла через внешнюю обработку

Если txt приходит регулярно (прайс поставщика, выгрузка из складской программы, данные терминала сбора), удобнее один раз написать обработку. Её создают в Конфигураторе: Файл → Новый → Внешняя обработка, добавляют форму с командой «Загрузить» и сохраняют как .epf. В пользовательском режиме обработку открывают через Файл → Открыть. Для этого у пользователя должно быть право на интерактивное открытие внешних обработок.

Ниже — рабочий пример. Он запрашивает файл у пользователя, передаёт его на сервер, читает построчно в нужной кодировке и раскладывает строки формата Артикул;Наименование;Цена в таблицу значений. Строки с ошибками попадают в сообщения с номером строки.

&НаКлиенте
Процедура Загрузить(Команда)
	Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
	НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
	Если Не Результат Тогда
		Возврат;
	КонецЕсли;
	ЗагрузитьНаСервере(Адрес);
КонецПроцедуры

&НаСервере
Процедура ЗагрузитьНаСервере(Адрес)

	ИмяФайла = ПолучитьИмяВременногоФайла("txt");
	ПолучитьИзВременногоХранилища(Адрес).Записать(ИмяФайла);

	Таблица = Новый ТаблицаЗначений;
	Таблица.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка"));
	Таблица.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
	Таблица.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));

	Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.ANSI);
	НомерСтроки = 0;
	Строка = Чтение.ПрочитатьСтроку();

	Пока Строка <> Неопределено Цикл
		НомерСтроки = НомерСтроки + 1;
		Если НомерСтроки > 1 И ЗначениеЗаполнено(СокрЛП(Строка)) Тогда // первая строка — заголовки
			Поля = СтрРазделить(Строка, ";", Истина);
			Если Поля.Количество() < 3 Тогда
				Сообщить(СтрШаблон("Строка %1: ожидалось 3 поля, найдено %2",
					Формат(НомерСтроки, "ЧГ=0"), Поля.Количество()));
			Иначе
				ТекстЦены = СтрЗаменить(СтрЗаменить(СокрЛП(Поля[2]), " ", ""), ",", ".");
				ТекстЦены = СтрЗаменить(ТекстЦены, Символы.НПП, "");
				Попытка
					Цена = Число(ТекстЦены);
					НоваяСтрока = Таблица.Добавить();
					НоваяСтрока.Артикул = СокрЛП(Поля[0]);
					НоваяСтрока.Наименование = СокрЛП(Поля[1]);
					НоваяСтрока.Цена = Цена;
				Исключение
					Сообщить(СтрШаблон("Строка %1: цена «%2» не является числом",
						Формат(НомерСтроки, "ЧГ=0"), Поля[2]));
				КонецПопытки;
			КонецЕсли;
		КонецЕсли;
		Строка = Чтение.ПрочитатьСтроку();
	КонецЦикла;

	Чтение.Закрыть();
	УдалитьФайлы(ИмяФайла);

	Сообщить(СтрШаблон("Прочитано строк с данными: %1", Формат(Таблица.Количество(), "ЧГ=0")));

КонецПроцедуры

Как доработать пример под свою задачу:

  • 📄 Другой разделитель. Для табуляции вместо ";" передайте Символы.Таб.
  • 📏 Фиксированная ширина. Вместо СтрРазделить вырезайте поля функцией Сред(Строка, Начало, Длина).
  • 🔗 Запись в базу. По артикулу найдите элемент: Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул). Если вернулась пустая ссылка, создайте элемент через СоздатьЭлемент(), иначе получите объект через ПолучитьОбъект() и обновите реквизиты.
  • 🧮 Даты. Строку 07.10.2026 переводите в дату так: Дата(Сред(С, 7, 4) + Сред(С, 4, 2) + Сред(С, 1, 2)).

СтрРазделить и СтрШаблон доступны с платформы 8.3.6. Если загрузка большая (десятки тысяч строк), записывайте объекты пакетами в транзакциях, а не по одному: так быстрее и при сбое не останется половины данных.

Отлаживайте обработку на копии базы. Ошибка в поиске по ключу создаст дубли во всех строках файла сразу.

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

Неверная кодировка — главная причина неудачной загрузки txt в 1С. По виду «мусора» можно понять, что произошло.

Что видно вместо «Привет»Файл в кодировкеПрочитан какЧто указать при чтении
ПриветUTF-8Windows-1251КодировкаТекста.UTF8
╧ЁштхЄWindows-1251DOS (CP866)КодировкаТекста.ANSI
Привет читается, но первое поле не находитсяUTF-8 с меткой BOM—1С метку распознаёт; в других программах её можно убрать при сохранении
?????любаяданные уже испорченывзять исходный файл заново

Значения кодировок для ЧтениеТекста:

  • КодировкаТекста.ANSI — кодовая страница Windows, в русской системе это Windows-1251.
  • КодировкаТекста.OEM — DOS-кодировка, CP866. В ней часто выгружают старые программы и кассовое ПО.
  • КодировкаТекста.UTF8 — современный стандарт, в нём сохраняют большинство веб-сервисов.
  • Вместо константы можно передать строку, например "windows-1251" или "cp866".

Проблемные символы внутри данных:

  • 🧷 Неразрывный пробел (Символы.НПП). Выглядит как обычный пробел, но СокрЛП его не всегда убирает, а Число() на нём падает. Заменяйте явно, как в примере выше.
  • 🧷 Кавычки вокруг полей. CSV-подобные файлы берут значения в двойные кавычки. Уберите внешние кавычки после разделения строки, а удвоенные "" внутри значения замените на одну кавычку.
  • 🧷 Переносы строк внутри поля. Если в назначении платежа или комментарии есть перенос, одна запись займёт две строки файла. Простое построчное чтение её разорвёт. Такие файлы лучше переводить в таблицу через Excel, который понимает поля в кавычках.
  • 🧷 Символ табуляции в тексте. Если разделитель — Tab, а в наименованиях встречается табуляция, колонки «поедут».

Не уверены в кодировке — откройте файл в Блокноте и посмотрите строку состояния внизу окна: там указано UTF-8 или ANSI. Для DOS-файлов Блокнот покажет нечитаемый текст при отметке ANSI.

Ошибки при импорте txt и как их исправить

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

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

Можно ли загрузить txt в 1С без Excel?
Да. Подойдёт LibreOffice Calc: он бесплатный и открывает txt с выбором кодировки и разделителя. Второй вариант — внешняя обработка, которая читает файл напрямую.
Чем txt отличается от csv при загрузке?
По сути ничем: csv — тот же текстовый файл с разделителями. Разница только в расширении и в том, что csv обычно берёт значения в кавычки.
Почему 1С не видит мой txt в окне выбора файла?
Форма загрузки фильтрует файлы по расширению. Выберите в фильтре «Все файлы» или переведите txt в xlsx.
Как загрузить txt в 1С, если файл весит сотни мегабайт?
Читайте его построчно через ЧтениеТекста, как в примере, и записывайте данные пакетами. Целиком в память или в Excel такой файл грузить не стоит.
Нужна ли ЭЦП или особая лицензия для загрузки выписки из txt?
Нет. Загрузка выписки из файла — штатная функция бухгалтерской программы. Подпись нужна для прямого обмена с банком, а не для загрузки файла.