Импорт TXT и CSV в 1С 8.3: от подготовки файла до своей обработки
Содержание
Загрузить текстовый файл в 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, как описано выше.
В справочник: номенклатура, контрагенты
- Откройте список справочника. Для товаров в Бухгалтерии 3.0 —
Справочники → Товары и услуги → Номенклатура. - Встаньте в нужную группу, если товары должны попасть в неё.
- Нажмите
Загрузитьв командной панели списка. Если кнопки не видно, она в менюЕщё. - В окне помощника есть два пути: вставить данные копированием из таблицы или нажать кнопку выбора файла и указать файл на диске.
- Нажмите
Далееи переходите к сопоставлению (следующий раздел).
В табличную часть документа
Так загружают, например, 500 строк товаров в поступление или реализацию.
- Создайте документ и заполните шапку: контрагента, склад, договор.
- Над табличной частью «Товары» найдите команду
Загрузить(в части форм она в менюЕщё). - Укажите файл. В нём должны быть хотя бы три колонки: номенклатура (или артикул), количество, цена.
- Сопоставьте колонки и проверьте, что вся номенклатура найдена.
- После загрузки сверьте итог документа с итогом в файле, и только потом проводите.
Строки, для которых помощник не нашёл номенклатуру, в документ не попадут. Найдите их на шаге сопоставления, а не после проведения.
Сопоставление колонок файла с реквизитами 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С не нашла контрагента или договор.
- Заполните недостающее и нажмите
Загрузитьв форме обмена.
Кодировка у выписки указана в самом файле строкой Кодировка=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С (часто
USR1CV8), а не пользователю.
Загрузка по расписанию
В конфигурациях на БСП внешнюю обработку можно подключить как дополнительную: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Если обработка написана с серверной командой, у этой команды настраивается расписание. Тогда файл из сетевой папки будет загружаться, например, каждый день в 07:00 без участия человека.
Для такой схемы предусмотрите три вещи: перенос обработанного файла в архив, чтобы не загрузить его дважды; журнал с числом загруженных строк; уведомление ответственному, если строк с ошибками больше нуля.