Вариант публикации каталога товаров из 1С с изображениями

27.02.22

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

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

Вводные

Нужно опубликовать каталог товаров для использования его информационными системами клиентов.

Формат XML, JSON.

В качестве опорной схемы использовал ICML https://help.retailcrm.ru/Developers/ICML, которая является расширением YML https://yandex.ru/support/partnermarket/export/yml.html.

Возможно имело смысл использовать CommerceML, пока с ним не сложилось.

Реализация

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

 

Формирование схемы данных

Основной формат XML, поэтому использую XDTO пакеты.

 
 XSD схема

 

При использовании расширения они добавляются в него и используется глобальная фабрика.

При использовании внешней обработки создается фабрика из XSD схемы.

 
 Создание фабрики из макета

 

Организация внешнего ресурса, выгрузка файлов.

Для своих проектов в качестве внешнего хранилища выбрал selectel https://selectel.ru/services/cloud/storage/

  • Есть доступ по FTP
  • Контейнер можно опубликовать по HTTP с привязкой к домену.
  • Относительно небольшая стоимость

Документация по работе с контейнерами selectel https://kb.selectel.ru/23136144.html

Контейнер нужно сделать публичным и получить http ссылку на него (без upload)

 
 Скриншот настройки контейнера

Для того чтобы не перегружать корневую папку при отправке файла вычисляю его md5 хеш и создаю папку из первых трех символов хеша, более подробно описано в статье https://habr.com/ru/post/227855/

Одно из требований хранение изображений для характеристик, через расширение отдельный справочник "ПрикрепленныеФайлы" с требуемой обвязкой не сделать, поэтому в "НоменклатураПрикрепленныеФайлы" добавил реквизит с типом характеристика. Заполняю при загрузке из внешней системы, при выгрузке, offer = характеристика, делаю выборку с учетом этого реквизита.

После отправки файла фиксирую адрес публикации в реквизите элемента спр. "НоменклатураПрикрепленныеФайлы", добавленного через расширение.

 
 Код отправки файлов

 

Выгрузка данных по схемам

Создаем объект из пакета и нормализуем данные из выборок по данным базы.

 
 Код выгрузки данных по схеме

При сериализации и отправки можно добавить архивирование.

Специфика выгрузки списочных типов, СписокXDTO: 

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

Если нужно чтобы список был вложен в элемент, то для элемента тип не указывается и создается для него описание типа, в котором описывается свойство с нужным типом и "Маскимальное количество" = -1. при создании из фабрики его нужно отдельно инициализировать. 

ОбъектМагазин.categories = ФабрикаXDTO.Создать(...);

Файлы перед отправкой можно паковать zip для уменьшения объема передаваемой информации.

 

Выгрузка схемы

 
 Код выгрузки схемы

 

Итог

В результате выполнения кода получаем

  • изображения доступные по http, пример ссылки https://192804.selcdn.ru/public/files/007/0070820ecece0a7f17f070cbc940b87c.png
  • файл каталога с ссылками на изображения, пример ссылки https://192804.selcdn.ru/public/yml_catalog.xml
  • файл схемы данных, пример ссылки https://192804.selcdn.ru/public/ExportSchema.xsd

Из за специфики формирования JSON из XDTO он может получаться больше чем XML, для этого формата нужно сериализовать через "соответствие+массив".

 

Ссылка на GitHub: https://github.com/malikov-pro/external-storage-1c-ssl/tree/master/epf

 

UPD_1: Добавил обработку выгрузки файлов, работает только для новых файлов (отсутствие публичной ссылки), изменения не отрабатывает, добавил ссылку на GitHub, папку FTP указывать с ведущим слешем "/"

 

Благодарю за внимание.

Вступайте в нашу телеграмм-группу Инфостарт

XDTO FTP selectel

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

50050 руб.

25.02.2015    190874    372    294    

428

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 24870 руб.

12.06.2017    163283    993    329    

487

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

58000 руб.

15.04.2019    86234    231    181    

168

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    209556    179    253    

298

Операции по ВЭД Файловый обмен (TXT, XML, DBF), FTP Программист Бухгалтер 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бухгалтерский учет Платные (руб)

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:". Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные) Обработка актуализирована на начало 2026 года (ставка НДС 22%)

24400 руб.

09.08.2016    96431    373    379    

119

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

42000 37800 руб.

15.12.2021    35750    263    68    

200

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

55200 руб.

03.12.2020    46383    132    83    

122

Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Системный администратор Программист Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Платные (руб)

Обработка не только формирует начальные остатки по всем счетам на нужную дату (экономя время на свёртке базы БП 3), но и полностью переносит справочные данные и документы за заданный период. Гибкая настройка включает фильтр по организациям и множество параметров выгрузки. Работайте в удобном формате: выполните однократный полный переход или настройте регулярную догрузку только новых документов из БП 3 в БП 3.0. Интеграция правил конвертации в план обмена гарантирует точную выгрузку исключительно зарегистрированных объектов.

70760 руб.

10.04.2026    1053    3    8    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kwazi 813 03.02.20 10:14 Сейчас в теме
почему веб-сервис не сделали?
2. malikov_pro 1386 03.02.20 10:33 Сейчас в теме
(1) Давать прямой доступ к базе извне считаю небезопасно. В таком варианте подключаю "проверенных" клиентов с использованием ограничений по IP или VPN.

Для широкого круга клиентов использую прокси базу (например на symfony, можно и на 1С, но менее удобно REST API организовывать) для отражения каталога и принятия заказов, к которой в дальнейшем добавляется SPA страница.

Не у всех есть инфраструктура для безопасной публикации базы или организации прокси.
3. kwazi 813 03.02.20 12:33 Сейчас в теме
(2) для публикации базы 1С:Линк не пробовали? Вполне безопасно.
4. malikov_pro 1386 03.02.20 13:38 Сейчас в теме
(3) Это доступ к приложению полностью, у меня цель каталог опубликовать. Для доступа к приложению локально разворачивается 1С сервер + OpenVPN с помощью pfSense. Статью по этому поводу готовлю.
5. Pixar0000 06.02.20 00:24 Сейчас в теме
на этом моменте "мозг вываливается" - определитесь, YML к JSON никакого отношения не имеет
Формат XML, JSON.
В качестве опорной схемы использовал ICML https://help.retailcrm.ru/Developers/ICML, которая является расширением YML https://yandex.ru/support/partnermarket/export/yml.html.
Возможно имело смысл использовать CommerceML, пока с ним не сложилось.
6. malikov_pro 1386 06.02.20 12:38 Сейчас в теме
(5) https://symfony.com/doc/current/components/serializer.html первая картинка Вам в помощь. XML/JSON/CSV это вариант сериализации, а схема YML/ICML/CommerceML описывает какие именно данные передаются, это нормализация.
7. noss 27.02.22 08:43 Сейчас в теме
Больше всего мне хотелось посмотреть в данной публикации текст процедур (заполнение объектов XDTO)
ВыгрузитьКаталогFTP_Категории() и ВыгрузитьКаталогFTP_ТорговыеПредложения()
Однако ни в статье ни в приложенном файле, автор их не раскрыл.
Собственно в приложенном файле обработки вообще ничего кроме недорисованной формы нет. Ни строчки кода.
Жаль!
8. malikov_pro 1386 27.02.22 15:33 Сейчас в теме
(7) "заполнение объектов XDTO" - Статья про вариант хранения, XDTO осваивал по циклю статей https://infostart.ru/1c/articles/171019/
"Собственно в приложенном файле обработки вообще ничего кроме недорисованной формы нет" - признаю, косяк, восстановить не из чего. Сейчас для меня актуальна тема организации каталога на yandex database + serverless + storage.
Для отправки сообщения требуется регистрация/авторизация