Технические данные
- Опубликовано:
- 10.04.2025
- Версия:
- 1.0.0
- Установлено:
- Менее 50 раз
- Подходящие редакции:
- «Малый бизнес», «Бизнес»
- Адаптивность:
- Нет
- Поддержка Композита:
- Нет
- Совместимо с Сайты24
- Нет
- Совместимо с PHP 8.1
- Да
Пользовательское соглашение
Описание
Модуль «Расчет даты доставки» позволяет рассчитать и вывести дату доставки товаров в карточку товара или анонс товара в каталоге для различных регионов и городов в зависимости от заданных настроек.
В настройках модуля предусмотрена возможность указать время доставки (в днях) вручную для регионов и городов России для всего каталога, либо для какой-то группы товаров каталога.
Работа модуля «Расчет даты доставки» задействует функционал модуля «Интернет-магазин», который недоступен в редакциях «Старт» и «Стандарт».
Для определения местоположения пользователя используется встроенный функционал 1С-Битрикс, что позволяет подключать различные сервисы геолокации без внесения каких-либо изменений в работу модуля. В состав продукта «1С-Битрикс:Управление сайтом» включен сервис геолокации «Sypex Geo», который предоставляет бесплатно и без регистрации 10 000 запросов в месяц.
Модуль включает два компонента, один позволяет вывести на страницу только дату доставки в указанном формате, второй – дату и город доставки с возможностью изменить местоположение пользователя.
Требования для работы модуля:
- PHP версии 8.1 или новее
- Редакция «1С-Битрикс: Управление сайтом» не ниже «Малый бизнес»
Модуль устанавливается штатными средствами 1С-Битрикс.
При корректной установке модуля в Административном разделе 1С-Битрикс станет доступен раздел «DOBROsite».
Ручная настройка сроков доставки
Настройка сроков доставки модуля вручную осуществляется в Административном разделе на странице DOBROsite > Расчет даты доставки > Ручная настройка сроков доставки.

На вкладке «Настройки по умолчанию» определяется время доставки по умолчанию для всех товаров всех каталогов сайта.

Чтобы изменить время доставки по умолчанию в какой-либо регион или город России, необходимо добавить его в таблицу «Сроки доставки в регионы и города России» с помощью кнопки «Добавить Регион / Город», заполнить количество дней доставки и сохранить настройки.

На дополнительных вкладках можно задать время доставки для определенного каталога и/или группы товаров из определенного каталога.
Для добавления вкладки, необходимо заполнить произвольное название и выбрать каталог товаров в соответствующих полях вкладки «+».
После этого станут доступны дополнительные параметры вкладки: тип товаров и фильтр товаров в формате JSON. Эти параметры предназначены для формирования выборки товаров/ТП из указанного каталога, для которых будут применены параметры доставки, указанные на этой вкладке.
Параметр «Тип товаров» определяет, к какому типу элементов будет применен фильтр.
- Простой товар – будут выбраны только простые элементы/товары каталога, удовлетворяющие условиям фильтра в формате JSON.
- Товар с предложениями – будут выбраны все ТП, которые принадлежат товарам, удовлетворяющим условиям фильтра в формате JSON.
- Торговые предложения – будут выбраны все ТП, удовлетворяющие условиям фильтра в формате JSON.
Для построения фильтра в формате JSON доступен визуальный конструктор, им можно воспользоваться, кликнув на кнопку «Конструктор фильтра».
В конструкторе фильтр формируется из одного или нескольких блоков логики, каждый из которых содержит одно или несколько условий. В системе 1С-Битрикс можно использовать два вида логики: И и ИЛИ.
Логика И позволяет выбрать только те товары, которые удовлетворяют сразу всем условиям блока. Цвет блока – зеленый. Блок И в фильтре может быть только один и должен содержать хотя бы одно условие.
Логика ИЛИ позволяет выбрать товары, которые соответствуют хотя бы одному из условий, например, товары одного из указанных брендов, или товары только определенных разделов каталога. Цвет блока – синий. В фильтре может быть несколько блоков ИЛИ, каждый из которых должен содержать хотя бы два условия.
Между собой все блоки фильтра объединяются логикой И.

Каждое условие блока должно содержать свойство каталога, по которому будет производиться фильтрация товаров, оператор (больше, меньше, равно и т.д.) и значение свойства. В зависимости от значения параметра «Тип товаров» список доступных свойств будет отличаться. Для простого товара и товара с предложениями доступны все свойства каталога, для торгового предложения – свойства инфоблока, содержащего ТП.

Каждое условие может содержать только одно значение свойства.
Если структура фильтра должна быть сложнее, чем позволяет сформировать конструктор, то параметр «Фильтр товаров в формате JSON» может быть заполнен вручную. Для этого нужно составить массив фильтра $arFilter и сконвертировать его в JSON-формат. Подробнее о массиве $arFilter можно узнать из документации 1С-Битрикс.
После сохранения настроек необходимо составить список элементов, к которым будут применены параметры доставки текущей вкладки. За это отвечает агент \Dobrosite\CalcDeliveryDate\Main::agentSaveProductList(). Статус формирования списка элементов отображается в параметре «Список товаров». Доступны два значения:
- Ожидает обновления – список товаров еще не составлен или требует обновления.
- Обновлен [дата обновления] – список товаров актуален и не нуждается в обновлении.

Публикация даты доставки товара
В состав модуля входят два компонента, которые формируют строку с датой доставки согласно выполненным настройкам: «Дата доставки» и «Город и дата доставки». Компоненты находятся в группе DOBROsite Tools > Расчет даты доставки.

Примечание: если компоненты не отображаются, необходимо обновить панель компонентов.

Простой компонент «Дата доставки» (dobrosite:CalcDeliveryDate.DeliveryDate)
Компонент «Дата доставки» выводит строку с датой доставки товара согласно выполненным настройкам. Местоположение пользователя определяется автоматически. Смена местоположения пользователя не поддерживается.

Параметры компонента:
- ID элемента инфоблока (PRODUCT_ID) – идентификатор товара или ТП, для которого необходимо рассчитать дату доставки.
- Формат даты (DATE_FORMAT) – формат вывода даты доставки. Доступны следующие варианты:
- j M // 5 фев
- j F // 5 февраля
- j M Y // 5 фев 2025
- j F Y // 5 февраля 2025
- d-m-y // 05-02-25
- d.m.y // 05.02.25
- d-m-Y // 05-02-2025
- d.m.Y // 05.02.2025
- Y-m-d // 2025-02-05
- Y.m.d // 2025.02.05
- .default – простой шаблон, выводит дату доставки в указанном формате, стилистического оформления нет.
$APPLICATION->IncludeComponent( "dobrosite:CalcDeliveryDate.DeliveryDate", ".default", array( "PRODUCT_ID" => $productID, "COMPONENT_TEMPLATE" => ".default", "DATE_FORMAT" => "j F Y" ), $component ); |
Простой компонент «Город и дата доставки» (dobrosite: CalcDeliveryDate.DeliveryCityAndDate )
Компонент «Город и дата доставки» выводит строку с городом и датой доставки товара согласно выполненным настройкам. Местоположение пользователя определяется автоматически. В компонент включена возможность сменить местоположение пользователя, кликнув на город доставки.

Параметры компонента:
- ID элемента инфоблока (PRODUCT_ID) – идентификатор товара или ТП, для которого необходимо рассчитать дату доставки.
- Формат даты (DATE_FORMAT) – формат вывода даты доставки. Доступны следующие варианты:
- j M // 5 фев
- j F // 5 февраля
- j M Y // 5 фев 2025
- j F Y // 5 февраля 2025
- d-m-y // 05-02-25
- d.m.y // 05.02.25
- d-m-Y // 05-02-2025
- d.m.Y // 05.02.2025
- Y-m-d // 2025-02-05
- Y.m.d // 2025.02.05
Шаблоны компонента:
- .default – простой шаблон, выводит город и дату доставки в указанном формате. Наименование города выполнено в виде ссылке, при клике на которую открывается модальное окно с функцией поиска города по подстроке. Стилистическое оформление минимальное.

Код подключения:
$APPLICATION->IncludeComponent( "dobrosite:CalcDeliveryDate.DeliveryCityAndDate", ".default", array( "COMPONENT_TEMPLATE" => ".default", "DATE_FORMAT" => "j F", "PRODUCT_ID" => $productID, ), $component ); |
Геолокация
Модуль «Расчет даты доставки» использует встроенный функционал продукта «1С-Битрикс: Управление сайтом» для определения местоположения пользователя по его IP-адресу. Настройка сервисов геолокации осуществляется на странице Административного раздела Настройки > Настройки продукта > Геолокация.

При определении местоположения пользователя данные сохраняются в COOKIE сроком на одни сутки. Если на сайте используются какие-либо другие инструменты и/или сервисы для определения местоположения пользователя, то их можно использовать в модуле «Расчет даты доставки». Для этого данные нужно сохранить в переменную COOKIE с именем «DOBROSITE_GEOIPDATA» в виде JSON-строки.
Структура переменной DOBROSITE_GEOIPDATA:
array( 'COUNTRY' => '', // Наименование страны 'REGION_ID' => '', // Идентификатор региона в формате модуля 'REGION_NAME' => '', // Наименование региона 'CITY_ID' => '', // Идентификатор города в формате модуля 'CITY_NAME' => '', // Наименование города ); |
Пример сохранения данных в переменную DOBROSITE_GEOIPDATA
if(\Bitrix\Main\Loader::includeModule('dobrosite.calcdeliverydate')){ $countryName = 'Россия'; $regionName = 'Московская область'; $regionID = \Dobrosite\CalcDeliveryDate\Main::getRegionID($regionName, 'REGION'); $cityName = 'Москва'; $cityID = \Dobrosite\CalcDeliveryDate\Main::getRegionID($cityName, 'CITY'); $data = array( 'COUNTRY' => $countryName, 'REGION_ID' => $regionID, 'REGION_NAME' => $regionName, 'CITY_ID' => $cityID, 'CITY_NAME' => $cityName, ); // Сохранение местоположения пользователя в COOKIE на 1 сутки \Dobrosite\CalcDeliveryDate\Main::saveUserLocation($data); } |