Импорт CSV в 1С:Предприятие 8.3 без кракозябр, потерянных нулей и дублей

· 10 мин

Содержание

Чтобы загрузить CSV в 1С 8.3, откройте список, куда нужны данные (например, Справочники → Номенклатура), нажмите Загрузить и выберите файл с типом «Текст с разделителями (*.csv)». Если команда не принимает CSV, откройте файл в Excel или LibreOffice с правильной кодировкой, сохраните как .xlsx и загрузите уже его — это самый надёжный путь.

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

Подготовка CSV-файла: кодировка, разделитель, формат чисел

CSV — это обычный текст. В нём нет информации о кодировке и типах колонок, поэтому программа угадывает. Угадывает она часто неправильно, и исправлять это лучше до загрузки, а не после.

Кодировка

📌 Откуда чаще всего приходит файл и в какой кодировке:

  • 🪟 Excel на русской Windows, «CSV (разделители — запятые)» — Windows-1251;
  • 🌐 выгрузка из веб-сервиса, маркетплейса, CRM — обычно UTF-8, иногда без метки BOM;
  • 📟 старые учётные системы и кассовое ПО — бывает CP866 (DOS).

Как проверить: откройте файл в Блокноте Windows. В строке состояния справа внизу видна кодировка. Если там UTF-8, а 1С показывает кракозябры, пересохраните файл через Файл → Сохранить как с кодировкой «UTF-8 с BOM» — метка в начале файла помогает программам распознать кодировку автоматически.

Разделитель

На русской Windows Excel сохраняет CSV с точкой с запятой ;, потому что запятая занята под десятичный разделитель. Сервисы из-за рубежа и многие API отдают файл с запятой ,. Бывает и табуляция.

Откройте файл в Блокноте и посмотрите на первую строку. Если суммы записаны как 1250,50 и при этом разделитель — запятая, значения обязательно должны стоять в кавычках: "1250,50". Иначе одна сумма развалится на две колонки.

Числа, даты, коды

Что в файлеЧем грозитКак подготовить
Артикул 00145, ИНН 0278123456Excel превращает в 145 и 278123456Импортировать колонку как текст (см. ниже)
Сумма 1 250,50 с пробеломНе распознаётся как числоУбрать пробелы-разделители разрядов
Сумма 1250.50 с точкойНа русской Windows Excel может сделать из неё датуЗаменить точку на запятую или задать формат колонки
Дата 2024-01-15 или 15/01/2024Перепутаны день и месяцПривести к виду ДД.ММ.ГГГГ
Штрихкод 4601234567890Показывается как 4,60123E+12Колонку — только текстом

💡 Главный приём: не открывайте CSV двойным щелчком. В Excel используйте Данные → Из текста/CSV, укажите кодировку и разделитель, а для колонок с кодами, ИНН, КПП и штрихкодами задайте тип «Текст». Тогда ведущие нули сохранятся. В LibreOffice Calc мастер импорта текста открывается сам, там тоже можно задать тип колонки «Текст».

Перед загрузкой ещё:

  • 🧹 удалите пустые строки в конце файла и строки итогов;
  • 🏷️ оставьте одну строку заголовков — по ней удобно сопоставлять колонки;
  • ✂️ уберите лишние пробелы в начале и конце значений (функция СЖПРОБЕЛЫ в Excel).

Стандартная загрузка из файла в типовых конфигурациях

В актуальных релизах Бухгалтерии предприятия 3.0, Управления торговлей 11 и других конфигураций на Библиотеке стандартных подсистем есть встроенный помощник загрузки данных из файла. Он открывается из списка справочника или из табличной части документа.

Куда загружаемГде команда
Номенклатура в БП 3.0Справочники → Номенклатура, кнопка Загрузить
Товары в документ (поступление, реализация)Табличная часть документа, кнопка Загрузить или меню Заполнить над ней
Номенклатура в УТ 11НСИ и администрирование → Номенклатура, команда загрузки в командной панели списка или в меню Ещё

Как проходит загрузка

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

💡 В той же форме можно не выбирать файл, а просто скопировать ячейки из Excel и вставить их в шаблон через Ctrl+V. Для разовой загрузки на 100–300 строк это часто быстрее, чем возиться с кодировкой.

Сопоставление колонок и типов данных

Самое тонкое место — как 1С поймёт, что строка файла соответствует уже существующему элементу. От этого зависит, получите вы аккуратный справочник или сотню дублей.

📌 По каким полям надёжно искать:

  • 📦 номенклатура — артикул или штрихкод; по наименованию — только если названия абсолютно одинаковые;
  • 🏢 контрагенты — ИНН, для обособленных подразделений — ИНН плюс КПП;
  • 👤 физлица — ИНН или СНИЛС, а не ФИО;
  • 🏦 банковские счета — номер счёта плюс БИК.

Ссылочные поля — единица измерения, ставка НДС, вид номенклатуры, группа — должны совпадать с элементами, которые уже есть в базе. Если в файле написано «шт.», а в классификаторе единица называется «шт», строка не сопоставится. Проще заранее заменить значения в Excel на те, что в базе, чем потом чистить справочник.

Сопоставление полей
Артикул→Номенклатура.Артикул (поле поиска)
Наименование→Номенклатура.Наименование
Ед. изм.→Классификатор единиц измерения
Ставка НДС→Ставка НДС (20%, 10%, Без НДС)
ИНН поставщика→Контрагенты.ИНН (поле поиска)
Цена→Цена в табличной части, число с запятой

Если поле поиска не задано или задано неудачно, повторная загрузка того же файла создаст полную копию справочника. Перед первой загрузкой в рабочую базу сделайте резервную копию или прогоните файл на копии базы.

Загрузка номенклатуры и контрагентов из CSV

Номенклатура

Минимальный набор колонок: наименование, артикул, единица измерения, вид номенклатуры, ставка НДС. Цены в справочник не загружаются — это отдельный документ установки цен. В БП 3.0 это Склад → Цены → Установка цен номенклатуры, в УТ 11 — документы установки цен в разделе Маркетинг.

Порядок, который экономит повторную работу:

  1. Сначала создайте в 1С группы номенклатуры и виды номенклатуры, если их нет.
  2. Загрузите 5–10 строк и проверьте карточки: единицу, ставку НДС, счёт учёта.
  3. Только потом загружайте весь файл.
  4. Цены загружайте вторым проходом — в табличную часть документа установки цен через ту же кнопку Загрузить.

Контрагенты

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

💡 Для контрагентов обычно достаточно загрузить только ИНН. В БП 3.0 при подключённой интернет-поддержке программа заполняет реквизиты по ИНН из ЕГРЮЛ: наименование, КПП, адрес. Так данные будут точнее, чем в любой выгрузке.

📌 Что проверить в файле контрагентов:

  • 🔢 ИНН юрлица — 10 цифр, ИП и физлица — 12; если цифр 9 или 11, Excel «съел» ведущий ноль;
  • 🧾 КПП — 9 цифр, тоже текстом;
  • 🔁 нет повторов ИНН внутри самого файла (удалите дубликаты в Excel через Данные → Удалить дубликаты).

Банковские выписки и платёжные документы в формате CSV

Здесь CSV — не родной формат. Обработка Банк и касса → Банковские выписки → Загрузить в БП 3.0 читает текстовый файл обмена с клиент-банком — тот самый kl_to_1c.txt, который начинается со строки 1CClientBankExchange. CSV-выписку она не примет.

Варианты по порядку предпочтения:

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

Если CSV пришёл от платёжного агрегатора или маркетплейса, это обычно не выписка, а реестр операций. Его логичнее загружать не в банковские документы, а в отчёт комиссионера или агента — по смыслу операции. Деньги на расчётный счёт при этом всё равно придут обычной выпиской из банка.

Перед загрузкой выписки, собранной вручную, сверьте начальный и конечный остаток с банком. Задвоенная выписка — частая причина расхождения сальдо по счёту 51.

Обработки и код на встроенном языке: когда типовых средств мало

Универсальная обработка «Загрузка данных из табличного документа»

Это внешняя обработка ЗагрузкаДанныхИзТабличногоДокумента.epf, её публикуют для пользователей с договором сопровождения. Умеет загружать в любой справочник, в табличную часть документа и в регистр сведений.

  1. Откройте обработку через главное меню ☰ → Файл → Открыть.
  2. Выберите режим загрузки и объект, например справочник «Контрагенты».
  3. Вставьте данные в табличное поле или прочитайте файл. CSV надёжнее предварительно сохранить в .xlsx.
  4. На закладке настроек отметьте флажок «Поле поиска» для ИНН или артикула.
  5. Для каждой колонки выберите режим: искать, устанавливать значение или вычислять выражением.
  6. Сначала проверьте результат на 5–10 строках, потом загружайте всё.

⚠️ Для открытия внешних обработок у пользователя должно быть соответствующее право. Программа при открытии файла выводит предупреждение безопасности — открывайте только обработки из надёжного источника.

Своя обработка для регулярной загрузки

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

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

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

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

Для файла в UTF-8 укажите вторым параметром КодировкаТекста.UTF8. Функция СтрРазделить доступна в платформе 8.3.6 и новее.

У простого разбиения по разделителю есть ограничение: если в значении есть разделитель внутри кавычек ("ООО ""Ромашка""; филиал"), строка развалится неправильно. Для таких файлов нужен разбор с учётом кавычек — посимвольный проход по строке с флагом «внутри кавычек».

💡 Даты из CSV не превращайте через Дата() напрямую из 15.01.2024. Разбейте строку по точке и соберите дату из частей: Дата(Число(Ч[2]), Число(Ч[1]), Число(Ч[0])), где Ч = СтрРазделить(ТекстДаты, ".").

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

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

Если не помогло

  • 🔍 Откройте CSV в текстовом редакторе с подсветкой символов (Notepad++ и подобные) и включите показ скрытых символов. Часто мешают неразрывные пробелы, табуляция внутри значения или перевод строки посреди записи.
  • 🧪 Сократите файл до трёх строк и загрузите их. Если прошло — ищите проблемную строку делением файла пополам.
  • 🔄 Пересохраните файл в .xlsx и загрузите его вместо CSV: этим вы снимаете вопрос кодировки и разделителя целиком.

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

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