Налаштування привязки документів якості до товарів у 1С-Bitrix
Документи якості — це ширше поняття, ніж сертифікати відповідності. Сюди входять: декларації ТР ТС, паспорти якості, протоколи випробувань, СГР (свідоцтва про державну реєстрацію), інструкції з застосування. Для кожного типу документа — свої вимоги до зберігання та відображення.
Структура зберігання документів
Для гнучкої привязки кількох типів документів до товарів оптимальна схема з окремим інфоблоком.
Інфоблок 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;
}
Контроль строку дії
Документи з закінченим строком дії не можна показувати як актуальні. Варіанти обробки:
Варіант 1 — фільтрація у запиті:
'>=PROPERTY_VALID_TO' => date('d.m.Y')
Варіант 2 — автоматична деактивація через агент.
Створюєте агент Bitrix (таблиця b_agent), який раз на добу перевіряє документи з істекшою датою і ставить їм ACTIVE = N. Реєструєте через \CAgent::AddAgent():
\CAgent::AddAgent(
'\Local\QualityDocs\Agent::deactivateExpired();',
'local_quality_docs',
'N', // не однократно
86400 // раз на добу
);
Масова привязка документів
Якщо потрібно привязати один документ до сотень товарів — вручну через адміністративний інтерфейс незручно. Робите імпорт через CIBlockElement::Update() з оновленням властивості PRODUCTS. Або створюєте адміністративну сторінку з пошуком товарів за фільтром (категорія, бренд) і масовою привязкою.
Для масової привязки всіх товарів бренда до документа:
$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–3 ч |
| Доробка карточки товару | 3–4 ч |
| Агент деактивації істекших документів | 2–3 ч |
| Сторінка масової привязки (опціонально) | 4–6 ч |
| Сповіщення про істечення строку (опціонально) | 2–3 ч |







