Автоматизация уведомлений о поступлении товара: настройка в 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Автоматизация уведомлений о поступлении товара: настройка в 1С-Битрикс
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1359
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    947
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    694
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    832
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    732
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1075

Настройка триггера поступления товара на склад: автоматическое уведомление в 1С-Битрикс

Представьте: товар закончился, десятки пользователей нажали «Уведомить о поступлении», склад пополнился, но никто не получил письма. Причина — отсутствие связи между событием пополнения склада и списком ожидающих. В этой статье разберём, как настроить триггер поступления товара на склад в 1С-Битрикс: от простого каталога до многоскладского учёта с интеграцией 1С. Мы реализовали такие механизмы на 30+ проектах — расскажем о типичных ошибках и оптимальных решениях. По данным официальной документации Битрикс, событие OnProductUpdate — ключевой инструмент для отслеживания изменений остатков. Но его одного недостаточно: нужно грамотно обработать подписки и многоскладскую логику. Наш опыт показывает: правильная реализация сокращает время реакции на поступление товара в 3 раза по сравнению с ручной проверкой.

Как работает складской учёт в Битрикс?

В Битрикс остатки товаров живут в двух местах в зависимости от конфигурации. В простом каталоге (без складского учёта) используется поле CATALOG_QUANTITY в таблице b_catalog_product. Обновляется напрямую через CCatalogProduct::Update() или через обмен с 1С. В многоскладском учёте (модуль catalog + склады) данные хранятся в таблице b_catalog_store_product с полями PRODUCT_ID, STORE_ID, AMOUNT. Общий остаток агрегируется. При обмене с 1С через CommerceML данные пишутся в b_catalog_store_product. Стандартный обработчик изменения остатка — OnProductUpdate в модуле catalog. Он срабатывает при любом изменении записи в b_catalog_product, включая количество. Однако для многоскладского учёта этого недостаточно — событие не отслеживает изменения по отдельным складам. Сравнение простое: обработчик OnProductUpdate работает мгновенно, но только для общего остатка, а агент (проверка каждые 5 минут) охватывает все склады, но с задержкой.

Вот пример базового обработчика:

AddEventHandler('catalog', 'OnProductUpdate', function($id, $fields) {
    if (isset($fields['QUANTITY']) && $fields['QUANTITY'] > 0) {
        // Товар поступил на склад — была нулевая позиция
        checkAndNotifyWaitlist($id);
    }
});

Проблема: OnProductUpdate срабатывает при любом изменении продукта, не только при пополнении склада. Чтобы отфильтровать именно событие «появился из нуля», нужно сравнивать предыдущее значение. До PHP-события данные ещё в БД, поэтому читаем старое значение в OnBeforeProductUpdate:

AddEventHandler('catalog', 'OnBeforeProductUpdate', function($id, &$fields) {
    $old = \Bitrix\Catalog\ProductTable::getByPrimary($id, ['select' => ['QUANTITY']])->fetch();
    $fields['_OLD_QUANTITY'] = (float)($old['QUANTITY'] ?? 0);
});

Почему стандартный обработчик не подходит для многоскладского учёта?

При многоскладском учёте событие OnProductUpdate не срабатывает при изменении b_catalog_store_product. Для складских операций нужно подписаться на события модуля catalog более глубокого уровня — либо использовать хук после записи документа складского учёта через \Bitrix\Catalog\Document\DocumentTable. Альтернативный подход: агент, который каждые 5 минут проверяет b_catalog_store_product на появление ненулевых остатков по товарам из листа ожидания. Менее элегантно, но работает стабильнее при нестандартных схемах обновления остатков (например, при прямом UPDATE через 1С-коннектор). По нашему опыту, агент справляется с нагрузкой в 90% случаев, а обработчик документов реагирует в 10 раз быстрее, но требует более аккуратной реализации.

Сравнение подходов: агент vs обработчик документов

Параметр Агент Обработчик документов
Реакция на изменения Задержка до 5 минут Мгновенная
Нагрузка на БД Периодические запросы Только при изменениях
Сложность реализации Низкая Средняя
Надёжность при массовых обновлениях Высокая Высокая
Рекомендация Для нестандартных обновлений Для стандартных операций

Как хранить подписки на поступление?

Модуль catalog не имеет встроенного механизма «уведомить о поступлении». Нужна собственная таблица:

CREATE TABLE bl_stock_notify (
    id          SERIAL PRIMARY KEY,
    product_id  INT NOT NULL,
    user_id     INT,
    email       VARCHAR(255) NOT NULL,
    created_at  TIMESTAMP DEFAULT NOW(),
    notified_at TIMESTAMP,
    UNIQUE (product_id, email)
);

Форма на сайте пишет в эту таблицу. Уникальный ключ (product_id, email) защищает от дублей при повторных подписках.

Обработчик пополнения

function checkAndNotifyWaitlist(int $productId): void
{
    $connection = \Bitrix\Main\Application::getConnection();
    $waitlist = $connection->query(
        "SELECT * FROM bl_stock_notify WHERE product_id = {$productId} AND notified_at IS NULL"
    )->fetchAll();

    if (empty($waitlist)) {
        return;
    }

    $product = \CIBlockElement::GetByID($productId)->GetNextElement();
    $name    = $product->GetField('NAME');
    $url     = $product->GetField('DETAIL_PAGE_URL');

    foreach ($waitlist as $row) {
        \Bitrix\Main\Mail\Event::send([
            'EVENT_NAME' => 'STOCK_ARRIVED',
            'LID'        => SITE_ID,
            'C_FIELDS'   => [
                'EMAIL'        => $row['email'],
                'PRODUCT_NAME' => $name,
                'PRODUCT_URL'  => 'https://' . $_SERVER['SERVER_NAME'] . $url,
            ],
        ]);

        $connection->queryExecute(
            "UPDATE bl_stock_notify SET notified_at = NOW() WHERE id = {$row['id']}"
        );
    }
}

Сравнение подходов: простой каталог vs многоскладской учёт

Параметр Простой каталог Многоскладской учёт
Событие изменения остатка OnProductUpdate Требуется агент или обработчик документов
Таблица остатков b_catalog_product b_catalog_store_product
Сложность реализации Низкая Средняя
Время настройки 1-2 дня 3-5 дней
Надёжность при массовых обновлениях Высокая Требует дополнительной синхронизации

Что входит в работу: deliverables

  • Разработка и установка обработчиков OnBeforeProductUpdate и OnProductUpdate с проверкой перехода «0 → N».
  • Создание таблицы bl_stock_notify и интеграция формы подписки на сайте.
  • Настройка почтового шаблона STOCK_ARRIVED в административном разделе.
  • Для многоскладской конфигурации — реализация агента или обработчика документов склада.
  • Логика частичного поступления: выбор стратегии (уведомить всех или по очереди).
  • Документация по доступам и тестирование на staging-окружении.
  • Поддержка в течение 14 дней после запуска.

Процесс работы

  1. Аналитика: изучаем текущую конфигурацию Битрикс, схему обмена с 1С, нагрузку на базу.
  2. Проектирование: выбираем оптимальный метод (обработчики или агент), согласуем логику очереди уведомлений.
  3. Реализация: пишем код, создаём SQL-таблицу, настраиваем почтовые события.
  4. Тестирование: проверяем на копии каталога, имитируем поступление товара, отслеживаем отправку писем.
  5. Деплой и мониторинг: переносим на боевой сервер, логируем первые срабатывания.
Типичные ошибки при самостоятельной настройке
  • Неправильная фильтрация события: отправка уведомлений при любом изменении товара, а не только при появлении из нуля.
  • Отсутствие уникального ключа в таблице подписок — дубли писем.
  • Игнорирование многоскладской архитектуры — уведомления не приходят при пополнении на конкретном складе.
  • Отсутствие обработки частичного поступления: если пришло меньше единиц, чем подписчиков.

Эти проблемы легко избежать, следуя описанной методике.

Сроки и стоимость

Ориентировочные сроки — от 2 до 10 рабочих дней в зависимости от сложности. Стоимость рассчитывается индивидуально после анализа вашей конфигурации. Свяжитесь с нами для предварительной оценки — мы гарантируем прозрачный результат и поддержку после внедрения. Получите консультацию — мы подберём оптимальное решение под вашу схему учёта. Наш опыт в этой области — более 30 проектов по автоматизации уведомлений на Битрикс.

Что включает профессиональная установка 1С-Битрикс

Мы начинаем установку 1С-Битрикс с проверки innodb_buffer_pool_size. Дефолтное значение MySQL (128 МБ) — приговор для интернет-магазина с каталогом на 10 000+ товаров. Мы ставим 70–80% от доступной RAM на выделенном сервере, 50% на VPS. Одна эта настройка ускоряет сайт в 2–3 раза по сравнению с дефолтом. Оценим ваш проект за один день — получите консультацию. Обращайтесь, чтобы заказать установку под ключ с гарантией производительности.

Как выбрать хостинг и редакцию для установки 1С-Битрикс?

BitrixVM — виртуальная машина с предустановленным стеком: nginx + Apache, PHP-FPM, MySQL/MariaDB, Sphinx, Push‑сервер. Для VPS — лучший старт. Всё уже сконфигурировано под Битрикс, включая OPcache, логротацию и firewall. Управление через веб‑панель на порту 8890.

VPS/VDS — золотая середина. Минимальная конфигурация для среднего интернет‑магазина: 2 vCPU, 4 ГБ RAM, SSD. Оптимальная: 4 vCPU, 8 ГБ RAM. ОС: Ubuntu 22.04 или Debian 12. Если не BitrixVM — настраиваем стек вручную под задачу. Виртуальный хостинг — только для визиток и лендингов. Требования: PHP 8.0+, MySQL 5.7+ / MariaDB 10.0+, 512 МБ RAM, .htaccess. Хостинг‑партнёры 1С-Битрикс — гарантия совместимости. Выделенный сервер — для highload. Типичная архитектура: веб‑сервер отдельно, база данных отдельно, Redis/Memcached отдельно. На редакции «Энтерпрайз» — веб‑кластер с балансировщиком. Облако (Yandex Cloud, VK Cloud, Selectel) — когда нагрузка скачет: распродажи, сезонные пики. Автомасштабирование через Managed Kubernetes или просто вертикальное масштабирование VM.

Выбор редакции — не менее важный шаг. Частая ошибка: берут «Малый бизнес» для магазина, который через полгода вырастает до B2B с оптовыми ценами и тремя складами. Переход на «Бизнес» — доплата разницы, данные не теряются, но лучше предусмотреть заранее. Наши специалисты подберут редакцию под текущие задачи и с запасом на рост. Например, лицензия «Бизнес» (около 35 000 ₽) окупается за счёт мультисклада и обмена с 1С, а неправильный выбор приводит к потере до 30 000 ₽ ежемесячно на избыточных ресурсах.

Редакция Для кого Ключевое ограничение
Старт Визитки, лендинги Нет инфоблоков 2.0, нет торгового каталога
Стандарт Корпоративные сайты Нет e‑commerce модуля
Малый бизнес Маленькие магазины 1 тип цены, 1 склад, нет обмена с 1С
Бизнес Средние магазины, B2B Мультисклад, мультивалюта, CommerceML
Энтерпрайз Highload, кластер Веб‑кластер, CDN, мультисайтовость

Какие настройки сервера критичны для 1С-Битрикс?

Веб‑сервер и PHP

nginx как reverse proxy + Apache (mod_php) или nginx + PHP-FPM напрямую. Второй вариант экономит память — Apache не нужен. Но некоторые модули Битрикс используют .htaccess, поэтому для совместимости иногда оставляем Apache. Конфигурация nginx: fastcgi_read_timeout 300 — для долгих операций (импорт из 1С), client_max_body_size 1024m — загрузка больших файлов. Закрываем доступ к .settings.php, .settings_extra.php, bitrix/.settings.php — там пароли к базе. Rewrite‑правила из urlrewrite.php — Битрикс сам генерирует, но при nginx + PHP-FPM нужно продублировать. PHP 8.0–8.2 с расширениями: mbstring, curl, gd, xml, json, opcache, redis/memcached. Ключевые настройки php.ini: opcache.memory_consumption=256, opcache.max_accelerated_files=20000, max_execution_time=300, memory_limit=512M, upload_max_filesize=100M, post_max_size=128M.

База данных и кэширование

MySQL/MariaDB. Ключевые параметры my.cnf: innodb_buffer_pool_size — 70–80% RAM, innodb_log_file_size=256M, tmp_table_size=256M, max_heap_table_size=256M, thread_pool_size — по количеству ядер CPU. Кодировка utf8mb4 обязательно, иначе эмодзи и спецсимволы ломаются. Redis предпочтительнее Memcached для Битрикс — поддерживает persistent connections и более надёжен. Настраиваем в .settings_extra.php:

'cache' => ['value' => ['type' => ['class_name' => '\\Bitrix\\Main\\Data\\CacheEngineRedis']]]
'session' => ['value' => ['mode' => 'default', 'handlers' => ['general' => ['type' => 'redis']]]]

SSL, почта и cron

SSL — Let's Encrypt через certbot в 90% случаев. Редирект HTTP → HTTPS (301), HSTS, TLS 1.2/1.3, OCSP Stapling. В Битрикс переключаем на HTTPS в настройках главного модуля. Почта: отказываемся от mail() — подключаем SMTP (Яндекс.Почта для домена, Mail.ru для бизнеса). Обязательно настраиваем SPF, DKIM, DMARC. Без SPF письма уходят в спам. Тестируем доставляемость через mail‑tester.com — оценка 9+/10. Cron: агенты Битрикс переводим на системный cron — * * * * * /usr/bin/php /var/www/bitrix/modules/main/tools/cron_events.php. На cron вешаем обмен с 1С (15–60 мин), поисковую переиндексацию, бэкапы (mysqldump + rsync, ротация 7+4), очистку временных файлов.

Безопасность и администрирование

Файловая система: владелец www-data, директории 755, файлы 644, upload 775. nginx блокирует доступ к файлам конфигурации. Включаем Проактивную защиту Битрикс — WAF, контроль активности (блокировка после 5 неудачных попыток), проверку целостности ядра. Для админ‑панели: двухфакторная аутентификация через Google Authenticator или OTP, ограничение доступа по IP через nginx для параноиков.

Сколько времени занимает установка 1С-Битрикс и настройка?

Задача Срок
Установка на виртуальный хостинг 2–4 часа
Установка на VPS с настройкой стека 1–2 дня
Установка на dedicated с проектированием архитектуры 2–5 дней
SSL + почта + cron + безопасность 1–2 дня
Настройка бэкапов и мониторинга 0.5–1 день

Проверка после установки (пошаговый чек‑лист)

  1. Монитор производительности (/bitrix/admin/perfmon_panel.php) — целимся в 30+ баллов. Ниже 20 — есть серьёзные проблемы с конфигурацией.
  2. Проверка системы — автоматическая проверка всех параметров. Красные пункты — исправляем обязательно, жёлтые — по ситуации.
  3. Сканер безопасности — проверка на типичные уязвимости.
  4. PageSpeed Insights — TTFB < 200мс на VPS, LCP < 2.5с.
  5. Тестовый обмен с 1С — если планируется интеграция, проверяем CommerceML‑обмен до запуска.

Дополнительно проверяем версии ПО, настройки кэширования, работу cron, SSL‑сертификат, SPF/DKIM/DMARC, права доступа, удаление дефолтных пользователей и страниц. Для проектов с 54‑ФЗ убеждаемся, что настроена фискализация через ОФД‑провайдера.

Что входит в работу (deliverables)

  • Полностью настроенный сервер под 1С-Битрикс с оптимизацией MySQL, PHP, nginx.
  • Установленная и активированная лицензия нужной редакции.
  • SSL‑сертификат, почтовые настройки, cron и бэкапы.
  • Документация: все параметры конфигурации, доступы, cron‑задачи.
  • Обучение контент‑менеджера: как заходить в админку, добавлять товары, загружать изображения.
  • Поддержка после установки в течение 30 дней — консультации по настройкам.

Почему стоит доверить установку профессионалам?

Неправильная установка — потеря времени и денег. Мы видели проекты, где магазин на «Старте» не мог выдержать 50 посетителей, потому что не был настроен innodb_buffer_pool_size. После переноса на VPS с правильной конфигурацией сайт «полетел». Неправильная конфигурация может обходиться в 30 000 ₽ ежемесячно из‑за избыточного потребления ресурсов. Вы получаете готовую архитектуру, которая масштабируется. Закажите установку 1С-Битрикс под ключ — и получите надёжную платформу для роста бизнеса. Свяжитесь с нами — рассчитаем стоимость под ваш проект. Опыт более 7 лет, реализовано 120+ проектов на Битрикс, включая highload‑магазины с миллионными каталогами. Обращайтесь — мы поможем настроить Битрикс под ваш проект.