Импорт текстовых файлов в 1С 8.3: выписки, списки, таблицы с разделителями
Содержание
Способ загрузки 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С не нашла контрагента или договор, программа подсветит.
- Нажмите
Загрузить. Будут созданы документы «Поступление на расчётный счёт» и «Списание с расчётного счёта».
В заголовке файла есть строка Кодировка=Windows или Кодировка=DOS. По ней 1С понимает, как читать русский текст. Если банк выгрузил файл в DOS-кодировке, а в заголовке указано Windows (или наоборот), вместо назначений платежа появятся непонятные символы.
Если в файле указан расчётный счёт, которого нет в карточке организации, выписка не загрузится. Сначала добавьте банковский счёт в Справочники → Организации → Банковские счета, затем повторите загрузку.
Повторная загрузка того же файла не задваивает платежи, если документы уже есть: 1С сопоставляет их по номеру, дате, сумме и счёту. Но если вы удалили документы с пометкой и загружаете снова, проверьте список перед записью.
Перевод txt в таблицу и стандартная загрузка из файла
Для справочников и табличных частей документов в 1С:Бухгалтерии 3.0, ЗУП 3.1 и УТ 11 есть встроенная загрузка из файла. Она есть, например, в списке номенклатуры и в табличной части «Товары» документа поступления. Кнопка называется Загрузить. Форма принимает табличные файлы (xlsx, xls, ods, mxl) и умеет принимать данные, вставленные из буфера обмена.
Обычный txt в эту форму напрямую не подходит. Надёжный путь — перевести его в таблицу.
Шаг 1. Откройте txt в Excel с мастером импорта
- В Excel откройте
Данные → Из текстового/CSV-файла. - Выберите txt-файл.
- В поле «Источник файла» укажите кодировку:
1251: кириллица (Windows),866: кириллица (DOS)или65001: Юникод (UTF-8). Подберите ту, при которой текст в окне предпросмотра читается. - Укажите разделитель. Для файла с фиксированной шириной выберите режим «Фиксированная ширина» и расставьте границы колонок.
- Колонкам с артикулами, ИНН и штрихкодами задайте тип «Текстовый». Иначе Excel срежет ведущие нули и превратит длинный штрихкод в
4,6E+12. - Нажмите
Загрузитьи сохраните результат в xlsx.
В LibreOffice Calc всё проще: при открытии txt сразу появляется окно «Импорт текста», где задаются кодировка, разделители и тип колонок.
Шаг 2. Загрузите таблицу в 1С
- Откройте нужный список, например
Справочники → Номенклатура, или документ с табличной частью. - Нажмите
Загрузить. - Есть два варианта: выбрать сохранённый xlsx или скопировать диапазон в Excel (
Ctrl+C) и вставить в таблицу формы (Ctrl+V). - Перейдите к сопоставлению колонок (следующий раздел).
- Проверьте результат и запишите данные.
Вставка через буфер обмена удобна, когда строк немного, до нескольких сотен. Для тысяч строк надёжнее загружать файл: при вставке легко пропустить часть диапазона.
Если в вашей конфигурации нет кнопки Загрузить для нужного объекта (например, для нетипового справочника), используйте внешнюю обработку
загрузки из табличного документа или напишите свою (раздел про программную загрузку).
Сопоставление колонок файла с полями 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-8 | Windows-1251 | КодировкаТекста.UTF8 |
╧ЁштхЄ | Windows-1251 | DOS (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.