upgrade January 2018 Bitrix articles
Build and deploy / deploy (push) Successful in 21s

This commit is contained in:
2026-07-31 01:44:45 +03:00
parent 18f25995bc
commit 44c99a2640
12 changed files with 712 additions and 20 deletions
@@ -0,0 +1,58 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1360" role="img" aria-labelledby="title desc">
<title id="title">Жизненный цикл CIBlockElement Add</title>
<desc id="desc">Вертикальная последовательность: входные данные, общий обработчик, запись, контрольная публичная выборка и готовый пользовательский результат.</desc>
<defs>
<style>
.bg { fill: #fffdfa; }
.title { fill: #1e252d; font: 700 48px Arial, sans-serif; }
.sub { fill: #64707d; font: 28px Arial, sans-serif; }
.step { fill: #edf5f2; stroke: #216869; stroke-width: 3; }
.event { fill: #eef3fa; stroke: #355c9a; stroke-width: 3; }
.check { fill: #fff4e8; stroke: #b4432a; stroke-width: 3; }
.result { fill: #e5f2ed; stroke: #216869; stroke-width: 3; }
.step-title { fill: #1e252d; font: 700 34px Arial, sans-serif; text-anchor: middle; }
.step-copy { fill: #44515d; font: 26px Arial, sans-serif; text-anchor: middle; }
.note { fill: #65492e; font: 700 28px Arial, sans-serif; text-anchor: middle; }
.arrow { fill: none; stroke: #64707d; stroke-width: 6; marker-end: url(#arrow); }
</style>
<marker id="arrow" markerWidth="14" markerHeight="14" refX="11" refY="7" orient="auto">
<path d="M0,0 L14,7 L0,14 z" fill="#64707d"/>
</marker>
</defs>
<rect class="bg" width="1000" height="1360"/>
<text class="title" x="80" y="84">Путь CIBlockElement::Add</text>
<text class="sub" x="80" y="128">ID — важная контрольная точка, но не финальный критерий готовности.</text>
<rect class="step" x="100" y="200" width="800" height="138" rx="26"/>
<text class="step-title" x="500" y="253">1. Форма или импорт → сервис</text>
<text class="step-copy" x="500" y="300">Поля, внешний ключ и контекст операции.</text>
<path class="arrow" d="M500 338 V415"/>
<rect class="event" x="100" y="430" width="800" height="148" rx="26"/>
<text class="step-title" x="500" y="484">2. OnBeforeIBlockElementAdd</text>
<text class="step-copy" x="500" y="528">Общий инвариант: уточнить поля</text>
<text class="step-copy" x="500" y="563">или отменить запись с понятной причиной.</text>
<path class="arrow" d="M500 578 V655"/>
<rect class="step" x="100" y="670" width="800" height="140" rx="26"/>
<text class="step-title" x="500" y="724">3. CIBlockElement::Add</text>
<text class="step-copy" x="500" y="770">Возвращает ID либо false + LAST_ERROR.</text>
<path class="arrow" d="M500 810 V887"/>
<rect class="check" x="100" y="902" width="800" height="166" rx="26"/>
<text class="step-title" x="500" y="956">4. Контрольная публичная выборка</text>
<text class="step-copy" x="500" y="1000">ACTIVE, даты, раздел, свойства, URL,</text>
<text class="step-copy" x="500" y="1035">а для каталога — цена и остаток по сценарию.</text>
<path class="arrow" d="M500 1068 V1145"/>
<rect class="result" x="100" y="1160" width="800" height="118" rx="26"/>
<text class="step-title" x="500" y="1212">5. Пользователь видит готовый результат</text>
<text class="step-copy" x="500" y="1252">Только теперь можно считать сценарий завершённым.</text>
<text class="note" x="500" y="1324">«Элемент сохранён» и «элемент готов» — разные состояния.</text>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

@@ -0,0 +1,61 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1560" role="img" aria-labelledby="title desc">
<title id="title">Диагностика элемента, который не виден в каталоге</title>
<desc id="desc">Вертикальное дерево вопросов от результата Add до публичного отображения товара.</desc>
<defs>
<style>
.bg { fill: #fffdfa; }
.title { fill: #1e252d; font: 700 46px Arial, sans-serif; }
.sub { fill: #64707d; font: 28px Arial, sans-serif; }
.question { fill: #edf2f7; stroke: #4e6a85; stroke-width: 3; }
.failure { fill: #fff0eb; stroke: #b4432a; stroke-width: 3; }
.success { fill: #e5f2ed; stroke: #216869; stroke-width: 3; }
.box-title { fill: #1e252d; font: 700 33px Arial, sans-serif; text-anchor: middle; }
.box-copy { fill: #44515d; font: 25px Arial, sans-serif; text-anchor: middle; }
.yes { fill: #216869; font: 700 27px Arial, sans-serif; }
.no { fill: #b4432a; font: 700 27px Arial, sans-serif; }
.arrow { fill: none; stroke: #64707d; stroke-width: 6; marker-end: url(#arrow); }
</style>
<marker id="arrow" markerWidth="14" markerHeight="14" refX="11" refY="7" orient="auto">
<path d="M0,0 L14,7 L0,14 z" fill="#64707d"/>
</marker>
</defs>
<rect class="bg" width="1000" height="1560"/>
<text class="title" x="70" y="82">Элемент не виден в каталоге</text>
<text class="sub" x="70" y="128">Не начинаем с кеша. Идём от факта записи к публичной выборке.</text>
<rect class="question" x="100" y="200" width="800" height="140" rx="26"/>
<text class="box-title" x="500" y="255">1. Add вернул ID и нет LAST_ERROR?</text>
<text class="box-copy" x="500" y="303">Нет → логируем входные поля, права и причину ошибки.</text>
<path class="arrow" d="M500 340 V410"/>
<text class="yes" x="524" y="386">да</text>
<rect class="question" x="100" y="425" width="800" height="140" rx="26"/>
<text class="box-title" x="500" y="480">2. ACTIVE, даты и раздел подходят?</text>
<text class="box-copy" x="500" y="528">Нет → исправляем условия публикации, а не шаблон.</text>
<path class="arrow" d="M500 565 V635"/>
<text class="yes" x="524" y="611">да</text>
<rect class="question" x="100" y="650" width="800" height="140" rx="26"/>
<text class="box-title" x="500" y="705">3. Есть свойства и товарный слой?</text>
<text class="box-copy" x="500" y="753">Нет → проверяем SKU, цену, остаток и обязательные связи.</text>
<path class="arrow" d="M500 790 V860"/>
<text class="yes" x="524" y="836">да</text>
<rect class="question" x="100" y="875" width="800" height="140" rx="26"/>
<text class="box-title" x="500" y="930">4. Совпадает фильтр публичного компонента?</text>
<text class="box-copy" x="500" y="978">Нет → сверяем права, URL, проектные условия и раздел.</text>
<path class="arrow" d="M500 1015 V1085"/>
<text class="yes" x="524" y="1061">да</text>
<rect class="failure" x="100" y="1100" width="800" height="140" rx="26"/>
<text class="box-title" x="500" y="1155">5. Только теперь проверяем кеш и индекс</text>
<text class="box-copy" x="500" y="1203">Данные уже доказанно корректны — ищем задержку слоя выдачи.</text>
<path class="arrow" d="M500 1240 V1310"/>
<rect class="success" x="100" y="1325" width="800" height="130" rx="26"/>
<text class="box-title" x="500" y="1380">Пользователь видит нужную карточку</text>
<text class="box-copy" x="500" y="1428">И причина зафиксирована, чтобы не лечить её наугад снова.</text>
<text class="no" x="500" y="1510">«Нет» на любом шаге — исправляем именно этот слой.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB