Задача
Решение
array(59) {
["FILE"]=>
array(34) {
["ID"]=>
string(2) "30"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(76) "Ссылка на файл, если шаблон нестандартный"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(2) "90"
["CODE"]=>
string(4) "FILE"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(76) "Ссылка на файл, если шаблон нестандартный"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(0) ""
["PROPERTY_VALUE_ID"]=>
NULL
["DESCRIPTION"]=>
string(0) ""
["~DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(0) ""
}
["BANNER_PHOTO"]=>
array(34) {
["ID"]=>
string(2) "18"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(23) "Фото баннера"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "100"
["CODE"]=>
string(12) "BANNER_PHOTO"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(9) "jpg, jpeg"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(23) "Фото баннера"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(4) "2062"
["PROPERTY_VALUE_ID"]=>
string(5) "17923"
["DESCRIPTION"]=>
NULL
["~VALUE"]=>
string(4) "2062"
["~DESCRIPTION"]=>
NULL
}
["INDUSTRY"]=>
array(34) {
["ID"]=>
string(2) "19"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(14) "Отрасль"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "200"
["CODE"]=>
string(8) "INDUSTRY"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(14) "Отрасль"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(36) "Решение для бизнеса"
["PROPERTY_VALUE_ID"]=>
string(5) "17924"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(36) "Решение для бизнеса"
["~DESCRIPTION"]=>
string(0) ""
}
["TASK"]=>
array(34) {
["ID"]=>
string(2) "20"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(12) "Задача"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "300"
["CODE"]=>
string(4) "TASK"
["DEFAULT_VALUE"]=>
array(2) {
["TYPE"]=>
string(4) "HTML"
["TEXT"]=>
string(0) ""
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(12) "Задача"
["~DEFAULT_VALUE"]=>
array(2) {
["TYPE"]=>
string(4) "HTML"
["TEXT"]=>
string(0) ""
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(618) "Дать возможность покупать в интернет-магазине подарочные сертификаты. И не просто продавать «картинку», а коммуникации переложить на менеджера, а реализовать полноценный механизм, при котором человек может купить сертификат, отправить его, а получатель может воспользоваться сертификатом частично и сохранять остаток в течение 1 года."
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17925"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(618) "Дать возможность покупать в интернет-магазине подарочные сертификаты. И не просто продавать «картинку», а коммуникации переложить на менеджера, а реализовать полноценный механизм, при котором человек может купить сертификат, отправить его, а получатель может воспользоваться сертификатом частично и сохранять остаток в течение 1 года."
["TYPE"]=>
string(4) "HTML"
}
["~DESCRIPTION"]=>
string(0) ""
}
["TASK_PHOTO"]=>
array(34) {
["ID"]=>
string(2) "97"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(21) "Задача фото"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "310"
["CODE"]=>
string(10) "TASK_PHOTO"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(9) "jpg, jpeg"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(21) "Задача фото"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(0) ""
["PROPERTY_VALUE_ID"]=>
NULL
["DESCRIPTION"]=>
string(0) ""
["~DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(0) ""
}
["DECISION"]=>
array(34) {
["ID"]=>
string(2) "21"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(14) "Решение"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "400"
["CODE"]=>
string(8) "DECISION"
["DEFAULT_VALUE"]=>
array(2) {
["TYPE"]=>
string(4) "HTML"
["TEXT"]=>
string(0) ""
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(14) "Решение"
["~DEFAULT_VALUE"]=>
array(2) {
["TYPE"]=>
string(4) "HTML"
["TEXT"]=>
string(0) ""
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(120) "Полноценный функционал. О реализации которого мы поговорим ниже. "
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17926"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(120) "Полноценный функционал. О реализации которого мы поговорим ниже. "
["TYPE"]=>
string(4) "HTML"
}
["~DESCRIPTION"]=>
string(0) ""
}
["DATE"]=>
array(34) {
["ID"]=>
string(3) "220"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(8) "Дата"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "500"
["CODE"]=>
string(4) "DATE"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "Y"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(8) "Дата"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(0) ""
["PROPERTY_VALUE_ID"]=>
NULL
["DESCRIPTION"]=>
string(0) ""
["~DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(0) ""
}
["PHOTO1"]=>
array(34) {
["ID"]=>
string(2) "24"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(10) "Фото 1"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "600"
["CODE"]=>
string(6) "PHOTO1"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "Y"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(14) "jpg, jpeg, png"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(10) "Фото 1"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
bool(false)
["PROPERTY_VALUE_ID"]=>
bool(false)
["DESCRIPTION"]=>
bool(false)
["~DESCRIPTION"]=>
bool(false)
["~VALUE"]=>
bool(false)
}
["TITLE2"]=>
array(34) {
["ID"]=>
string(2) "25"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(20) "Заголовок 2"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "700"
["CODE"]=>
string(6) "TITLE2"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(20) "Заголовок 2"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(1) " "
["PROPERTY_VALUE_ID"]=>
string(5) "17951"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(1) " "
["~DESCRIPTION"]=>
string(0) ""
}
["DESC2"]=>
array(34) {
["ID"]=>
string(2) "26"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(18) "Описание 2"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "750"
["CODE"]=>
string(5) "DESC2"
["DEFAULT_VALUE"]=>
array(2) {
["TYPE"]=>
string(4) "HTML"
["TEXT"]=>
string(0) ""
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(18) "Описание 2"
["~DEFAULT_VALUE"]=>
array(2) {
["TYPE"]=>
string(4) "HTML"
["TEXT"]=>
string(0) ""
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(1646) "<p>В статье разберем наш последний проект по разработке модуля подарочных сертификатов на платформе 1С-Битрикс. </p>
<p>Расскажем, как был пройден путь от чистого макета до рабочего функционала. Дизайн-часть опустим, сконцентрируемся исключительно на технической архитектуре, этапах разработки и неочевидных нюансах, с которыми пришлось столкнуться. </p>
<p>Задача звучала так: дать пользователю возможность создать персонализированный подарочный сертификат и отправить его другому человеку.</p>
<p>Прежде чем писать код, мы разбили всю работу на логические этапы:</p>
<ol>
<li>Реализация конструктора (выбор дизайна, номинал, данные получателя).</li>
<li>Реализация функционала создания и работы сертификатов.</li>
<li>Реализация настройки оплаты и доставки сертификата.</li>
<li>Создание интерфейса для получения и отображения данных сертификата.</li>
</ol>
"
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17928"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(1538) "В статье разберем наш последний проект по разработке модуля подарочных сертификатов на платформе 1С-Битрикс.
Расскажем, как был пройден путь от чистого макета до рабочего функционала. Дизайн-часть опустим, сконцентрируемся исключительно на технической архитектуре, этапах разработки и неочевидных нюансах, с которыми пришлось столкнуться.
Задача звучала так: дать пользователю возможность создать персонализированный подарочный сертификат и отправить его другому человеку.
Прежде чем писать код, мы разбили всю работу на логические этапы:
- Реализация конструктора (выбор дизайна, номинал, данные получателя).
- Реализация функционала создания и работы сертификатов.
- Реализация настройки оплаты и доставки сертификата.
- Создание интерфейса для получения и отображения данных сертификата.
"
["TYPE"]=>
string(4) "HTML"
}
["~DESCRIPTION"]=>
string(0) ""
}
["PHOTO2"]=>
array(34) {
["ID"]=>
string(2) "27"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(10) "Фото 2"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "800"
["CODE"]=>
string(6) "PHOTO2"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "Y"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(14) "jpg, jpeg, png"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(10) "Фото 2"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
bool(false)
["PROPERTY_VALUE_ID"]=>
bool(false)
["DESCRIPTION"]=>
bool(false)
["~DESCRIPTION"]=>
bool(false)
["~VALUE"]=>
bool(false)
}
["TITLE3"]=>
array(34) {
["ID"]=>
string(2) "54"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(20) "Заголовок 3"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "801"
["CODE"]=>
string(6) "TITLE3"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(20) "Заголовок 3"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(72) "Этап 1. Конструктор и администрирование"
["PROPERTY_VALUE_ID"]=>
string(5) "17930"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(72) "Этап 1. Конструктор и администрирование"
["~DESCRIPTION"]=>
string(0) ""
}
["DESC3"]=>
array(34) {
["ID"]=>
string(2) "55"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(18) "Описание 3"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "802"
["CODE"]=>
string(5) "DESC3"
["DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(18) "Описание 3"
["~DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(1696) "<p>На этом этапе было реализовано:</p>
<ol>
<li>Разработана форма создания сертификата, где пользователь выбирает дизайн, вводит сумму (или выбирает из предложенных номиналов) и заполняет поля для получателя.</li>
<li>Реализован динамический предпросмотр. Пользователь видит итоговый вид сертификата до оплаты.</li>
</ol>
<p>Чтобы будущее сопровождение проекта не требовало постоянного вмешательства программиста, было принято решение вынести ключевые настройки в админку:</p>
<ol>
<li>Доступные номиналы (фиксированные суммы).</li>
<li>Минимальная и максимальная суммы сертификата (для свободного ввода).</li>
<li>Варианты изображений и фонов для конструктора.</li>
</ol>
<p>Теперь менеджер магазина может управлять этими параметрами через интерфейс 1с-Битрикс без правки кода.</p>
<p>Итог этапа: Никаких подводных камней на старте не возникло. Функционал отрабатывал штатно.</p>"
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17931"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(1564) "На этом этапе было реализовано:
- Разработана форма создания сертификата, где пользователь выбирает дизайн, вводит сумму (или выбирает из предложенных номиналов) и заполняет поля для получателя.
- Реализован динамический предпросмотр. Пользователь видит итоговый вид сертификата до оплаты.
Чтобы будущее сопровождение проекта не требовало постоянного вмешательства программиста, было принято решение вынести ключевые настройки в админку:
- Доступные номиналы (фиксированные суммы).
- Минимальная и максимальная суммы сертификата (для свободного ввода).
- Варианты изображений и фонов для конструктора.
Теперь менеджер магазина может управлять этими параметрами через интерфейс 1с-Битрикс без правки кода.
Итог этапа: Никаких подводных камней на старте не возникло. Функционал отрабатывал штатно.
"
["TYPE"]=>
string(4) "HTML"
}
["~DESCRIPTION"]=>
string(0) ""
}
["PHOTO3"]=>
array(34) {
["ID"]=>
string(2) "56"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(10) "Фото 3"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "803"
["CODE"]=>
string(6) "PHOTO3"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "Y"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(14) "jpg, jpeg, png"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(10) "Фото 3"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(1) {
[0]=>
string(4) "2063"
}
["PROPERTY_VALUE_ID"]=>
array(1) {
[0]=>
string(5) "17932"
}
["DESCRIPTION"]=>
array(1) {
[0]=>
NULL
}
["~VALUE"]=>
array(1) {
[0]=>
string(4) "2063"
}
["~DESCRIPTION"]=>
array(1) {
[0]=>
NULL
}
}
["TITLE4"]=>
array(34) {
["ID"]=>
string(2) "57"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(20) "Заголовок 4"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "804"
["CODE"]=>
string(6) "TITLE4"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(20) "Заголовок 4"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(92) "Этап 2. Функционал создания и работы сертификатов. "
["PROPERTY_VALUE_ID"]=>
string(5) "17933"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(92) "Этап 2. Функционал создания и работы сертификатов. "
["~DESCRIPTION"]=>
string(0) ""
}
["DESC4"]=>
array(34) {
["ID"]=>
string(2) "58"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(18) "Описание 4"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "805"
["CODE"]=>
string(5) "DESC4"
["DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(18) "Описание 4"
["~DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(2429) "<p>На данном этапе стояла задача реализовать основную логику работы сертификата – как именно он должен применяться в корзине, списывать и хранить остаток средств.</p>
<p>За основу был взят штатный функционал 1С-Битрикс «Купоны», чтобы сохранить нативную интеграцию с заказами и корзиной.</p>
<p>При детальном анализе выяснилось, что нативный функционал купонов не рассчитан на работу с денежным номиналом. У купона нет «баланса»: он либо активен, либо нет.</p>
<p>Штатные механизмы «Правил работы с корзиной», которые управляют купонами, имеют жесткие ограничения:</p>
<ol>
<li>Ограничение по минимальной сумме заказа. Если сумма корзины меньше номинала сертификата, правило просто не срабатывает, купон не применяется.</li>
<li>Сгорание остатка. Если номинал сертификата больше суммы корзины, скидка применяется на всю корзину, но остаток средств сгорает безвозвратно.</li>
</ol>
<p>Для решения первой проблемы сначала было принято решение обойти эти ограничения через настройку правил.</p>
<p>Логика была такой:</p>
<ol>
<li>Создать правило, которое даёт 100% скидку на все товары, если сумма корзины меньше номинала сертификата.</li>
<li>И создать отдельное правило, которое даёт скидку в фиксированном размере (равном номиналу), если сумма корзины больше номинала.</li>
</ol>
"
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17934"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(2285) "На данном этапе стояла задача реализовать основную логику работы сертификата – как именно он должен применяться в корзине, списывать и хранить остаток средств.
За основу был взят штатный функционал 1С-Битрикс «Купоны», чтобы сохранить нативную интеграцию с заказами и корзиной.
При детальном анализе выяснилось, что нативный функционал купонов не рассчитан на работу с денежным номиналом. У купона нет «баланса»: он либо активен, либо нет.
Штатные механизмы «Правил работы с корзиной», которые управляют купонами, имеют жесткие ограничения:
- Ограничение по минимальной сумме заказа. Если сумма корзины меньше номинала сертификата, правило просто не срабатывает, купон не применяется.
- Сгорание остатка. Если номинал сертификата больше суммы корзины, скидка применяется на всю корзину, но остаток средств сгорает безвозвратно.
Для решения первой проблемы сначала было принято решение обойти эти ограничения через настройку правил.
Логика была такой:
- Создать правило, которое даёт 100% скидку на все товары, если сумма корзины меньше номинала сертификата.
- И создать отдельное правило, которое даёт скидку в фиксированном размере (равном номиналу), если сумма корзины больше номинала.
"
["TYPE"]=>
string(4) "HTML"
}
["~DESCRIPTION"]=>
string(0) ""
}
["PHOTO4"]=>
array(34) {
["ID"]=>
string(2) "59"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(10) "Фото 4"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "806"
["CODE"]=>
string(6) "PHOTO4"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "Y"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(14) "jpg, jpeg, png"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(10) "Фото 4"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(1) {
[0]=>
string(4) "2064"
}
["PROPERTY_VALUE_ID"]=>
array(1) {
[0]=>
string(5) "17935"
}
["DESCRIPTION"]=>
array(1) {
[0]=>
NULL
}
["~VALUE"]=>
array(1) {
[0]=>
string(4) "2064"
}
["~DESCRIPTION"]=>
array(1) {
[0]=>
NULL
}
}
["TITLE5"]=>
array(34) {
["ID"]=>
string(2) "60"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(20) "Заголовок 5"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "807"
["CODE"]=>
string(6) "TITLE5"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(20) "Заголовок 5"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(0) ""
["PROPERTY_VALUE_ID"]=>
NULL
["DESCRIPTION"]=>
string(0) ""
["~DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(0) ""
}
["DESC5"]=>
array(34) {
["ID"]=>
string(2) "61"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(18) "Описание 5"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "808"
["CODE"]=>
string(5) "DESC5"
["DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(18) "Описание 5"
["~DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(1276) "<p>Но в дальнейшем стало ясно, что решение абсолютно не подходит.</p>
<p>Скидка в 100% применялась ко всем позициям, чья сумма меньше номинала, не проверяя сумму корзины, это создавало ситуации, когда сертификат на 5 000р. мог давать скидку в 10 000р.</p>
<p>Стало очевидно: стандартными инструментами Битрикса эту задачу не решить.</p>
<p>Было принято решение создать кастомное правило работы с корзиной, расширяющее стандартный функционал.</p>
<p>Главное отличие правила – оно проверяет не сумму каждой позиции, а общую итоговую сумму корзины (с учётом всех уже применённых скидок). Это позволило применять скидку к корзинам, сумма которых меньше или равна номиналу сертификата.</p>"
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17936"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(1216) "Но в дальнейшем стало ясно, что решение абсолютно не подходит.
Скидка в 100% применялась ко всем позициям, чья сумма меньше номинала, не проверяя сумму корзины, это создавало ситуации, когда сертификат на 5 000р. мог давать скидку в 10 000р.
Стало очевидно: стандартными инструментами Битрикса эту задачу не решить.
Было принято решение создать кастомное правило работы с корзиной, расширяющее стандартный функционал.
Главное отличие правила – оно проверяет не сумму каждой позиции, а общую итоговую сумму корзины (с учётом всех уже применённых скидок). Это позволило применять скидку к корзинам, сумма которых меньше или равна номиналу сертификата.
"
["TYPE"]=>
string(4) "HTML"
}
["~DESCRIPTION"]=>
string(0) ""
}
["PHOTO5"]=>
array(34) {
["ID"]=>
string(2) "62"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(10) "Фото 5"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "809"
["CODE"]=>
string(6) "PHOTO5"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "Y"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(14) "jpg, jpeg, png"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(10) "Фото 5"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(1) {
[0]=>
string(4) "2068"
}
["PROPERTY_VALUE_ID"]=>
array(1) {
[0]=>
string(5) "17937"
}
["DESCRIPTION"]=>
array(1) {
[0]=>
string(0) ""
}
["~VALUE"]=>
array(1) {
[0]=>
string(4) "2068"
}
["~DESCRIPTION"]=>
array(1) {
[0]=>
string(0) ""
}
}
["TITLE6"]=>
array(34) {
["ID"]=>
string(2) "63"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(20) "Заголовок 6"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "810"
["CODE"]=>
string(6) "TITLE6"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(20) "Заголовок 6"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(0) ""
["PROPERTY_VALUE_ID"]=>
NULL
["DESCRIPTION"]=>
string(0) ""
["~DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(0) ""
}
["DESC6"]=>
array(34) {
["ID"]=>
string(2) "64"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(18) "Описание 6"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "811"
["CODE"]=>
string(5) "DESC6"
["DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(18) "Описание 6"
["~DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(3156) "<p>Вторая проблема, сгорание остатка, требовала отдельного подхода.</p>
<p>Был добавлен обработчик события создания заказа, который выполняет следующую логику:</p>
<ol>
<li>При оформлении заказа проверяется текущий остаток на сертификате.</li>
<li>Сравнивается остаток с суммой заказа.</li>
<li>В зависимости от результата:</li>
<li>
<ul>
<li>Если сумма заказа меньше остатка: создается новое правило корзины с пересчитанным номиналом (остаток минус сумма заказа). Это новое правило автоматически перепривязывается к существующему сертификату</li>
<li>Если сумма заказа меньше или равна остатку: после списания сертификат деактивируется</li>
</ul>
</li>
</ol>
<p>Чтобы всё это работало как единый механизм, был написан собственный класс, наследующий оригинальный класс купонов Битрикса.</p>
<p>В дочернем классе были переопределены методы:</p>
<p>Привязки правил к купону.</p>
<p>Получения актуального остатка.</p>
<p>Добавлена логика перепривязки нового правила при частичном списании.</p>
<p>На этом этапе мы получили полностью рабочий функционал подарочных сертификатов, который:</p>
<ol>
<li>Работает на ядре штатной системы купонов 1С-Битрикс.</li>
<li>Корректно учитывается в корзине в реальном времени.</li>
<li>Автоматически пересчитывается при оформлении заказа.</li>
<li>Поддерживает частичное списание без потери остатка.</li>
<li>Не требует костылей в виде множества дублирующихся правил.</li>
</ol>
<p>Теперь сертификат ведёт себя как настоящий электронный кошелёк, а не как разовый промокод. Интеграция с заказами работает «из коробки», без дополнительных доработок на стороне пользователя.</p>"
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17938"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(2880) "Вторая проблема, сгорание остатка, требовала отдельного подхода.
Был добавлен обработчик события создания заказа, который выполняет следующую логику:
- При оформлении заказа проверяется текущий остаток на сертификате.
- Сравнивается остаток с суммой заказа.
- В зависимости от результата:
-
- Если сумма заказа меньше остатка: создается новое правило корзины с пересчитанным номиналом (остаток минус сумма заказа). Это новое правило автоматически перепривязывается к существующему сертификату
- Если сумма заказа меньше или равна остатку: после списания сертификат деактивируется
Чтобы всё это работало как единый механизм, был написан собственный класс, наследующий оригинальный класс купонов Битрикса.
В дочернем классе были переопределены методы:
Привязки правил к купону.
Получения актуального остатка.
Добавлена логика перепривязки нового правила при частичном списании.
На этом этапе мы получили полностью рабочий функционал подарочных сертификатов, который:
- Работает на ядре штатной системы купонов 1С-Битрикс.
- Корректно учитывается в корзине в реальном времени.
- Автоматически пересчитывается при оформлении заказа.
- Поддерживает частичное списание без потери остатка.
- Не требует костылей в виде множества дублирующихся правил.
Теперь сертификат ведёт себя как настоящий электронный кошелёк, а не как разовый промокод. Интеграция с заказами работает «из коробки», без дополнительных доработок на стороне пользователя.
"
["TYPE"]=>
string(4) "HTML"
}
["~DESCRIPTION"]=>
string(0) ""
}
["PHOTO6"]=>
array(34) {
["ID"]=>
string(2) "65"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(10) "Фото 6"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "812"
["CODE"]=>
string(6) "PHOTO6"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "F"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "Y"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(14) "jpg, jpeg, png"
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(10) "Фото 6"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
bool(false)
["PROPERTY_VALUE_ID"]=>
bool(false)
["DESCRIPTION"]=>
bool(false)
["~DESCRIPTION"]=>
bool(false)
["~VALUE"]=>
bool(false)
}
["TITLE7"]=>
array(34) {
["ID"]=>
string(2) "66"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(20) "Заголовок 7"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "813"
["CODE"]=>
string(6) "TITLE7"
["DEFAULT_VALUE"]=>
string(0) ""
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
NULL
["USER_TYPE_SETTINGS"]=>
bool(false)
["HINT"]=>
string(0) ""
["~NAME"]=>
string(20) "Заголовок 7"
["~DEFAULT_VALUE"]=>
string(0) ""
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
string(86) "Этап 3. Настройка оплаты и доставки сертификата"
["PROPERTY_VALUE_ID"]=>
string(5) "17939"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
string(86) "Этап 3. Настройка оплаты и доставки сертификата"
["~DESCRIPTION"]=>
string(0) ""
}
["DESC7"]=>
array(34) {
["ID"]=>
string(2) "67"
["IBLOCK_ID"]=>
string(2) "16"
["NAME"]=>
string(18) "Описание 7"
["ACTIVE"]=>
string(1) "Y"
["SORT"]=>
string(3) "814"
["CODE"]=>
string(5) "DESC7"
["DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_TYPE"]=>
string(1) "S"
["ROW_COUNT"]=>
string(1) "1"
["COL_COUNT"]=>
string(2) "30"
["LIST_TYPE"]=>
string(1) "L"
["MULTIPLE"]=>
string(1) "N"
["XML_ID"]=>
NULL
["FILE_TYPE"]=>
string(0) ""
["MULTIPLE_CNT"]=>
string(1) "5"
["LINK_IBLOCK_ID"]=>
string(1) "0"
["WITH_DESCRIPTION"]=>
string(1) "N"
["SEARCHABLE"]=>
string(1) "N"
["FILTRABLE"]=>
string(1) "N"
["IS_REQUIRED"]=>
string(1) "N"
["VERSION"]=>
string(1) "1"
["USER_TYPE"]=>
string(4) "HTML"
["USER_TYPE_SETTINGS"]=>
array(1) {
["height"]=>
int(200)
}
["HINT"]=>
string(0) ""
["~NAME"]=>
string(18) "Описание 7"
["~DEFAULT_VALUE"]=>
array(2) {
["TEXT"]=>
string(0) ""
["TYPE"]=>
string(4) "HTML"
}
["VALUE_ENUM"]=>
NULL
["VALUE_XML_ID"]=>
NULL
["VALUE_SORT"]=>
NULL
["VALUE"]=>
array(2) {
["TEXT"]=>
string(4911) "<p>После того как была готова основная логика работы сертификатов, встала задача организовать две связанные вещи:</p>
<ol>
<li>Корректную обработку статусов оплаты от платёжных систем.</li>
<li>Доставку готового сертификата получателю.</li>
</ol>
<p>Механизм работы:</p>
<p>Здесь соединяются два предыдущих этапа в единый процесс.</p>
<p>1. Создание черновика</p>
<ul>
<li>Пользователь заполняет конструктор и нажимает «Перейти к оплате».</li>
<li>В системе создаётся предварительный сертификат со статусом «Ожидает оплаты».</li>
<li>В этом черновике сохраняются все введённые данные: дизайн, номинал, текст поздравления, ФИО и почта получателя и отправителя.</li>
</ul>
<p>2. Обработка оплаты</p>
<p>Платёжная система обрабатывает транзакцию.</p>
<p>Было реализовано два сценария получения данных об оплате:</p>
<ul>
<li>Синхронный: пользователь возвращается на сайт после оплаты.</li>
<li>Асинхронный: платежная система присылает уведомление о статусе транзакции на наш сервер.</li>
</ul>
<p>3. Реакция на статус платежа</p>
<p>Успешная оплата:</p>
<ul>
<li>Система переводит сертификат из статуса «Ожидает оплаты» в статус «Оплачен».</li>
<li>Генерируется уникальный код сертификата.</li>
<li>Запускается процесс доставки.</li>
</ul>
<p>Отмена или ошибка:</p>
<ul>
<li>Сертификат остаётся в статусе «Ожидает оплаты».</li>
<li>Пользователь может повторить попытку оплаты.</li>
<li>Через определённое время неоплаченные черновики автоматически удаляются.</li>
</ul>
<p>Доставка сертификата получателю:</p>
<p>При успешной оплате реализовали двухстороннюю систему уведомлений:</p>
<p>1. Уведомление получателя</p>
<p>На указанную в конструкторе электронную почту уходит письмо, которое содержит:</p>
<ul>
<li>Визуальное представление сертификата (ссылка на страницу с визуализацией сертификата из предпросмотра на первом этапе)</li>
<li>Данные сертификата: номинал, уникальный код для активации.</li>
<li>Инструкция по использованию: как применить сертификат при оформлении заказа.</li>
</ul>
<p>2. Уведомление отправителя</p>
<p>Пользователю, заказавшему сертификат, также приходит уведомление об успешной доставки сертификата пользователю</p>
<p>По итогам этапа разработан механизм, который:</p>
<ol>
<li>Создаёт черновик сертификата до оплаты – данные пользователя не теряются.</li>
<li>Корректно обрабатывает любой сценарий оплаты (успех/отмена/возврат).</li>
<li>Отправляет получателю готовый сертификат с инструкцией по использованию.</li>
<li>Уведомляет отправителя о статусе доставки.</li>
</ol>"
["TYPE"]=>
string(4) "HTML"
}
["PROPERTY_VALUE_ID"]=>
string(5) "17940"
["DESCRIPTION"]=>
string(0) ""
["~VALUE"]=>
array(2) {
["TEXT"]=>
string(4383) "После того как была готова основная логика работы сертификатов, встала задача организовать две связанные вещи:
- Корректную обработку статусов оплаты от платёжных систем.
- Доставку готового сертификата получателю.
Механизм работы:
Здесь соединяются два предыдущих этапа в единый процесс.
1. Создание черновика
2. Обработка оплаты
Платёжная система обрабатывает транзакцию.
Было реализовано два сценария получения данных об оплате:
3. Реакция на статус платежа
Успешная оплата:
Отмена или ошибка:
Доставка сертификата получателю:
При успешной оплате реализовали двухстороннюю систему уведомлений:
1. Уведомление получателя
На указанную в конструкторе электронную почту уходит письмо, которое содержит:
2. Уведомление отправителя
Пользователю, заказавшему сертификат, также приходит уведомление об успешной доставки сертификата пользователю
По итогам этапа разработан механизм, который:
Заключительным этапом разработки стала необходимость дать пользователю инструмент для управления своим сертификатом: контроль остатка, отслеживание срока действия и возможность восстановить утерянный код.
Ключевая сложность этого этапа заключалась в том, что подарочный сертификат не привязан к аккаунту получателя.
Это означает, что:
Было принято решение реализовать интерфейс с двухфакторной проверкой в личном кабинете, который работает по следующей логике:
Данный подход позволяет обезопасить пользователя, если злоумышленник узнает email, он не сможет получить данные без доступа к почте.
Итогами этапа стал реализованный функционал получения данных о сертификате пользователем без привязки сертификатов к конкретному аккаунту. Теперь пользователь знает, сколько средств осталось на сертификате, когда они истекают, и может восстановить код при необходимости.
" ["TYPE"]=> string(4) "HTML" } ["~DESCRIPTION"]=> string(0) "" } ["PHOTO8"]=> array(34) { ["ID"]=> string(2) "71" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(10) "Фото 8" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "818" ["CODE"]=> string(6) "PHOTO8" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(14) "jpg, jpeg, png" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(10) "Фото 8" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> array(1) { [0]=> string(4) "2066" } ["PROPERTY_VALUE_ID"]=> array(1) { [0]=> string(5) "17943" } ["DESCRIPTION"]=> array(1) { [0]=> NULL } ["~VALUE"]=> array(1) { [0]=> string(4) "2066" } ["~DESCRIPTION"]=> array(1) { [0]=> NULL } } ["TITLE10"]=> array(34) { ["ID"]=> string(2) "79" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(21) "Заголовок 10" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "819" ["CODE"]=> string(7) "TITLE10" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(21) "Заголовок 10" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["DESC10"]=> array(34) { ["ID"]=> string(2) "80" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(19) "Описание 10" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "820" ["CODE"]=> string(6) "DESC10" ["DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> string(4) "HTML" ["USER_TYPE_SETTINGS"]=> array(1) { ["height"]=> int(200) } ["HINT"]=> string(0) "" ["~NAME"]=> string(19) "Описание 10" ["~DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> array(2) { ["TEXT"]=> string(2584) "<p>По итогам всей разработки мы получили гибкий, масштабируемый и полностью интегрированный в экосистему 1С-Битрикс модуль подарочных сертификатов, который работает как единый слаженный механизм – от создания в конструкторе до использования в реальных заказах.</p> <p>Главное преимущество решения в том, что ядро платформы не переписывалось. Вместо этого расширили штатный механизм купонов, добавив собственное правило работы с корзиной, которое позволяет списывать средства частично, с сохранением остатка. Теперь сертификат ведет себя как настоящий электронный кошелек, а не как разовый промокод.</p> <p>Особое внимание уделили надёжности: механизм предварительного сохранения данных до оплаты гарантирует, что ни один сертификат не потеряется, даже если платёжная система ответит с задержкой. А двухсторонняя система уведомлений делает процесс максимально прозрачным и удобным для обеих сторон.</p> <p>Для пользователей реализован безопасный интерфейс получения информации о сертификате. Благодаря двухфакторной проверке через email, каждый может в любой момент узнать информацию сертификата, при этом данные защищены от несанкционированного доступа.</p> <p>В итоге мы получили полностью автоматизированное решение, которое не требует ручного контроля, легко масштабируется и работает на нативном ядре Битрикс – а значит, будет служить долго и без проблем с обновлениями.</p>" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_VALUE_ID"]=> string(5) "17944" ["DESCRIPTION"]=> string(0) "" ["~VALUE"]=> array(2) { ["TEXT"]=> string(2524) "По итогам всей разработки мы получили гибкий, масштабируемый и полностью интегрированный в экосистему 1С-Битрикс модуль подарочных сертификатов, который работает как единый слаженный механизм – от создания в конструкторе до использования в реальных заказах.
Главное преимущество решения в том, что ядро платформы не переписывалось. Вместо этого расширили штатный механизм купонов, добавив собственное правило работы с корзиной, которое позволяет списывать средства частично, с сохранением остатка. Теперь сертификат ведет себя как настоящий электронный кошелек, а не как разовый промокод.
Особое внимание уделили надёжности: механизм предварительного сохранения данных до оплаты гарантирует, что ни один сертификат не потеряется, даже если платёжная система ответит с задержкой. А двухсторонняя система уведомлений делает процесс максимально прозрачным и удобным для обеих сторон.
Для пользователей реализован безопасный интерфейс получения информации о сертификате. Благодаря двухфакторной проверке через email, каждый может в любой момент узнать информацию сертификата, при этом данные защищены от несанкционированного доступа.
В итоге мы получили полностью автоматизированное решение, которое не требует ручного контроля, легко масштабируется и работает на нативном ядре Битрикс – а значит, будет служить долго и без проблем с обновлениями.
" ["TYPE"]=> string(4) "HTML" } ["~DESCRIPTION"]=> string(0) "" } ["PHOTO10"]=> array(34) { ["ID"]=> string(2) "81" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(11) "Фото 10" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "821" ["CODE"]=> string(7) "PHOTO10" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(14) "jpg, jpeg, png" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(11) "Фото 10" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["TITLE11"]=> array(34) { ["ID"]=> string(2) "82" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(21) "Заголовок 11" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "822" ["CODE"]=> string(7) "TITLE11" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(21) "Заголовок 11" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["DESC11"]=> array(34) { ["ID"]=> string(2) "83" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(19) "Описание 11" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "823" ["CODE"]=> string(6) "DESC11" ["DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> string(4) "HTML" ["USER_TYPE_SETTINGS"]=> array(1) { ["height"]=> int(200) } ["HINT"]=> string(0) "" ["~NAME"]=> string(19) "Описание 11" ["~DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["PHOTO11"]=> array(34) { ["ID"]=> string(2) "84" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(11) "Фото 11" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "824" ["CODE"]=> string(7) "PHOTO11" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(14) "jpg, jpeg, png" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(11) "Фото 11" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["TITLE12"]=> array(34) { ["ID"]=> string(2) "85" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(21) "Заголовок 12" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "825" ["CODE"]=> string(7) "TITLE12" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(21) "Заголовок 12" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["DESC12"]=> array(34) { ["ID"]=> string(2) "86" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(19) "Описание 12" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "826" ["CODE"]=> string(6) "DESC12" ["DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> string(4) "HTML" ["USER_TYPE_SETTINGS"]=> array(1) { ["height"]=> int(200) } ["HINT"]=> string(0) "" ["~NAME"]=> string(19) "Описание 12" ["~DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["PHOTO12"]=> array(34) { ["ID"]=> string(2) "87" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(11) "Фото 12" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "827" ["CODE"]=> string(7) "PHOTO12" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(14) "jpg, jpeg, png" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(11) "Фото 12" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["TITLE13"]=> array(34) { ["ID"]=> string(2) "88" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(21) "Заголовок 13" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "828" ["CODE"]=> string(7) "TITLE13" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(21) "Заголовок 13" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["DESC13"]=> array(34) { ["ID"]=> string(2) "89" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(19) "Описание 13" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "829" ["CODE"]=> string(6) "DESC13" ["DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> string(4) "HTML" ["USER_TYPE_SETTINGS"]=> array(1) { ["height"]=> int(200) } ["HINT"]=> string(0) "" ["~NAME"]=> string(19) "Описание 13" ["~DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["PHOTO13"]=> array(34) { ["ID"]=> string(2) "90" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(11) "Фото 13" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "830" ["CODE"]=> string(7) "PHOTO13" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(14) "jpg, jpeg, png" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(11) "Фото 13" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["TITLE14"]=> array(34) { ["ID"]=> string(2) "91" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(21) "Заголовок 14" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "831" ["CODE"]=> string(7) "TITLE14" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(21) "Заголовок 14" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["DESC14"]=> array(34) { ["ID"]=> string(2) "92" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(19) "Описание 14" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "832" ["CODE"]=> string(6) "DESC14" ["DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> string(4) "HTML" ["USER_TYPE_SETTINGS"]=> array(1) { ["height"]=> int(200) } ["HINT"]=> string(0) "" ["~NAME"]=> string(19) "Описание 14" ["~DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["PHOTO14"]=> array(34) { ["ID"]=> string(2) "93" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(11) "Фото 14" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "833" ["CODE"]=> string(7) "PHOTO14" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(14) "jpg, jpeg, png" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(11) "Фото 14" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["TITLE15"]=> array(34) { ["ID"]=> string(2) "94" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(21) "Заголовок 15" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "834" ["CODE"]=> string(7) "TITLE15" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(21) "Заголовок 15" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["DESC15"]=> array(34) { ["ID"]=> string(2) "95" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(19) "Описание 15" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "835" ["CODE"]=> string(6) "DESC15" ["DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> string(4) "HTML" ["USER_TYPE_SETTINGS"]=> array(1) { ["height"]=> int(200) } ["HINT"]=> string(0) "" ["~NAME"]=> string(19) "Описание 15" ["~DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["PHOTO15"]=> array(34) { ["ID"]=> string(2) "96" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(11) "Фото 15" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "836" ["CODE"]=> string(7) "PHOTO15" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(9) "jpg, jpeg" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(11) "Фото 15" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["COLORS"]=> array(34) { ["ID"]=> string(2) "23" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(35) "Используемые цвета" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(3) "900" ["CODE"]=> string(6) "COLORS" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(35) "Используемые цвета" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["RESULT"]=> array(34) { ["ID"]=> string(2) "29" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(18) "Результат" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "1000" ["CODE"]=> string(6) "RESULT" ["DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> string(4) "HTML" ["USER_TYPE_SETTINGS"]=> array(1) { ["height"]=> int(200) } ["HINT"]=> string(0) "" ["~NAME"]=> string(18) "Результат" ["~DEFAULT_VALUE"]=> array(2) { ["TEXT"]=> string(0) "" ["TYPE"]=> string(4) "HTML" } ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" } ["PHOTO9"]=> array(34) { ["ID"]=> string(2) "72" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(10) "Фото 9" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "1050" ["CODE"]=> string(6) "PHOTO9" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(14) "jpg, jpeg, png" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(10) "Фото 9" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> bool(false) ["PROPERTY_VALUE_ID"]=> bool(false) ["DESCRIPTION"]=> bool(false) ["~DESCRIPTION"]=> bool(false) ["~VALUE"]=> bool(false) } ["LINK"]=> array(34) { ["ID"]=> string(2) "28" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(26) "Ссылка на сайт" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "1100" ["CODE"]=> string(4) "LINK" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(26) "Ссылка на сайт" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(24) "https://basiclook.store/" ["PROPERTY_VALUE_ID"]=> string(5) "17929" ["DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(24) "https://basiclook.store/" ["~DESCRIPTION"]=> string(0) "" } ["FILTER"]=> array(35) { ["ID"]=> string(2) "22" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(12) "Фильтр" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "2000" ["CODE"]=> string(6) "FILTER" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "L" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "Y" ["IS_REQUIRED"]=> string(1) "Y" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(12) "Фильтр" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> string(31) "Интернет-магазин" ["VALUE_XML_ID"]=> string(5) "shops" ["VALUE_SORT"]=> string(3) "500" ["VALUE"]=> string(31) "Интернет-магазин" ["PROPERTY_VALUE_ID"]=> string(5) "17958" ["VALUE_ENUM_ID"]=> string(1) "4" ["DESCRIPTION"]=> NULL ["~VALUE"]=> string(31) "Интернет-магазин" ["~DESCRIPTION"]=> NULL } ["NEW_FILTER"]=> array(35) { ["ID"]=> string(3) "313" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(33) "Категория проекта" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "3001" ["CODE"]=> string(10) "NEW_FILTER" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "L" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "Y" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(33) "Категория проекта" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(0) "" ["PROPERTY_VALUE_ID"]=> NULL ["DESCRIPTION"]=> string(0) "" ["~DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(0) "" ["VALUE_ENUM_ID"]=> NULL } ["NEW_NAME"]=> array(34) { ["ID"]=> string(3) "314" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(31) "Название проекта" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "3002" ["CODE"]=> string(8) "NEW_NAME" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(31) "Название проекта" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(89) "Разработка функционала подарочных сертификатов" ["PROPERTY_VALUE_ID"]=> string(5) "17945" ["DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(89) "Разработка функционала подарочных сертификатов" ["~DESCRIPTION"]=> string(0) "" } ["NEW_TYPE"]=> array(34) { ["ID"]=> string(3) "315" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(21) "Тип проекта" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "3003" ["CODE"]=> string(8) "NEW_TYPE" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(21) "Тип проекта" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(36) "Решение для бизнеса" ["PROPERTY_VALUE_ID"]=> string(5) "17946" ["DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(36) "Решение для бизнеса" ["~DESCRIPTION"]=> string(0) "" } ["NEW_ANONS"]=> array(34) { ["ID"]=> string(3) "316" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(46) "Краткое описание проекта" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "3004" ["CODE"]=> string(9) "NEW_ANONS" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(46) "Краткое описание проекта" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(89) "Разработка функционала подарочных сертификатов" ["PROPERTY_VALUE_ID"]=> string(5) "17947" ["DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(89) "Разработка функционала подарочных сертификатов" ["~DESCRIPTION"]=> string(0) "" } ["NEW_LINK"]=> array(34) { ["ID"]=> string(3) "317" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(30) "Ссылка на проект" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "3005" ["CODE"]=> string(8) "NEW_LINK" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(30) "Ссылка на проект" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(35) "https://basiclook.store/sertificat/" ["PROPERTY_VALUE_ID"]=> string(5) "17948" ["DESCRIPTION"]=> string(0) "" ["~VALUE"]=> string(35) "https://basiclook.store/sertificat/" ["~DESCRIPTION"]=> string(0) "" } ["NEW_PREVIEW"]=> array(34) { ["ID"]=> string(3) "318" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(49) "Картинка проекта на списке" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "3006" ["CODE"]=> string(11) "NEW_PREVIEW" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "F" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "N" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(30) "jpg, gif, bmp, png, jpeg, webp" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "N" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(0) "" ["~NAME"]=> string(49) "Картинка проекта на списке" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> string(4) "2067" ["PROPERTY_VALUE_ID"]=> string(5) "17949" ["DESCRIPTION"]=> NULL ["~VALUE"]=> string(4) "2067" ["~DESCRIPTION"]=> NULL } ["NEW_ENHANCED"]=> array(34) { ["ID"]=> string(3) "319" ["IBLOCK_ID"]=> string(2) "16" ["NAME"]=> string(33) "Улучшения проекта" ["ACTIVE"]=> string(1) "Y" ["SORT"]=> string(4) "3007" ["CODE"]=> string(12) "NEW_ENHANCED" ["DEFAULT_VALUE"]=> string(0) "" ["PROPERTY_TYPE"]=> string(1) "S" ["ROW_COUNT"]=> string(1) "1" ["COL_COUNT"]=> string(2) "30" ["LIST_TYPE"]=> string(1) "L" ["MULTIPLE"]=> string(1) "Y" ["XML_ID"]=> NULL ["FILE_TYPE"]=> string(0) "" ["MULTIPLE_CNT"]=> string(1) "5" ["LINK_IBLOCK_ID"]=> string(1) "0" ["WITH_DESCRIPTION"]=> string(1) "Y" ["SEARCHABLE"]=> string(1) "N" ["FILTRABLE"]=> string(1) "N" ["IS_REQUIRED"]=> string(1) "N" ["VERSION"]=> string(1) "1" ["USER_TYPE"]=> NULL ["USER_TYPE_SETTINGS"]=> bool(false) ["HINT"]=> string(90) "Слева крупный текст, а справа его мелкое описание" ["~NAME"]=> string(33) "Улучшения проекта" ["~DEFAULT_VALUE"]=> string(0) "" ["VALUE_ENUM"]=> NULL ["VALUE_XML_ID"]=> NULL ["VALUE_SORT"]=> NULL ["VALUE"]=> array(1) { [0]=> string(22) "+1 к удобству" } ["PROPERTY_VALUE_ID"]=> array(1) { [0]=> string(5) "17956" } ["DESCRIPTION"]=> array(1) { [0]=> string(66) "Не было функционала и теперь он есть" } ["~VALUE"]=> array(1) { [0]=> string(22) "+1 к удобству" } ["~DESCRIPTION"]=> array(1) { [0]=> string(66) "Не было функционала и теперь он есть" } } }В статье разберем наш последний проект по разработке модуля подарочных сертификатов на платформе 1С-Битрикс.
Расскажем, как был пройден путь от чистого макета до рабочего функционала. Дизайн-часть опустим, сконцентрируемся исключительно на технической архитектуре, этапах разработки и неочевидных нюансах, с которыми пришлось столкнуться.
Задача звучала так: дать пользователю возможность создать персонализированный подарочный сертификат и отправить его другому человеку.
Прежде чем писать код, мы разбили всю работу на логические этапы:
На этом этапе было реализовано:
Чтобы будущее сопровождение проекта не требовало постоянного вмешательства программиста, было принято решение вынести ключевые настройки в админку:
Теперь менеджер магазина может управлять этими параметрами через интерфейс 1с-Битрикс без правки кода.
Итог этапа: Никаких подводных камней на старте не возникло. Функционал отрабатывал штатно.
На данном этапе стояла задача реализовать основную логику работы сертификата – как именно он должен применяться в корзине, списывать и хранить остаток средств.
За основу был взят штатный функционал 1С-Битрикс «Купоны», чтобы сохранить нативную интеграцию с заказами и корзиной.
При детальном анализе выяснилось, что нативный функционал купонов не рассчитан на работу с денежным номиналом. У купона нет «баланса»: он либо активен, либо нет.
Штатные механизмы «Правил работы с корзиной», которые управляют купонами, имеют жесткие ограничения:
Для решения первой проблемы сначала было принято решение обойти эти ограничения через настройку правил.
Логика была такой:
Но в дальнейшем стало ясно, что решение абсолютно не подходит.
Скидка в 100% применялась ко всем позициям, чья сумма меньше номинала, не проверяя сумму корзины, это создавало ситуации, когда сертификат на 5 000р. мог давать скидку в 10 000р.
Стало очевидно: стандартными инструментами Битрикса эту задачу не решить.
Было принято решение создать кастомное правило работы с корзиной, расширяющее стандартный функционал.
Главное отличие правила – оно проверяет не сумму каждой позиции, а общую итоговую сумму корзины (с учётом всех уже применённых скидок). Это позволило применять скидку к корзинам, сумма которых меньше или равна номиналу сертификата.
Вторая проблема, сгорание остатка, требовала отдельного подхода.
Был добавлен обработчик события создания заказа, который выполняет следующую логику:
Чтобы всё это работало как единый механизм, был написан собственный класс, наследующий оригинальный класс купонов Битрикса.
В дочернем классе были переопределены методы:
Привязки правил к купону.
Получения актуального остатка.
Добавлена логика перепривязки нового правила при частичном списании.
На этом этапе мы получили полностью рабочий функционал подарочных сертификатов, который:
Теперь сертификат ведёт себя как настоящий электронный кошелёк, а не как разовый промокод. Интеграция с заказами работает «из коробки», без дополнительных доработок на стороне пользователя.
После того как была готова основная логика работы сертификатов, встала задача организовать две связанные вещи:
Механизм работы:
Здесь соединяются два предыдущих этапа в единый процесс.
1. Создание черновика
2. Обработка оплаты
Платёжная система обрабатывает транзакцию.
Было реализовано два сценария получения данных об оплате:
3. Реакция на статус платежа
Успешная оплата:
Отмена или ошибка:
Доставка сертификата получателю:
При успешной оплате реализовали двухстороннюю систему уведомлений:
1. Уведомление получателя
На указанную в конструкторе электронную почту уходит письмо, которое содержит:
2. Уведомление отправителя
Пользователю, заказавшему сертификат, также приходит уведомление об успешной доставки сертификата пользователю
По итогам этапа разработан механизм, который:
Заключительным этапом разработки стала необходимость дать пользователю инструмент для управления своим сертификатом: контроль остатка, отслеживание срока действия и возможность восстановить утерянный код.
Ключевая сложность этого этапа заключалась в том, что подарочный сертификат не привязан к аккаунту получателя.
Это означает, что:
Было принято решение реализовать интерфейс с двухфакторной проверкой в личном кабинете, который работает по следующей логике:
Данный подход позволяет обезопасить пользователя, если злоумышленник узнает email, он не сможет получить данные без доступа к почте.
Итогами этапа стал реализованный функционал получения данных о сертификате пользователем без привязки сертификатов к конкретному аккаунту. Теперь пользователь знает, сколько средств осталось на сертификате, когда они истекают, и может восстановить код при необходимости.
По итогам всей разработки мы получили гибкий, масштабируемый и полностью интегрированный в экосистему 1С-Битрикс модуль подарочных сертификатов, который работает как единый слаженный механизм – от создания в конструкторе до использования в реальных заказах.
Главное преимущество решения в том, что ядро платформы не переписывалось. Вместо этого расширили штатный механизм купонов, добавив собственное правило работы с корзиной, которое позволяет списывать средства частично, с сохранением остатка. Теперь сертификат ведет себя как настоящий электронный кошелек, а не как разовый промокод.
Особое внимание уделили надёжности: механизм предварительного сохранения данных до оплаты гарантирует, что ни один сертификат не потеряется, даже если платёжная система ответит с задержкой. А двухсторонняя система уведомлений делает процесс максимально прозрачным и удобным для обеих сторон.
Для пользователей реализован безопасный интерфейс получения информации о сертификате. Благодаря двухфакторной проверке через email, каждый может в любой момент узнать информацию сертификата, при этом данные защищены от несанкционированного доступа.
В итоге мы получили полностью автоматизированное решение, которое не требует ручного контроля, легко масштабируется и работает на нативном ядре Битрикс – а значит, будет служить долго и без проблем с обновлениями.