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

[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 руб.

12.06.2017    135639    730    291    

391

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

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

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

38500 34650 руб.

15.04.2019    68916    181    139    

111

Перенос данных из УПП 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.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20665    136    38    

95

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

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

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

48278 43450 руб.

03.12.2020    34481    83    58    

81

Перенос данных из УТ 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.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46839    200    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

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

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67814    41    123    

46

Загрузка номенклатуры 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.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

14400 руб.

20.11.2015    151521    367    376    

503

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

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

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

50722 45650 руб.

24.04.2015    190850    270    239    

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

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

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