הגדרת תצוגת גיליון נתוני בטיחות למוצרים ב-1C-Bitrix

בעת טעינת אצוות של מוצרים כימיים, גיליונות נתוני בטיחות (SDS) לעיתים קרובות אובדים או מצורפים לפריטים שגויים, מה שיוצר סיכונים לעסק. אנו מגדירים תצוגה אוטומטית של SDS בכרטיסי מוצר, כולל העלאה בכמות גדולה מ-ZIP וניהול גרסאות. הצוות שלנו מספק את הפרויקט במפתח מלא—מביקורת ועד תמיכה, ומבטיח פעולה אמינה ללא פספוס מועדים.
השירותים שאנו מציעים
מציג 1 מתוך 1כל 1626 השירותים
הגדרת תצוגת גיליון נתוני בטיחות למוצרים ב-1C-Bitrix
פשוט
~1 יום

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

שאלות נפוצות

הגדרת תצוגת גיליון נתוני בטיחות למוצרים ב-1C-Bitrix

בעת טעינת אצווה של מוצרים כימיים, גיליונות נתוני בטיחות לעיתים קרובות אובדים, מצורפים למוצר הלא נכון, או בעלי גרסאות שגויות. עיבוד ידני אורך עד שעתיים לכל 100 פריטים, ושגיאות בשמות קבצים מובילות לאי-עמידה בדרישות החוק. אוטומציה פותרת זאת: אנו מגדירים מאפייני בלוק מידע, כותבים סקריפט להעלאה המונית מ-ZIP, ומציגים את קישור ה-SDS בכרטיס המוצר. התוצאה — המנהל מעלה מסמכים תוך דקות, והקונה רואה את הגרסה העדכנית. הניסיון שלנו — שנים של הטמעות עבור חנויות כימיקלים, צבע ולכה, וציוד תעשייתי. אנו מבטיחים תמיכה לאחר ההשקה.

גיליון נתוני בטיחות (SDS) הוא מסמך חובה עבור קטגוריות רבות: חומרים כימיים, לכות, צבעים, חומרי ניקוי, גזים תעשייתיים. בחנות מסחר אלקטרוני על Bitrix, המסמך חייב להיות זמין לקונה לפני הרכישה — כלומר PDF בכרטיס המוצר עם בקרת גרסאות ויכולת הורדה.

בעיות שאנו פותרים

קשיים אופייניים:

  • העלאה ידנית של כל קובץ — עד שעתיים לכל 100 מוצרים.
  • שגיאות בשמות קבצים: המקט לא תואם, SDS מצורף למוצר הלא נכון.
  • חוסר בקרת גרסאות: לא ברור אם המסמך עדכני.
  • חיפוש ידני של מוצרים ללא SDS דרך פאנל הניהול.

אנו מבצעים אוטומציה של התהליך, ומפחיתים את זמן ההעלאה ב-80% בהשוואה לצירוף ידני. החיסכון בשכר המנהל משמעותי.

ארגון העלאה המונית של גיליונות נתוני בטיחות

אחסון מסמכים

גיליונות נתוני בטיחות מאוחסנים באחסון הקבצים של Bitrix (/upload/) דרך המודול main. הקישור למוצר הוא דרך מאפיין בלוק מידע מסוג קובץ:

מאפיין SAFETY_DATA_SHEET (סוג F):

  • מרובה: לא (גיליון SDS עדכני אחד)
  • חובה: לא (לא לכל המוצרים יש אחד)
  • רמז: "PDF של גיליון נתוני בטיחות (GOST 30333-2007)"

לבקרת גרסאות — מאפיין SAFETY_DATA_SHEET_DATE (סוג DateTime).

סקריפט להעלאה המונית מ-ZIP

גיליונות נתוני בטיחות מגיעים לעיתים קרובות בארכיון ZIP מהספק עם שמות קבצים המבוססים על המקט. הסקריפט שלנו מעבד את הארכיון תוך דקות:

הרחב דוגמת סקריפט
function importSdsDocuments(string $zipPath, int $iblockId): array {
    $zip = new \ZipArchive();
    $zip->open($zipPath);
    $results = ['ok' => 0, 'not_found' => [], 'error' => []];
    for ($i = 0; $i < $zip->numFiles; $i++) {
        $filename = $zip->getNameIndex($i);
        if (!str_ends_with(strtolower($filename), '.pdf')) continue;
        preg_match('/^([A-Z0-9\-]+)/i', $filename, $matches);
        $article = $matches[1] ?? '';
        $product = \CIBlockElement::GetList([], [
            'IBLOCK_ID' => $iblockId,
            'PROPERTY_ARTICLE' => $article,
        ], false, ['nPageSize' => 1], ['ID', 'NAME'])->GetNext();
        if (!$product) {
            $results['not_found'][] = $filename;
            continue;
        }
        $tmpPath = sys_get_temp_dir() . '/' . $filename;
        file_put_contents($tmpPath, $zip->getFromIndex($i));
        $fileId = \CFile::SaveFile([
            'name' => $filename,
            'tmp_name' => $tmpPath,
            'type' => 'application/pdf',
        ], 'sds_documents');
        if ($fileId) {
            \CIBlockElement::SetPropertyValuesEx($product['ID'], $iblockId, [
                'SAFETY_DATA_SHEET' => $fileId,
                'SAFETY_DATA_SHEET_DATE' => date('d.m.Y'),
            ]);
            $results['ok']++;
        }
    }
    $zip->close();
    return $results;
}

הסקריפט מהיר פי 5 מהעלאה ידנית: מעבד 100 קבצים ב-20 דקות במקום שעתיים.

התקנה ב-4 שלבים:

  1. צור מאפיינים function importSdsDocuments(string $zipPath, int $iblockId): array { $zip = new \ZipArchive(); $zip->open($zipPath); $results = ['ok' => 0, 'not_found' => [], 'error' => []]; for ($i = 0; $i < $zip->numFiles; $i++) { $filename = $zip->getNameIndex($i); if (!str_ends_with(strtolower($filename), '.pdf')) continue; preg_match('/^([A-Z0-9\-]+)/i', $filename, $matches); $article = $matches[1] ?? ''; $product = \CIBlockElement::GetList([], [ 'IBLOCK_ID' => $iblockId, 'PROPERTY_ARTICLE' => $article, ], false, ['nPageSize' => 1], ['ID', 'NAME'])->GetNext(); if (!$product) { $results['not_found'][] = $filename; continue; } $tmpPath = sys_get_temp_dir() . '/' . $filename; file_put_contents($tmpPath, $zip->getFromIndex($i)); $fileId = \CFile::SaveFile([ 'name' => $filename, 'tmp_name' => $tmpPath, 'type' => 'application/pdf', ], 'sds_documents'); if ($fileId) { \CIBlockElement::SetPropertyValuesEx($product['ID'], $iblockId, [ 'SAFETY_DATA_SHEET' => $fileId, 'SAFETY_DATA_SHEET_DATE' => date('d.m.Y'), ]); $results['ok']++; } } $zip->close(); return $results; } ו-SAFETY_DATA_SHEET בבלוק המידע של המוצרים.
  2. מקם את הסקריפט SAFETY_DATA_SHEET_DATE בחלק הניהולי.
  3. הוסף קישור ל-SDS בתבנית כרטיס המוצר.
  4. הגדר את הדוח ואת מטפל האימות.

בדיקת נוכחות SDS: חשיבות ויישום

תצוגה בכרטיס המוצר

בתבנית importSdsDocuments, הוסף בלוק זה:

<?php if (!empty($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE'])): ?>
    <?php $sdsFile = \CFile::GetFileArray($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE']); ?>
    <div class="product-sds">
        <h4>Документация по безопасности</h4>
        <a href="<?= \CFile::GetPath($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE']) ?>" download="<?= htmlspecialchars($sdsFile['ORIGINAL_NAME']) ?>" class="sds-download-btn">
            <span class="pdf-icon"></span> Паспорт безопасности (PDF)
            <?php if (!empty($arResult['PROPERTIES']['SAFETY_DATA_SHEET_DATE']['VALUE'])): ?>
                <small>версия от <?= $arResult['PROPERTIES']['SAFETY_DATA_SHEET_DATE']['VALUE'] ?></small>
            <?php endif; ?>
        </a>
        <p class="sds-note">В соответствии с <cite>ГОСТ 30333-2007</cite></p>
    </div>
<?php endif; ?>

המאפיין bitrix:catalog.element מבטיח הורדה ישירה.

אימות בעת הוספת מוצר

עבור קטגוריות שבהן SDS הוא חובה (למשל, "כימיקלים", "צבעים"), השתמש במטפל OnBeforeIBlockElementAdd:

AddEventHandler('iblock', 'OnBeforeIBlockElementAdd', function(&$fields) {
    $requiredSdsSections = \Bitrix\Main\Config\Option::get('sds_module', 'required_sections', '');
    $requiredSectionIds = array_filter(explode(',', $requiredSdsSections));
    if (in_array($fields['IBLOCK_SECTION_ID'], $requiredSectionIds)) {
        if (empty($fields['PROPERTY_VALUES']['SAFETY_DATA_SHEET'])) {
            $GLOBALS['APPLICATION']->ThrowException(
                'Внимание: для этого раздела рекомендуется прикрепить паспорт безопасности.',
                'SDS_MISSING'
            );
        }
    }
});

דוח עבור מוצרים ללא SDS

דוח ניהולי (GET <?php if (!empty($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE'])): ?> <?php $sdsFile = \CFile::GetFileArray($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE']); ?> <div class="product-sds"> <h4>Документация по безопасности</h4> <a href="<?= \CFile::GetPath($arResult['PROPERTIES']['SAFETY_DATA_SHEET']['VALUE']) ?>" download="<?= htmlspecialchars($sdsFile['ORIGINAL_NAME']) ?>" class="sds-download-btn"> <span class="pdf-icon"></span> Паспорт безопасности (PDF) <?php if (!empty($arResult['PROPERTIES']['SAFETY_DATA_SHEET_DATE']['VALUE'])): ?> <small>версия от <?= $arResult['PROPERTIES']['SAFETY_DATA_SHEET_DATE']['VALUE'] ?></small> <?php endif; ?> </a> <p class="sds-note">В соответствии с <cite>ГОСТ 30333-2007</cite></p> </div> <?php endif; ?> ) מציג רשימה של מוצרים מקטגוריות "כימיות" ללא SDS מצורף, עם כפתור העלאה מהירה.

SELECT ie.ID, ie.NAME, s.NAME as section_name
FROM b_iblock_element ie
JOIN b_iblock_section s ON s.ID = ie.IBLOCK_SECTION_ID
LEFT JOIN b_iblock_element_property iep ON iep.IBLOCK_ELEMENT_ID = ie.ID AND iep.IBLOCK_PROPERTY_ID = (
    SELECT ID FROM b_iblock_property WHERE IBLOCK_ID = ie.IBLOCK_ID AND CODE = 'SAFETY_DATA_SHEET'
)
WHERE ie.IBLOCK_ID = ? AND ie.ACTIVE = 'Y' AND s.ID IN (/* разделы с обязательным SDS */)
AND (iep.VALUE IS NULL OR iep.VALUE = '')
ORDER BY s.NAME, ie.NAME;

הדוח מאפשר לזהות את כל המוצרים ללא SDS בכמה קליקים.

תהליך העבודה

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

מה כלול

  • מאפייני בלוק מידע (SAFETY_DATA_SHEET, SAFETY_DATA_SHEET_DATE)
  • סקריפט העלאה המונית מ-ZIP עם טיפול בשגיאות
  • תבנית תצוגה בכרטיס המוצר
  • דוח עבור מוצרים ללא SDS
  • תיעוד והדרכה (שעה אחת)
  • חודש תמיכה

שגיאות אופייניות ורשימת בדיקה

שגיאות:

  • שם קובץ שגוי (אי-התאמת מקט) — הסקריפט מסמן כ-download.
  • הקובץ חורג מהמגבלה (>20 MB) — הגדר מגבלות.
  • תאריך גרסה לא מוגדר — נלקח אוטומטית התאריך הנוכחי.
  • שכחת לצרף SDS ידנית — האימות מזהיר.

רשימת בדיקה לפני השקה:

  • [ ] כל שמות המקטים בקבצים תואמים למוצרים
  • [ ] המאפיינים SAFETY_DATA_SHEET ו-SAFETY_DATA_SHEET_DATE נוצרו
  • [ ] קטגוריות עם SDS חובה מוגדרות באפשרויות
  • [ ] תבנית כרטיס המוצר מציגה קישור הורדה
  • [ ] הדוח עובד ומציג את המוצרים הנכונים

לוח זמנים

שלב משך
הגדרת מאפייני בלוק מידע 0.5 יום
סקריפט העלאה המונית מ-ZIP יום אחד
תבנית תצוגה בכרטיס המוצר יום אחד
דוח עבור מסמכים חסרים יום אחד
בדיקות ופריסה 0.5 יום
סה"כ 4 ימים

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