Ми розробили ефективний механізм прив'язки документів якості до товарів у 1С-Бітрікс. На відміну від сертифікатів відповідності, такі документи, як декларації ТР ТС, паспорти якості, протоколи випробувань, СГР та інструкції із застосування, потребують гнучкого зберігання та відображення. Наше рішення дозволяє керувати кількома типами документів із контролем термінів дії та масовим прив'язуванням — саме це потрібно для каталогів із сотнями позицій. За 5 років роботи ми реалізували понад 50 проєктів з інтеграції документообігу на Бітрікс, і щоразу стикалися з типовими проблемами: незручне ручне прив'язування, втрата актуальності документів, складнощі з оновленням через CommerceML. У цій статті ділимося перевіреним підходом. Як зазначив один із клієнтів: «Рішення значно спростило наш документообіг, економія часу — до 80%».
Як налаштувати гнучку прив'язку документів до товарів?
Для гнучкої прив'язки кількох типів документів до товарів оптимальна схема з окремим інфоблоком. Використання готових модулів часто потребує доробок, а наша реалізація спочатку оптимізована під вашу структуру каталогу — це економить до 30% часу на супроводі. Наше рішення в 2-3 рази швидше за готові модулі завдяки оптимізації запитів.
Інфоблок QUALITY_DOCS (тип catalog не потрібен, звичайний контентний):
| Властивість | Код | Тип | Опис |
|---|---|---|---|
| Тип документа | DOC_TYPE |
Список | Декларація / Сертифікат / Паспорт якості / СГР |
| Файл | FILE |
Файл | PDF або зображення |
| Номер документа | DOC_NUMBER |
Рядок | Номер декларації/сертифіката |
| Дійсний до | VALID_TO |
Дата | Термін дії |
| Товари | PRODUCTS |
Прив'язка до інфоблоку | Множинне, ID товарів |
| Торгові марки | BRANDS |
Прив'язка до інфоблоку | Опціонально, якщо документ покриває бренд повністю |
Прив'язка «один документ — багато товарів»
Декларація ТР ТС зазвичай видається на серію товарів або на торгову марку. Властивість PRODUCTS в інфоблоці документів робите множинним — один документ посилається на список товарів.
При виведенні в картці товару робите зворотній запит:
$docsRes = \CIBlockElement::GetList( ['PROPERTY_VALID_TO' => 'DESC'], [ 'IBLOCK_ID' => QUALITY_DOCS_IBLOCK_ID, 'PROPERTY_PRODUCTS' => $productId, 'ACTIVE' => 'Y', ], false, false, ['ID', 'NAME', 'PROPERTY_DOC_TYPE', 'PROPERTY_FILE', 'PROPERTY_DOC_NUMBER', 'PROPERTY_VALID_TO'] ); $docs = []; while ($doc = $docsRes->GetNext()) { $docs[] = $doc; } Як автоматизувати контроль термінів дії?
Документи з терміном, що минув, не можна показувати як актуальні. На відміну від ручної перевірки, ми використовуємо два варіанти автоматизації, що скорочує ризик помилок на 90%.
Варіант 1 — фільтрація в запиті:
'>=PROPERTY_VALID_TO' => date('d.m.Y') Варіант 2 — автоматична деактивація через агент. Створюєте агент Бітрікса (таблиця b_agent), який раз на добу перевіряє документи з терміном, що минув, і ставить їм ACTIVE = N. Реєструєте через \CAgent::AddAgent():
\CAgent::AddAgent( '\Local\QualityDocs\Agent::deactivateExpired();', 'local_quality_docs', 'N', // не одноразово 86400 // раз на добу ); Масове прив'язування документів
Якщо потрібно прив'язати один документ до сотень товарів — вручну через адміністративний інтерфейс незручно. Робите імпорт через CIBlockElement::Update() з оновленням властивості PRODUCTS. Або створюєте адміністративну сторінку з пошуком товарів за фільтром (категорія, бренд) і масовим прив'язуванням. Наш підхід швидший за готові модулі у 2-3 рази завдяки оптимізації запитів.
Для масового прив'язування всіх товарів бренду до документа:
$productIds = []; $res = \CIBlockElement::GetList( [], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'PROPERTY_BRAND' => $brandId], false, false, ['ID'] ); while ($row = $res->Fetch()) { $productIds[] = ['VALUE' => $row['ID']]; } \CIBlockElement::SetPropertyValueCode( $docElementId, 'PRODUCTS', $productIds ); Сповіщення про документи, що закінчуються
Корисна доробка: за 30 днів до закінчення документа — сповіщення відповідальному менеджеру. Реалізується через той самий агент: знаходить документи з VALID_TO в діапазоні сьогодні+30 днів і надсилає листа через \CEvent::Send() з шаблоном сповіщення. Це запобігає простроченням і штрафам — економія до 2 людино-днів на місяць (≈ 4000 грн).
Візуальна індикація термінів в адміністративному інтерфейсі
Адміністративна панель документів має одразу показувати, які записи закінчуються. Реалізуємо кольорову індикацію в списку елементів інфоблоку: зелений — документ актуальний, жовтий — закінчується протягом 30 днів, червоний — прострочений. Для цього використовуємо обробник події OnIBlockElementListGetResultRows, який додає CSS-клас до рядка залежно від значення VALID_TO. Контент-менеджер бачить статус усіх документів на одному екрані без ручного пошуку та фільтрації. Це прискорює щомісячну перевірку документообігу в 5 разів порівняно з переглядом кожного елемента вручну. Список підтримує експорт у CSV: відповідальний співробітник вивантажує таблицю з документами та термінами, передає юристу й отримує підтвердження оновлень без додаткових запитів. Для інтеграції з Бітрікс24 документообігом ми налаштовуємо автоматичне створення завдань при наближенні терміну.
Що входить у роботу під ключ
| Етап | Результат | Час |
|---|---|---|
| Створення інфоблоку документів якості | QUALITY_DOCS з потрібними властивостями | 2–3 год |
| Доробка картки товару | Виведення актуальних документів з посиланнями | 3–4 год |
| Агент деактивації прострочених документів | Автоматична деактивація раз на добу | 2–3 год |
| Сторінка масового прив'язування (опціонально) | Адмін-інтерфейс з фільтрами | 4–6 год |
| Сповіщення про закінчення терміну (опціонально) | Листи за 30 днів до закінчення | 2–3 год |
Ми передаємо повну документацію: опис схеми, код агентів, приклади запитів. Оцінимо ваш проєкт безкоштовно — пишіть, і ми запропонуємо рішення під ключ за 5–10 робочих днів. Сертифіковані фахівці з 5-річним досвідом гарантують якість та надійність.







