К статье
Практический материал

Справочники и Данные · 9 мин

Как загрузить данные из TXT в 1С

Как загрузить данные из TXT-файла в 1С: обработка с диска ИТС, формат с разделителями, загрузка кода, проверка результата и типичные ошибки при импорте.

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

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

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

Подготовка TXT-файла к загрузке

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

Обратите внимание на кодировку. 1С по умолчанию ожидает UTF-8 или ANSI (Windows-1251). Если файл сохранён в другой кодировке, кириллица после загрузки превратится в нечитаемые символы. Открыть файл и пересохранить его в нужной кодировке можно в «Блокноте» (пункт «Сохранить как» — выбор кодировки) или в Notepad++.

Проверьте также числовые значения: разделитель дробной части (точка или запятая), отсутствие пробелов-разделителей тысяч, корректные даты в едином формате. Лучше привести даты к виду ДД.ММ.ГГГГ и числа — к виду без лишних символов ещё до загрузки.

Способ 1. Загрузка через обработку из табличного документа

Для типовых конфигураций (Управление торговлей, Комплексная автоматизация, ERP) на диске ИТС и в составе поставки есть универсальная обработка «Загрузка данных из табличного документа». Она работает с файлами MXL, XLSX и некоторыми другими форматами, поэтому TXT предварительно открывают в Excel и сохраняют в подходящем виде.

Порядок действий
  1. 1
    Откройте TXT-файл в Excel: Данные → Получение данных → Из текстового файла, укажите разделитель полей.
  2. 2
    Проверьте, что колонки распознаны правильно, и сохраните файл как XLSX.
  3. 3
    В 1С откройте обработку «Загрузка данных из табличного документа» (Файл → Открыть).
  4. 4
    Выберите режим «Загрузка в справочник», укажите вид справочника и файл.
  5. 5
    Сопоставьте колонки файла с реквизитами справочника, задайте поле поиска (например, «Наименование» или «Код»).
  6. 6
    Нажмите «Загрузить» и проверьте протокол: сколько элементов создано, сколько обновлено, какие строки пропущены.

Поле поиска определяет, будет ли обработка создавать новые элементы или обновлять существующие. Если искать по наименованию, а в базе уже есть элементы с такими же названиями, но другим написанием (лишние пробелы, регистр), появятся дубли. Для номенклатуры надёжнее искать по артикулу, для контрагентов — по ИНН и КПП.

Способ 2. Загрузка кодом через объект ЧтениеТекста

Когда файл приходит регулярно или требуется нестандартная логика (проверки, преобразования, поиск по нескольким полям), пишут собственную обработку. Для чтения TXT используется объект ЧтениеТекста, а строки разбираются функцией СтрРазделить.

bsl
Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
Строка = Чтение.ПрочитатьСтроку();
Пока Строка <> Неопределено Цикл
    Поля = СтрРазделить(Строка, ";");
    Если Поля.Количество() >= 3 Тогда
        НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
        НовыйЭлемент.Наименование = Поля[0];
        НовыйЭлемент.Артикул = Поля[1];
        НовыйЭлемент.Записать();
    КонецЕсли;
    Строка = Чтение.ПрочитатьСтроку();
КонецЦикла;
Чтение.Закрыть();

Пример выше — упрощённый каркас. В реальной обработке добавляют: пропуск строки заголовка, проверку на пустые строки, поиск существующего элемента перед созданием нового, преобразование строк в числа и даты через функции Число() и Дата() с обработкой исключений.

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

Сравнение способов загрузки

Сравнение вариантов

Обработка с диска ИТС

Подходит для разовой загрузки в типовые конфигурации без программирования. Ограничение: требует подготовки файла и ручного сопоставления колонок.

Собственная обработка на встроенном языке

Подходит для регулярного обмена и нестандартной логики. Ограничение: нужны навыки разработки и доработка при смене формата файла.

Промежуточная конвертация в Excel/CSV

Подходит, когда данные сначала нужно проверить и отредактировать вручную. Ограничение: лишний шаг и риск искажения данных при пересохранении.

Планы обмена и механизмы интеграции

Подходят для постоянного обмена между системами. Ограничение: избыточны для разовой загрузки справочника.

Проверка результата после загрузки

После загрузки сверьте количество строк в файле с количеством созданных и обновлённых элементов. Расхождение говорит о пропущенных строках — ищите их в протоколе загрузки.

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

Контрольные точки

Как проверить результат

Количество записей
Норма

Совпадает с числом строк данных в файле

Тревожный признак

Часть строк отсутствует — смотрите протокол ошибок

Кириллица в наименованиях
Норма

Текст читается корректно

Тревожный признак

Нечитаемые символы — неверная кодировка файла

Числовые реквизиты
Норма

Дробная часть на месте, значения в ожидаемом диапазоне

Тревожный признак

Числа обнулены или в 100 раз больше — проблема с разделителем дробной части

Дубли элементов
Норма

Поиск по полю поиска не даёт повторов

Тревожный признак

Несколько элементов с одинаковым ИНН или артикулом

Типичные ошибки и как их избежать

Типичные ошибки
01
Загрузка файла в неверной кодировке — кириллица превращается в нечитаемые символы; пересохраните файл в UTF-8 или укажите кодировку в ЧтениеТекста.
02
Поиск существующих элементов по наименованию — из-за разного написания создаются дубли; используйте ИНН, артикул или код.
03
Непроверенные числа с разделителем тысяч — строка «1 250,50» не преобразуется в число и даёт ошибку или ноль; очищайте пробелы перед преобразованием.
04
Загрузка сразу в рабочую базу без копии — при ошибке массовое удаление элементов затрагивает связанные документы; сначала тестируйте на копии.
05
Строка заголовка файла уходит в данные — в справочнике появляется элемент «Наименование;Артикул;Цена»; пропускайте первую строку.

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

Когда стоит привлечь специалиста

Самостоятельная загрузка оправдана для простых случаев: один справочник, плоская структура файла, разовая операция. Обратитесь к разработчику 1С, если файл содержит иерархические данные, нужно создавать связанные объекты (контрагент плюс договоры плюс банковские счета), требуется загрузка по расписанию или объёмы исчисляются сотнями тысяч строк.

Итог

Что важно запомнить

Приведите TXT к однородной структуре и кодировке UTF-8, выбирайте поле поиска по уникальному реквизиту (ИНН, артикул), тестируйте загрузку на копии базы и обязательно проверяйте протокол и выборочные записи после импорта.

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

Можно ли загрузить TXT в 1С без диска ИТС и программирования?

Да, если в вашей конфигурации есть встроенный механизм импорта. Например, в некоторых типовых решениях есть загрузка номенклатуры или банковских выписок из файлов через раздел «Администрирование» или профильные рабочие места. Также TXT можно открыть в Excel и скопировать данные через буфер обмена в табличную часть документа, если конфигурация поддерживает вставку.

Чем TXT отличается от CSV при загрузке в 1С?

По сути это один и тот же принцип: строки и поля с разделителем. CSV — это частный случай текстового файла, обычно с разделителем «запятая» или «точка с запятой». Обработки 1С одинаково читают оба формата, важно лишь правильно указать разделитель и кодировку.

После загрузки вместо русских букв отображаются странные символы. Что делать?

Это несовпадение кодировок. Узнайте кодировку исходного файла (например, через Notepad++) и укажите её явно: в объекте ЧтениеТекста вторым параметром (КодировкаТекста.ANSI, UTF8 и др.) или пересохраните файл в UTF-8 и повторите загрузку. Уже испорченные элементы придётся удалить или исправить повторной загрузкой.

Как загрузить файл, где поля имеют фиксированную ширину, без разделителей?

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

Как избежать дублей при повторной загрузке того же файла?

Перед созданием элемента выполняйте поиск по уникальному реквизиту: Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул) или НайтиПоНаименованию(). Если элемент найден — обновляйте его, а не создавайте новый. Для контрагентов надёжнее всего искать по паре ИНН + КПП.

Файл очень большой, обработка зависает. Что предпринять?

Читайте файл построчно через ЧтениеТекста, а не загружайте целиком в память. Разбейте запись на транзакции по 500–1000 элементов, отключите в цикле лишние проверки и выведите индикатор прогресса. Если файл систематически велик, рассмотрите фоновое выполнение загрузки через регламентное задание.