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

Разработка и Конфигурация · 12 мин

Парсинг в 1С: что это и как разбирать данные в программе

Парсинг в 1С — что это такое, какие задачи решает разбор данных, какие инструменты использовать: XML, JSON, регулярные выражения, веб-сервисы и типовые ошибки.

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

Типичная ситуация: поставщик присылает каталог товаров в Excel или XML, банк отдаёт выписку в текстовом формате, сайт возвращает цены в JSON. Вручную переносить сотни позиций в базу долго и чревато ошибками. Парсинг автоматизирует этот процесс: обработка читает источник, разбирает его по правилам и создаёт объекты в информационной базе.

Важно понимать: парсинг — это не отдельная функция платформы, а общее название целого класса приёмов. В зависимости от формата источника используются разные механизмы: объекты чтения XML и JSON, текстовые документы, табличные документы, COM-подключение к Excel, HTTP-запросы к внешним сервисам. Ниже разберём, что выбрать в каждом случае и как не допустить типовых ошибок.

Какие задачи решает парсинг в 1С

На практике парсинг применяется везде, где данные приходят извне и их нужно загрузить в учётную систему. Самые распространённые сценарии:

  • загрузка прайс-листов и каталогов поставщиков из Excel, CSV или XML;
  • обработка банковских выписок для автоматического создания платёжных документов;
  • обмен с сайтом: получение заказов, выгрузка остатков и цен;
  • интеграция с внешними API — службы доставки, маркетплейсы, курсы валют, проверка контрагентов;
  • разбор электронных документов (УПД, накладные) при электронном документообороте;
  • миграция данных из старой учётной системы при переходе на 1С.

Общая логика во всех случаях одинакова: получить источник → разобрать его структуру → сопоставить данные с объектами базы → записать результат. Отличаются только инструменты разбора и правила сопоставления.

Основные инструменты разбора данных в платформе

Платформа 1С:Предприятие предоставляет встроенные объекты для работы с разными форматами. Выбор зависит от того, в каком виде приходят данные.

XML и JSON

Для XML используются объекты ЧтениеXML (потоковое чтение больших файлов) и DOM-модель через ПостроительDOM (когда нужен произвольный доступ к узлам). Дополнительно доступна XDTO-сериализация — удобна, когда структура данных описана схемой, например при обмене между конфигурациями 1С.

Для JSON предназначены ЧтениеJSON и ЗаписьJSON, а также функция ПрочитатьJSON, которая сразу преобразует строку в структуру или соответствие. Это основной инструмент при работе с REST API сайтов и сервисов.

Текстовые и табличные файлы

Файлы CSV и произвольный текст разбираются через ТекстовыйДокумент или ЧтениеТекста с построчной обработкой и функцией СтрРазделить. Файлы Excel читаются либо как табличный документ (если файл сохранён в формате, который платформа открывает напрямую), либо через COM-объект Excel.Application на компьютере с установленным Microsoft Office.

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

ЧтениеXML / ЧтениеJSON

Потоковый разбор структурированных файлов и ответов API. Подходит для больших объёмов, но требует аккуратной обработки вложенности узлов.

ТабличныйДокумент

Загрузка Excel-подобных файлов без установленного Office. Ограничение: работает только с форматами, которые платформа умеет открывать.

COM-объект Excel

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

ТекстовыйДокумент + СтрРазделить

Разбор CSV и нестандартных текстовых форматов. Гибко, но всю логику разбора (кавычки, разделители, экранирование) придётся писать вручную.

Как организовать загрузку: общий порядок действий

Независимо от формата рабочая схема обработки выглядит одинаково. Сначала получают источник: файл с диска, вложение письма или ответ HTTP-запроса. Затем выполняют разбор в промежуточную структуру — таблицу значений или массив структур. Только после этого данные записываются в базу.

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

Порядок действий
  1. 1
    Определите формат источника и выберите инструмент разбора: ЧтениеXML, ЧтениеJSON, ТабличныйДокумент или ТекстовыйДокумент
  2. 2
    Напишите код разбора в промежуточную таблицу значений с колонками под нужные поля
  3. 3
    Добавьте проверки: обязательные поля заполнены, числа преобразуются, даты распознаются
  4. 4
    Реализуйте поиск существующих объектов по ключевым полям (артикул, ИНН, код), чтобы не создавать дубли
  5. 5
    Записывайте данные в транзакции, чтобы при ошибке откатить всю порцию
  6. 6
    Выведите протокол: сколько строк прочитано, сколько создано, сколько пропущено и почему

Пример: разбор JSON-ответа веб-сервиса

Частая задача — получить данные с внешнего сайта, например курсы валют или статус доставки. Сервис возвращает JSON, который нужно разобрать. Упрощённый фрагмент кода выглядит так:

bsl
HTTPОтвет = Соединение.Получить(Запрос);
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТелоОтвета);
Данные = ПрочитатьJSON(Чтение, Истина);
Чтение.Закрыть();
Для Каждого Элемент Из Данные["items"] Цикл
	// обработка каждой записи
КонецЦикла;

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

Риски и ограничения, о которых нужно знать

Парсинг внешних данных — это всегда работа с ненадёжным источником. Поставщик может поменять структуру прайса, сайт — вернуть ошибку вместо JSON, в файле Excel — оказаться объединённые ячейки или пустые строки в середине таблицы. Код разбора должен предполагать худший вариант: оборачивать преобразования в попытку/исключение и фиксировать проблемные строки в протоколе, а не прерывать всю загрузку из-за одной записи.

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

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

Типичные ошибки
01
Запись объектов без поиска существующих — справочники заполняются дублями, отчёты искажаются
02
Отсутствие транзакции — при сбое в середине файла часть данных записана, часть нет, и откатить загрузку невозможно
03
Разбор чисел и дат без учёта региональных настроек — запятая как разделитель дробной части или дата в формате ММ/ДД/ГГГГ даёт неверные значения
04
Игнорирование кодировки файла — текст в ANSI читается как UTF-8, кириллица превращается в кракозябры
05
Отсутствие протокола загрузки — пользователь не понимает, что загрузилось, а что пропущено, и не может исправить ошибки

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

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

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

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

Счётчики в протоколе
Норма

Прочитано = создано + обновлено + пропущено, расхождений нет

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

Числа не сходятся, часть строк потерялась без объяснения

Суммы документов
Норма

Итоговая сумма загруженных документов равна контрольной сумме файла

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

Суммы отличаются — возможно, неверно распознаны числа или пропущены строки

Дубли справочников
Норма

Поиск по ключу не находит двух элементов с одинаковым артикулом или ИНН

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

Одна и та же позиция заведена несколько раз

Кириллица в данных
Норма

Наименования читаются нормально

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

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

Альтернативы самостоятельной разработке

Не всегда парсинг нужно программировать с нуля. В типовых конфигурациях уже есть встроенные механизмы загрузки: обмен с банками (клиент-банк), загрузка курсов валют, обмен с сайтами в формате CommerceML, электронный документооборот. Универсальная обработка «Загрузка данных из табличного документа» на диске ИТС позволяет настроить загрузку из Excel в большинство справочников и табличных частей без программирования.

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

Маршрут решения

Как выбрать действие

Данные приходят в Excel и нужно загрузить справочник или табличную частьПопробуйте типовую обработку загрузки из табличного документа — программирование не потребуется
Источник — API сайта или сервиса с JSON-ответомПишите обработку с HTTPСоединение и ЧтениеJSON, типовых средств для произвольных API нет
Обмен с банком или контролирующими органамиИспользуйте встроенные механизмы конфигурации — форматы регламентированы и уже реализованы
Загрузка регулярная и объёмнаяОформляйте парсинг как фоновое задание по расписанию с протоколом и уведомлением об ошибках

Часто задаваемые вопросы

Чем парсинг отличается от обмена данными?

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

Можно ли парсить сайты напрямую из 1С?

Технически да: через HTTPСоединение можно получить HTML-страницу и разобрать её как текст. Однако это хрупкое решение — при смене вёрстки сайта разбор сломается. Если у сайта есть официальный API с выдачей JSON или XML, используйте его. Также учитывайте условия использования сайта: автоматический сбор данных может быть запрещён правилами ресурса.

Что делать, если файл Excel не открывается как табличный документ?

Проверьте формат файла: платформа открывает не все разновидности Excel-файлов. Варианты решения: пересохранить файл в поддерживаемом формате, использовать COM-объект Excel на машине с установленным Office или попросить поставщика выгружать данные в CSV, который разбирается текстовыми средствами платформы.

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

Перед созданием объекта выполняйте поиск по устойчивому ключу: артикулу для номенклатуры, ИНН и КПП для контрагентов, номеру и дате для документов. Если объект найден — обновляйте его, а не создавайте новый. Для внешних источников полезно хранить внешний идентификатор записи в отдельном реквизите или регистре сведений.

Безопасно ли запускать сторонние обработки загрузки?

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

Почему загрузка большого файла работает очень медленно?

Частые причины: запись каждого объекта в отдельной транзакции с обращением к базе, поиск дублей запросом внутри цикла без индексов, использование COM-объекта Excel для файлов на десятки тысяч строк. Ускорить можно пакетной записью, выборкой справочника в соответствие перед циклом и переходом на потоковое чтение XML вместо DOM для больших файлов.

Итог

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

Парсинг в 1С — это разбор внешних данных и превращение их в объекты базы. Инструмент выбирается по формату: ЧтениеXML и ЧтениеJSON для структурированных данных, ТабличныйДокумент и COM для Excel, ТекстовыйДокумент для CSV. Надёжная обработка всегда включает разбор в промежуточную таблицу, поиск дублей, транзакцию и протокол загрузки, а перед запуском на рабочей базе — проверку на копии.