IT Заметки разработчика
Делюсь опытом в разработке высоконагруженных платформ, интеграции 1С, управлении командой и архитектуре e-commerce систем.
Отключение обработчиков событий [1С-Битрикс]
Техника управления обработчиками событий в 1С-Битрикс с помощью статического флага класса для условного отключения обработчика.
Отработка событий *::Add, *::Update, *::Delete
Обход ограничения на срабатывание событий в методах 1С-Битрикс через прямой SQL-запрос для обновления полей пользователя.
Разделы инфоблока в виде массива 1С-Битрикс
Два способа получить разделы инфоблока 1С-Битрикс: плоский массив с метаданными иерархии и вложенный массив с деревом подразделов.
Замена CUser::GetParam()
Альтернатива встроенному методу CUser::GetParam() — функция getUserParams() с поддержкой выборки конкретного поля и получения данных другого пользователя по ID.
1С-Битрикс: добавить логотип к службе доставки CSaleDelivery::Add()
Как передать изображение-логотип при создании пользовательской службы доставки через CSaleDelivery::Add() с помощью CFile::MakeFileArray().
Архитектура «D7»: модули, классы, жизненный цикл, презентация
Обзор архитектуры нового ядра D7 в 1С-Битрикс: структура модулей, жизненный цикл, классы и отличия от старого API.
Лайфхак для CUser::Register() [bitrix api]
Как зарегистрировать пользователя через CUser::Register() без отправки письма, используя несуществующий ID сайта в седьмом параметре.
Проверка, пустая ли корзина у пользователя [bitrix api]
Функция на PHP для проверки, пуста ли корзина текущего пользователя в Bitrix с помощью CSaleBasket::GetList().
Особенность Add2BasketByProductID() [bitrix api]
Почему Add2BasketByProductID() добавляет в корзину меньше товаров, чем указано — зависимость от настроек отслеживания наличия на складе.
CIBlockElement::SetPropertyValues()
Важная особенность CIBlockElement::SetPropertyValues() — при обновлении нужно передавать все свойства элемента, иначе не переданные будут сброшены.