פרסור פידים בפורמט YML לייבוא ל-1C-Bitrix

ייבוא ידני של מוצרים מ-YML feeds ל-1C-Bitrix הופך לעיתים קרובות לכאוס: קידוד שבור, כפילויות וזמן אחזור גוזלים מזמנכם ומעצבים. אנו מפתחים parsers שמבצעים אוטומציה של טעינת מוצרים מ-YML ל-Bitrix במפתח מלא—מפירוק מבנה ועד התאמת מאפיינים. הצוות שלנו מטפל בכל התהליך ומבטיח ייבוא יציב עם תמיכה מתמשכת, כך שתוכלו לשכוח מהשגרה.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
פרסור פידים בפורמט YML לייבוא ל-1C-Bitrix
בינוני
~1-2 שבועות

הכישורים שלנו:

שאלות נפוצות

פרסור עדכוני YML לייבוא ל-1C-Bitrix

הספק שלח קובץ YML עם 50,000 מוצרים — ואתם צריכים לטעון אותם ל-Bitrix עד סוף השבוע. הכלים הסטנדרטיים נכשלים: בעיות קידוד, קטגוריות חסרות, כפילויות הצעות וזמני תמונות ארוכים. אנו הופכים תהליך זה לאוטומטי כך שתוכלו לשכוח מייבוא ידני. עם ניסיון של 10+ שנים ב-Bitrix, עיבדנו מעל 500,000 מוצרים דרך עדכוני YML ויש לנו פתרונות מוכחים שחוסכים עד 70% זמן בכל ייבוא. החברה שלנו נמצאת בשוק מעל 10 שנים, ביצענו 50+ אינטגרציות ועזרנו ללקוחות לחסוך בממוצע 2,000 דולר בחודש בעבודת יד.

למה YML עדיף על Excel לייבוא

קובצי Excel מספקים מכילים לעיתים תאים ממוזגים, מאקרו, פורמטים לא סטנדרטיים של תאריך ומטבע. YML (מפרט שפת Yandex Market Language) הוא פורמט XML קפדני, מתועד וקל לפרסור. הוא תומך בהיררכיית קטגוריות, תמונות מרובות, מאפיינים ודגלי זמינות. בניגוד ל-Excel, YML אינו דורש טרנספורמציות ידניות ומאפשר אוטומציה מלאה של הייבוא.

מבנה של עדכון YML

YML הוא פורמט XML לעדכוני מוצרים מ-Yandex. ספקים מספקים לעיתים קרובות YML: המבנה מתועד והנתונים מספיקים לייבוא מלא. זה פשוט יותר מפרסור Excel שרירותי, אבל יש לו ניואנסים משלו.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
<yml_catalog date="2025-03-15 10:30">
  <shop>
    <name>Название магазина</name>
    <currencies>
      <currency id="RUR" rate="1"/>
    </currencies>
    <categories>
      <category id="1">Электроника</category>
      <category id="2" parentId="1">Смартфоны</category>
    </categories>
    <offers>
      <offer id="12345" available="true">
        <url>https://shop.ru/product/12345</url>
        <price>29990</price>
        <currencyId>RUR</currencyId>
        <categoryId>2</categoryId>
        <picture>https://shop.ru/img/12345.jpg</picture>
        <name>Смартфон Samsung Galaxy A54</name>
        <vendor>Samsung</vendor>
        <vendorCode>SM-A546</vendorCode>
        <description>Описание товара</description>
        <param name="Цвет">Чёрный</param>
        <param name="Объём памяти">128 ГБ</param>
      </offer>
    </offers>
  </shop>
</yml_catalog>

אלמנטים מרכזיים: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE yml_catalog SYSTEM "shops.dtd"> <yml_catalog date="2025-03-15 10:30"> <shop> <name>Название магазина</name> <currencies> <currency id="RUR" rate="1"/> </currencies> <categories> <category id="1">Электроника</category> <category id="2" parentId="1">Смартфоны</category> </categories> <offers> <offer id="12345" available="true"> <url>https://shop.ru/product/12345</url> <price>29990</price> <currencyId>RUR</currencyId> <categoryId>2</categoryId> <picture>https://shop.ru/img/12345.jpg</picture> <name>Смартфон Samsung Galaxy A54</name> <vendor>Samsung</vendor> <vendorCode>SM-A546</vendorCode> <description>Описание товара</description> <param name="Цвет">Чёрный</param> <param name="Объём памяти">128 ГБ</param> </offer> </offers> </shop> </yml_catalog> — מזהה ייחודי (מקביל ל-XML_ID ב-Bitrix), offer id — דגל זמינות, available — הפניה לקטגוריה, categoryId — מאפיינים שרירותיים.

פרסור קטגוריות ובניית העץ

קטגוריות ב-YML יוצרות היררכיה דרך התכונה param. במהלך הייבוא, יש ליצור את מבנה הסעיפים המתאים בבלוק המידע. אלגוריתם:

  1. טעינת כל הקטגוריות למערך אסוציאטיבי parentId.
  2. בניית העץ רקורסיבית.
  3. עבור כל קטגוריה: מציאת הסעיף לפי [id => ['name' => ..., 'parentId' => ...]] או יצירת חדש.
  4. שמירת המיפוי XML_ID = 'yml_cat_{id}'.
$sectionId = CIBlockSection::GetList( [], ['IBLOCK_ID' => $iblockId, 'XML_ID' => 'yml_cat_' . $cat['id']], false, ['ID'] )->Fetch()['ID'];
if (!$sectionId) {
    $bs = new CIBlockSection();
    $sectionId = $bs->Add([
        'IBLOCK_ID' => $iblockId,
        'XML_ID' => 'yml_cat_' . $cat['id'],
        'NAME' => $cat['name'],
        'IBLOCK_SECTION_ID' => $parentBitrixId,
        'ACTIVE' => 'Y',
    ]);
}

ייבוא מוצרים (הצעות) ועבודה עם תמונות

לולאת העיבוד המרכזית — מעבר על כל ההצעות ב-XML. עבור כל אחת, נוצר או מעודכן אלמנט בבלוק המידע. תשומת לב מיוחדת ניתנת לטעינת תמונות: עם עדכון של 10,000 מוצרים, מדובר ב-10,000 בקשות HTTP. אנו משתמשים בבדיקת גיבוב כתובת URL וטעינה מקבילה באמצעות סוכנים כדי להפחית זמן פי 3–5.

foreach ($xml->shop->offers->offer as $offer) {
    $xmlId = (string)$offer['id'];
    $available = (string)$offer['available'] === 'true';
    $params = [];
    foreach ($offer->param as $param) {
        $params[(string)$param['name']] = (string)$param;
    }
    $fields = [
        'IBLOCK_ID' => $iblockId,
        'NAME' => (string)$offer->name,
        'XML_ID' => $xmlId,
        'ACTIVE' => $available ? 'Y' : 'N',
        'IBLOCK_SECTION_ID' => $sectionMap[(string)$offer->categoryId] ?? null,
        'PROPERTY_VALUES' => [
            'VENDOR' => (string)$offer->vendor,
            'ARTICLE' => (string)$offer->vendorCode,
        ],
    ];
    $existId = getElementByXmlId($xmlId, $iblockId);
    $el = new CIBlockElement();
    if ($existId) {
        $el->Update($existId, $fields);
    } else {
        $el->Add($fields);
    }
    updatePrice($existId ?: $el->LAST_ID, (float)$offer->price);
}

אילו סוגי הצעות תומך YML?

YML מבחין במספר סוגים, לכל אחד שדות חובה משלו:

סוג תכונה מאפיין
פשוט [yml_id => bitrix_section_id] או ללא כל הקטגוריות, שדות בסיסיים
ביגוד $sectionId = CIBlockSection::GetList( [], ['IBLOCK_ID' => $iblockId, 'XML_ID' => 'yml_cat_' . $cat['id']], false, ['ID'] )->Fetch()['ID']; if (!$sectionId) { $bs = new CIBlockSection(); $sectionId = $bs->Add([ 'IBLOCK_ID' => $iblockId, 'XML_ID' => 'yml_cat_' . $cat['id'], 'NAME' => $cat['name'], 'IBLOCK_SECTION_ID' => $parentBitrixId, 'ACTIVE' => 'Y', ]); } שדות foreach ($xml->shop->offers->offer as $offer) { $xmlId = (string)$offer['id']; $available = (string)$offer['available'] === 'true'; $params = []; foreach ($offer->param as $param) { $params[(string)$param['name']] = (string)$param; } $fields = [ 'IBLOCK_ID' => $iblockId, 'NAME' => (string)$offer->name, 'XML_ID' => $xmlId, 'ACTIVE' => $available ? 'Y' : 'N', 'IBLOCK_SECTION_ID' => $sectionMap[(string)$offer->categoryId] ?? null, 'PROPERTY_VALUES' => [ 'VENDOR' => (string)$offer->vendor, 'ARTICLE' => (string)$offer->vendorCode, ], ]; $existId = getElementByXmlId($xmlId, $iblockId); $el = new CIBlockElement(); if ($existId) { $el->Update($existId, $fields); } else { $el->Add($fields); } updatePrice($existId ?: $el->LAST_ID, (float)$offer->price); } , type="simple", רשת מידות
ספרים type="vendor.model" שדות vendor, model, type="book"
ספרי שמע author שדות מדיה ספציפיים

בפועל, 80% מהספקים משתמשים בסוג הפשוט. סוגים ספציפיים דורשים מיפוי מאפיינים נוסף.

איך להאיץ ייבוא של מוצרים עם תמונות?

תמונות הן צוואר הבקבוק הגדול ביותר. הגישה שלנו: לפני ההורדה, השוואת גיבוב כתובת ה-URL עם הייבוא הקודם (שמור במאפיין). אם כתובת ה-URL לא השתנתה, דלגו על ההורדה. עבור מוצרים חדשים — סוכני רקע עם מגבלה של 5 חוטים מקבילים. זה חוסך עד 70% זמן על קבוצה של 50,000 מוצרים.

שגיאות טיפוסיות בפרסור וכיצד להימנע מהן

  • בעיות קידוד — YML מגיע ב-UTF-8, אבל Bitrix עשוי לצפות ל-windows-1251. פתרון: המרה באמצעות publisher לפני הפרסור.
  • קטגוריות חסרות — כאשר YML מציין ISBN שאינו קיים בבלוק הקטגוריות. פתרון: יצירת קטגוריות חסרות עם הערה "זמני".
  • כפילויות הצעות — רשומות מרובות עם אותו type="audiobook". פתרון: שימוש ב-XML_ID ובדיקת קיום לפני הוספה.

מקרה בוחן

אחד הלקוחות שלנו, חנות אלקטרוניקה מקוונת עם 30,000 מוצרים מ-5 ספקים, התמודד עם הבעיה המרכזית: סכמות קטגוריות שונות (לאחד הייתה היררכיה של 2 רמות, לאחר של 4 רמות). פתרנו זאת עם מיפוי ביניים: טבלת מילון בבלוק HL. תוך 4 ימים פיתחנו מעטפת אוניברסלית שמעדכנת כעת את הקטלוג מדי יום דרך Cron. הלקוח חסך 2,500 דולר חודשית על הזנת נתונים ידנית.

מה כלול

שלב הרכב
ניתוח עדכון YML בדיקת מבנה, כל סוגי ההצעות, קידוד
עיצוב תוכנית מיפוי קטגוריות ומאפיינים
פיתוח סקריפט ייבוא עם טיפול בכפילויות, רישום
בדיקות ייבוא ניסיון על עותק, בדיקת שגיאות
פריסה ותמיכה הגדרת סוכנים, תיעוד, חודש תמיכה

לוחות זמנים לפיתוח

אפשרות זמן
ייבוא בסיסי (מוצרים, מחירים, קטגוריות) 2–3 ימים
מלא עם מאפיינים ותמונות 4–5 ימים
מערכת רב-ספקית עם ממשק משתמש והסרת כפילויות 7–10 ימים

אנו מפתחים גם אינטגרציות פשוטות וגם מערכות מרובות עדכונים מורכבות. רוצים להגדיר פרסור YML לחנות שלכם? צרו קשר — נעריך את הפרויקט שלכם תוך יום אחד. אנו מבטיחים איכות ועמידה בלוחות זמנים. הזמינו פרסור YML — ושכחו מייבוא ידני לנצח.