Как реализовать автоматическую выгрузку номенклатуры, цен и остатков из 1С на сайт через XML?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Этап 1: Формирование XML-структуры

Для создания XML-файла в 1С наиболее эффективным и гибким инструментом является объект ЗаписьXML. Он позволяет вручную выстраивать иерархию элементов, точно соответствующую требованиям API вашего сайта.

Рассмотрим пример формирования структуры данных, который можно адаптировать под ваши нужды:


ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку("UTF-8");
ЗаписьXML.ЗаписатьОбъявлениеXML;
ЗаписьXML.ЗаписатьНачалоЭлемента("products");
ЗаписьXML.ЗаписатьНачалоЭлемента("product");
ЗаписьXML.ЗаписатьНачалоЭлемента("id");
ЗаписьXML.ЗаписатьТекст("GUID_товара");
ЗаписьXML.ЗаписатьКонецЭлемента;

// Цикл для вывода цен или характеристик
ЗаписьXML.ЗаписатьНачалоЭлемента("price");
ЗаписьXML.ЗаписатьНачалоЭлемента("type");
ЗаписьXML.ЗаписатьТекст("Розничная");
ЗаписьXML.ЗаписатьКонецЭлемента;
ЗаписьXML.ЗаписатьНачалоЭлемента("value");
ЗаписьXML.ЗаписатьТекст("479");
ЗаписьXML.ЗаписатьКонецЭлемента;
ЗаписьXML.ЗаписатьКонецЭлемента;

ЗаписьXML.ЗаписатьКонецЭлемента; // конец product
ЗаписьXML.ЗаписатьКонецЭлемента; // конец products
СтрокаXML = ЗаписьXML.Закрыть();

Если вам нужно сохранить полученный результат во внешний файл для отладки или передачи сторонним специалистам, используйте метод ОткрытьФайл вместо УстановитьСтроку.

Этап 2: Выбор способа передачи данных

Способ отправки напрямую зависит от версии платформы 1С и готовности API вашего сайта.

  1. HTTP POST-запрос: Является стандартом для REST API. Для корректной работы требуется платформа 8.2.18+ или 8.3.х. Используйте HTTPСоединение и HTTPЗапрос. Важно правильно задать заголовки Content-Type и Authorization, если этого требует API.
  2. FTP-обмен: Если обновление платформы невозможно или API не поддерживает прямой HTTP-прием, используйте классический FTP. 1С выкладывает файл в каталог, а сервер сайта забирает его оттуда регламентным заданием.

Этап 3: Организация обмена изменениями

Чтобы не перегружать сервер сайта при каждой синхронизации, необходимо реализовать логику «дельта-обмена»:

Этап 4: Подготовка запросов для выгрузки

Для корректного получения данных используйте запросы с соединениями к регистрам цен и остатков. Помните, что разделение на три логических потока (Номенклатура, Цены, Остатки) значительно упрощает отладку и парсинг данных на стороне сайта.


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    ЕСТЬNULL(Цены.Цена, 0) КАК Цена,
    ЕСТЬNULL(Остатки.КоличествоОстаток, 0) КАК Остаток
ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК Цены
    ПО Номенклатура.Ссылка = Цены.Номенклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК Остатки
    ПО Номенклатура.Ссылка = Остатки.Номенклатура

Такой подход обеспечивает высокую надежность системы обмена. Если возникают сложности с форматами (например, при работе с ЭДО), всегда проверяйте соответствие структуры тегов требованиям получателя (XSD-схеме). В случае с государственными форматами, такими как счета-фактуры, настоятельно рекомендуется использовать специализированные модули операторов ЭДО, так как они автоматически обеспечивают подписание и валидацию файлов.

← На главную