Настройка отображения паспортов безопасности товаров в 1С-Битрикс

При загрузке партии химических товаров паспорта безопасности часто теряются, прикрепляются к неверному товару или имеют неправильные версии. Ручная обработка занимает до 2 часов на 100 позиций, а ошибки в названиях файлов ведут к несоответствию юридическим требованиям. Автоматизация решает задачу: м
Услуги, которые мы предлагаем
Показано 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 Appointment Booking Widget for a Medical Center
    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 позиций, а ошибки в названиях файлов ведут к несоответствию юридическим требованиям. Автоматизация решает задачу: мы настраиваем свойства инфоблоков, пишем скрипт массовой загрузки из ZIP и выводим ссылку на SDS в карточке. Результат — менеджер загружает документы за минуты, покупатель видит актуальную версию. Наш опыт — 5 лет внедрений для магазинов химии, лакокрасочных материалов и промышленного оборудования. Гарантируем поддержку после запуска.

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

Проблемы, которые решаем

Типичные сложности:

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

Мы автоматизируем процесс, сокращая время загрузки на 80% по сравнению с ручным прикреплением. Экономия на зарплате менеджера — существенная.

Организация массовой загрузки паспортов

Хранение документов

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

Свойство SAFETY_DATA_SHEET (тип F):

  • Множественное: нет (один актуальный паспорт)
  • Обязательное: нет (не у всех товаров)
  • Подсказка: «PDF паспорта безопасности (ГОСТ 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 минут вместо 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 дня. Свяжитесь с нами для консультации и оценки вашего проекта. Мы гарантируем качество и поддержку после запуска.