Налаштування паспортів безпеки товарів у 1С-Бітрікс

При завантаженні партії хімічних товарів паспорти безпеки часто губляться, прикріплюються до невірного товару або мають неправильні версії. Ручна обробка займає до 2 годин на 100 позицій, а помилки в назвах файлів ведуть до невідповідності юридичним вимогам. Налаштування паспорта безпеки товару 1С-Б
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування паспортів безпеки товарів у 1С-Бітрікс
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1454
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1018
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    760
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    879
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    803
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1162

При завантаженні партії хімічних товарів паспорти безпеки часто губляться, прикріплюються до невірного товару або мають неправильні версії. Ручна обробка займає до 2 годин на 100 позицій, а помилки в назвах файлів ведуть до невідповідності юридичним вимогам. Налаштування паспорта безпеки товару 1С-Бітрікс автоматизує цей процес: ми налаштовуємо властивості інфоблоків, пишемо скрипт масового завантаження з ZIP і виводимо посилання на SDS у картці. Результат — менеджер завантажує документи за хвилини, покупець бачить актуальну версію. Наше рішення в 5 разів швидше за ручне завантаження. Вартість налаштування становить від $200, що дозволяє заощадити до $500 на місяць на зарплаті менеджера. Наш досвід — 5 років впроваджень для магазинів хімії, лакофарбових матеріалів та промислового обладнання. Ми виконали понад 20 проектів з автоматизації SDS, обробили більше 10 000 товарів. Гарантуємо підтримку після запуску.

Safety Data Sheet (SDS) — обов'язковий документ для багатьох категорій: хімічні речовини, лаки, фарби, миючі засоби, промислові гази. В інтернет-магазині на Бітрікс документ повинен бути доступний покупцю до покупки — це означає PDF у картці товару з версійним контролем та можливістю завантаження.

Чому потрібна автоматизація паспортів безпеки?

Типові складнощі:

  • Ручне завантаження кожного файлу — до 2 годин на 100 товарів.
  • Помилки в іменах файлів: артикул не збігається, паспорт прикріплюється до невірного товару.
  • Відсутність версійності: незрозуміло, чи актуальний документ.
  • Пошук товарів без SDS вручну через адмінку.

Ми автоматизуємо процес, скорочуючи час завантаження на 80% порівняно з ручним прикріпленням (у 5 разів швидше). Економія на зарплаті менеджера — суттєва, до $500 на місяць.

Як організувати масове завантаження паспортів?

Зберігання документів

Паспорти безпеки зберігаються у файловому сховищі Бітрікс (/upload/) через модуль main. Зв'язок з товаром — через властивість-файл інфоблоку:

Властивість SAFETY_DATA_SHEET (тип F):

  • Множинне: ні (один актуальний паспорт)
  • Обов'язкове: ні (не у всіх товарів)
  • Підказка: «PDF паспорта безпеки (ГОСТ 30333-2007

Для версійного контролю — властивість SAFETY_DATA_SHEET_DATE (тип DateTime).

Скрипт масового завантаження з ZIP

Паспорти часто приходять пачкою від постачальника в ZIP-архіві з іменами за артикулом. Наш скрипт обробляє архів за хвилини — у 5 разів швидше за ручне завантаження:

Розгорнути приклад коду скрипта
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 хвилин замість 2 годин. Налаштування завантаження за 4 кроки:

  1. Створіть властивості SAFETY_DATA_SHEET і SAFETY_DATA_SHEET_DATE в інфоблоці товарів.
  2. Розмістіть скрипт importSdsDocuments в адміністративній частині.
  3. Додайте в шаблон картки виведення посилання на паспорт.
  4. Налаштуйте звіт і обробник валідації.

Як перевірити наявність SDS?

Відображення в картці товару

У шаблоні bitrix:catalog.element додаємо блок:

<?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; ?> 

Атрибут download забезпечує завантаження.

Валідація при додаванні товару

Для розділів, де 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 /bitrix/admin/sds_report.php) показує список товарів із «хімічних» розділів без прикріпленого паспорта, з кнопкою швидкого завантаження.

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
  • Документація та навчання (1 година)
  • Підтримка 1 місяць

Типові помилки та чек-лист

Помилки:

  • Неправильне ім'я файлу (артикул не збігається) — скрипт позначає як not_found.
  • Файл перевищує ліміт (>20 МБ) — налаштовуємо обмеження.
  • Дата версії не проставлена — автоматично береться поточна.
  • Забули прикріпити SDS вручну — валідація попереджає.

Чек-лист перед запуском:

  • [ ] Всі артикули в назвах файлів збігаються з товарами
  • [ ] Властивості SAFETY_DATA_SHEET і SAFETY_DATA_SHEET_DATE створено
  • [ ] Розділи з обов'язковим SDS задано в опціях
  • [ ] Шаблон картки виводить посилання на завантаження
  • [ ] Звіт працює і показує правильні товари

Строки

Етап Строк
Налаштування властивостей інфоблоку 0.5 дня
Скрипт масового завантаження з ZIP 1 день
Шаблон відображення в картці 1 день
Звіт по відсутніх документах 1 день
Тестування та деплой 0.5 дня
Разом 4 дні

Замовте налаштування паспортів безпеки під ключ — отримайте готове рішення за 4 дні. Зв'яжіться з нами для консультації та оцінки вашого проекту. Ми гарантуємо якість і підтримку після запуску.