Импорт CSV в 1С:Предприятие 8.3 без кракозябр, потерянных нулей и дублей
Содержание
Чтобы загрузить 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, ИНН 0278123456 | Excel превращает в 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 | НСИ и администрирование → Номенклатура, команда загрузки в командной панели списка или в меню Ещё |
Как проходит загрузка
- Нажмите
Загрузить. Откроется форма-шаблон с колонками, которые программа умеет заполнять. - Выберите загрузку из файла и укажите CSV. Если в списке типов файлов нет CSV, сначала пересохраните его в
.xlsx. - Проверьте, что колонки встали на свои места. Если нет — сопоставьте их вручную в заголовке таблицы.
- Перейдите к шагу сопоставления. Программа покажет, какие строки нашлись среди существующих элементов, а какие будут созданы заново.
- Решите, обновлять ли найденные элементы или только создавать новые.
- Запустите загрузку и прочитайте итоговый отчёт: сколько создано, обновлено, пропущено.
💡 В той же форме можно не выбирать файл, а просто скопировать ячейки из Excel и вставить их в шаблон через Ctrl+V. Для разовой загрузки на 100–300 строк это часто быстрее, чем возиться с кодировкой.
Сопоставление колонок и типов данных
Самое тонкое место — как 1С поймёт, что строка файла соответствует уже существующему элементу. От этого зависит, получите вы аккуратный справочник или сотню дублей.
📌 По каким полям надёжно искать:
- 📦 номенклатура — артикул или штрихкод; по наименованию — только если названия абсолютно одинаковые;
- 🏢 контрагенты — ИНН, для обособленных подразделений — ИНН плюс КПП;
- 👤 физлица — ИНН или СНИЛС, а не ФИО;
- 🏦 банковские счета — номер счёта плюс БИК.
Ссылочные поля — единица измерения, ставка НДС, вид номенклатуры, группа — должны совпадать с элементами, которые уже есть в базе. Если в файле написано «шт.», а в классификаторе единица называется «шт», строка не сопоставится. Проще заранее заменить значения в Excel на те, что в базе, чем потом чистить справочник.
Если поле поиска не задано или задано неудачно, повторная загрузка того же файла создаст полную копию справочника. Перед первой загрузкой в рабочую базу сделайте резервную копию или прогоните файл на копии базы.
Загрузка номенклатуры и контрагентов из CSV
Номенклатура
Минимальный набор колонок: наименование, артикул, единица измерения, вид номенклатуры, ставка НДС. Цены в справочник не загружаются — это отдельный документ установки цен. В БП 3.0 это Склад → Цены → Установка цен номенклатуры, в УТ 11 — документы установки цен в разделе Маркетинг.
Порядок, который экономит повторную работу:
- Сначала создайте в 1С группы номенклатуры и виды номенклатуры, если их нет.
- Загрузите 5–10 строк и проверьте карточки: единицу, ставку НДС, счёт учёта.
- Только потом загружайте весь файл.
- Цены загружайте вторым проходом — в табличную часть документа установки цен через ту же кнопку
Загрузить.
Контрагенты
В справочнике контрагентов команда загрузки из файла есть не во всех конфигурациях и релизах. Если в командной панели и меню Ещё её нет, используйте универсальную обработку (раздел ниже).
💡 Для контрагентов обычно достаточно загрузить только ИНН. В БП 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, её публикуют для пользователей с договором сопровождения. Умеет загружать в любой справочник, в табличную часть документа и в регистр сведений.
- Откройте обработку через главное меню
☰ → Файл → Открыть. - Выберите режим загрузки и объект, например справочник «Контрагенты».
- Вставьте данные в табличное поле или прочитайте файл. CSV надёжнее предварительно сохранить в
.xlsx. - На закладке настроек отметьте флажок «Поле поиска» для ИНН или артикула.
- Для каждой колонки выберите режим: искать, устанавливать значение или вычислять выражением.
- Сначала проверьте результат на 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: этим вы снимаете вопрос кодировки и разделителя целиком.