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

· 10 мин

Содержание

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

Выбор зависит от того, что в файле и как часто он приходит. Разовый прайс на 300 позиций — помощник. Ежедневный файл остатков со склада — обработка по расписанию. Ниже по порядку: подготовка, загрузка, кодировки, ошибки и автоматизация.

СпособКогда выбиратьЧто умеетОграничения
Помощник «Загрузка данных из файла»Разовая загрузка справочника или строк документаСопоставляет колонки, ищет существующие элементы, создаёт новыеТолько объекты, где есть команда Загрузить
Обмен с клиент-банкомВыписки и платёжкиСоздаёт документы списания и поступленияТолько формат 1CClientBankExchange
Внешняя обработкаРегулярный файл своей структурыЛюбая логика, расписание, протоколНужен программист и проверка на копии базы

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

Половина проблем при импорте появляется ещё до 1С: в самом файле. Перед загрузкой откройте его в Блокноте или Notepad++ и проверьте пять вещей.

  • 📄 Одна строка — одна запись. Без объединённых ячеек, итогов внизу и пустых строк-разделителей между группами.
  • 🏷️ Первая строка — заголовки колонок. «Артикул», «Наименование», «Цена», «Ед. изм.» — так помощнику проще сопоставить поля.
  • 🔣 Один разделитель во всём файле. Чаще всего точка с запятой ; или табуляция. Запятая опасна: она же стоит в дробных числах и в названиях.
  • 🔢 Числа без лишнего. Без пробелов-разделителей тысяч, без «руб.», без формул. Дробная часть — одним знаком во всём файле.
  • 🧾 Коды как текст. ИНН, КПП, артикулы и штрихкоды с ведущими нулями не должны превращаться в числа.

Если CSV открыть и сохранить в Excel двойным щелчком, Excel может отрезать ведущие нули у артикула 007345, превратить 1-12 в дату, а штрихкод 4601234567890 записать как 4,60123E+12. Исходный файл после такого сохранения уже не восстановить.

Безопасный путь через Excel — импорт, а не открытие. Вкладка Данные → Из текстового/CSV-файла, в мастере укажите кодировку и разделитель. Колонкам с кодами задайте тип «Текст». Результат сохраните в .xlsx: этот формат помощник 1С читает без сюрпризов.

💡 Сделайте пробную выборку: 10–20 строк из файла, включая самые «кривые» (длинные названия, кавычки, пустые цены). Загрузите их первыми. Если они прошли чисто, остальные тоже пройдут.

Загрузка через помощник «Загрузка данных из файла»

Помощник встроен в типовые конфигурации на 8.3: Бухгалтерию 3.0, ЗУП 3.1, УТ 11 и другие. Он работает с табличными файлами Excel (xlsx, xls), OpenDocument (ods), табличным документом 1С (mxl) и, в актуальных релизах, с CSV. Обычный TXT с табуляцией проще всего превратить в XLSX через Excel, как описано выше.

В справочник: номенклатура, контрагенты

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

В табличную часть документа

Так загружают, например, 500 строк товаров в поступление или реализацию.

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

Строки, для которых помощник не нашёл номенклатуру, в документ не попадут. Найдите их на шаге сопоставления, а не после проведения.

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

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

Типичная схема для прайса поставщика:

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

По какому полю искать существующие элементы

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

Что делать с несопоставленными строками

После сопоставления строки делятся на найденные и не найденные. Для ненайденных обычно есть выбор:

  • ➕ создать новые элементы — если в файле действительно новые товары;
  • ✋ сопоставить вручную — если товар в базе есть, но записан иначе;
  • ⏭️ пропустить — если строка лишняя.

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

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

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

Текстовый файл — это байты. Какие буквы из них получатся, решает кодировка. Если 1С или Excel угадали её неверно, вместо «Номенклатура» вы увидите Номенклатура или знаки вопроса.

КодировкаГде встречаетсяПризнак ошибки при неверном выборе
UTF-8Выгрузки сайтов, маркетплейсов, современных программРђР±РІ вместо русских букв
Windows-1251 (ANSI)Старые программы под Windows, многие выгрузки бухгалтерских системÐ, Ñ и похожие символы
CP866 (OEM, DOS)Старые DOS-программы, часть файлов клиент-банковПсевдографика вместо кириллицы
UTF-16Иногда «Юникод» при сохранении из БлокнотаПробелы между буквами, нечитаемо

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

Разделители и кавычки

  • ↔️ Точка с запятой — стандарт для русских CSV, потому что запятая занята дробной частью.
  • ⇥ Табуляция — частый вариант в TXT-выгрузках. В Блокноте выглядит как широкий пробел.
  • ❝ Кавычки вокруг полей. Если в названии есть разделитель, поле берут в кавычки: "ООО ""Ромашка""; филиал". Простая разбивка строки по ; здесь ошибётся, а Excel при импорте разберёт правильно.

Ещё одна мелочь — разделитель дробной части. 1250.50 и 1250,50 — одно и то же число, но программа, ждущая запятую, точку может не понять. Приводите файл к одному варианту.

Текстовый файл выписки из клиент-банка

Выписка — самый частый текстовый файл в бухгалтерии. Банк-клиент выгружает её в файл kl_to_1c.txt формата 1CClientBankExchange. Первая строка такого файла — 1CClientBankExchange, дальше идут строки вида Ключ=Значение и секции документов.

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

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

Кодировка у выписки указана в самом файле строкой Кодировка=Windows или Кодировка=DOS. Если вместо назначений платежей нечитаемые символы, откройте файл в Блокноте и проверьте эту строку. Значение должно совпадать с тем, в какой кодировке банк реально сохранил файл. Правильнее всего поправить формат выгрузки в настройках интернет-банка.

Если банк поддерживает прямую интеграцию (DirectBank или «1С:ДиректБанк»), файл вообще не нужен: выписка приходит в 1С сама. Это убирает ошибки кодировки и ручной перенос файлов.

Ошибки при загрузке и как читать результат

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

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

Перед массовой загрузкой в рабочую базу сделайте резервную копию или прогоните файл на копии. Отменить создание 2 000 элементов справочника одной кнопкой нельзя.

Загрузка текстового файла программно: внешняя обработка и расписание

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

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

  • ЧтениеТекста — построчное чтение с явной кодировкой (КодировкаТекста.UTF8, КодировкаТекста.ANSI, КодировкаТекста.OEM);
  • СтрРазделить — разбивка строки по разделителю (платформа 8.3.6 и выше);
  • ТекстовыйДокумент — если файл небольшой и удобнее работать с ним целиком.

Пример: функция читает CSV с колонками «Артикул; Наименование; Цена», пропускает заголовок и пустые строки и возвращает таблицу значений. Строки с неверным числом полей попадают в сообщения с номером строки.

Функция ПрочитатьCSV(ИмяФайла) Экспорт

    Результат = Новый ТаблицаЗначений;
    Результат.Колонки.Добавить("Артикул");
    Результат.Колонки.Добавить("Наименование");
    Результат.Колонки.Добавить("Цена");

    Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
    Строка = Чтение.ПрочитатьСтроку(); // первая строка - заголовки, пропускаем
    НомерСтроки = 1;

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

    Чтение.Закрыть();
    Возврат Результат;

КонецФункции

Функция СтрокаВЧисло(Знач Текст)

    Текст = СтрЗаменить(Текст, Символы.НПП, "");
    Текст = СтрЗаменить(Текст, " ", "");
    Текст = СтрЗаменить(Текст, ",", ".");
    Попытка
        Возврат Число(Текст);
    Исключение
        Возврат 0;
    КонецПопытки;

КонецФункции

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

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

Где лежит файл: клиент или сервер

В клиент-серверной базе код на сервере видит диски сервера 1С, а не компьютера пользователя. Путь C:\Users\Бухгалтер\Desktop\price.csv сервер не найдёт. Есть два рабочих варианта:

  1. Файл выбирает пользователь, клиент передаёт его на сервер через временное хранилище, а сервер разбирает уже полученные данные.
  2. Файл кладут в общую сетевую папку. Права на чтение нужны учётной записи, под которой работает служба сервера 1С (часто USR1CV8), а не пользователю.

Загрузка по расписанию

В конфигурациях на БСП внешнюю обработку можно подключить как дополнительную: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если обработка написана с серверной командой, у этой команды настраивается расписание. Тогда файл из сетевой папки будет загружаться, например, каждый день в 07:00 без участия человека.

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

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

Можно ли загрузить TXT в 1С без Excel?
Да. Файл клиент-банка грузится напрямую в разделе банковских выписок. CSV актуальные релизы помощника читают сами. Произвольный TXT без Excel загружает только внешняя обработка.
Какой формат файла самый надёжный для загрузки в 1С?
XLSX. В нём нет вопросов с кодировкой и разделителями, а колонки с кодами можно явно хранить как текст.
Сколько строк можно загрузить за раз?
Жёсткого лимита в несколько тысяч строк нет, но большой файл обрабатывается долго. Файлы на десятки тысяч строк удобнее делить на части по 5–10 тысяч и проверять итог каждой.
Почему в веб-клиенте загрузка ведёт себя иначе?
Браузер не даёт 1С прямого доступа к дискам. Файл сначала передаётся на сервер, поэтому большие файлы грузятся дольше, а обработки, читающие файл по пути, в веб-клиенте не работают.
Можно ли отменить загрузку?
Одной командой нет. Документы можно пометить на удаление отбором по дате создания, созданные элементы справочника — найти по группе или коду. Проще и надёжнее сделать копию базы перед загрузкой.