Вариант публикации каталога товаров из 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

См. также

SALE! 30%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 21318 руб.

12.06.2017    131487    686    290    

379

SALE! 20%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С: Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила тестировались на конфигурациях УПП 1.3 (1.3.215.x) и БП 3.0 (3.0.144.x). Правила подходят для версии ПРОФ и КОРП.

25000 20000 руб.

15.12.2021    18127    111    36    

67

SALE! 10%

Перенос данных из ERP 2 (ЕРП) / КА 2 в ЗУП 3 [КД 2]

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

Наша обработка позволяет не только перенести все документы, справочную информацию и начальные остатки из ERP 2 или КА 2 в ЗУП 3, но и организовать регулярный перенос данных между программами 1С:ERP 2 / КА 2 и 1С:ЗУП 3. Вы можете выбрать период отбора данных и установить фильтр по организациям, чтобы выгружать только необходимую информацию. Более того, перенос оперативно обновляется при выходе новых релизов программы 1С, так что вы всегда будете иметь самую актуальную версию обработки.

43889 39500 руб.

03.12.2020    32611    67    55    

69

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2 (ЕРП 2)

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

Предлагаем вам качественное и проверенное временем решение для перехода с УТ 10.3 на УТ 11 / КА 2 / ERP 2. Наш перенос данных находится в продаже с 2015 года, постоянно развивается, им воспользовались уже более 240 компаний. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных. Если у вас появятся замечания - напишите нам, обязательно исправим. В стоимость включена техническая поддержка - в течение месяца решаем все возникающие вопросы по переносу данных.

43889 39500 руб.

24.04.2015    188142    264    234    

267

SALE! 20%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. За основу были взяты стандартные правила переноса остатков и справочной информации. Правила тестировались на конфигурациях УТ 10.3 (10.3.85.x) и УТ 11.5 (11.5.15.x).

25000 20000 руб.

23.07.2020    43202    184    63    

137

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 14.05.2023, версия 9.4 - 9.8)

6000 руб.

20.11.2015    147256    348    371    

483

SALE! 15%

[ED2] Обмен УПП 1.3, КА 1.1, УТ 10.3 с EnterpriseData (универсальный формат обмена), обработка

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

14580 12393 руб.

18.02.2016    179554    547    508    

499

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2.5, КА 2.5. Переносятся документы (обороты за период), справочная информация и остатки

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. За основу были взяты стандартные правила переноса остатков и справочной информации. Правила тестировались на конфигурациях УПП 1.3 (1.3.216.x), ERP 2.5 (2.5.15.x), КА 2.5 (2.5.15.x) .

25000 20000 руб.

24.06.2020    59271    35    27    

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

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

Не у всех есть инфраструктура для безопасной публикации базы или организации прокси.
3. kwazi 584 03.02.20 12:33 Сейчас в теме
(2) для публикации базы 1С:Линк не пробовали? Вполне безопасно.
4. malikov_pro 1270 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 1270 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 1270 27.02.22 15:33 Сейчас в теме
(7) "заполнение объектов XDTO" - Статья про вариант хранения, XDTO осваивал по циклю статей https://infostart.ru/1c/articles/171019/
"Собственно в приложенном файле обработки вообще ничего кроме недорисованной формы нет" - признаю, косяк, восстановить не из чего. Сейчас для меня актуальна тема организации каталога на yandex database + serverless + storage.
Оставьте свое сообщение