Модуль «Расчет даты доставки» позволяет рассчитать и вывести дату доставки товаров в карточку товара или анонс товара в каталоге для различных регионов и городов в зависимости от заданных настроек.
В настройках модуля предусмотрена возможность указать время доставки (в днях) вручную для регионов и городов России для всего каталога, либо для какой-то группы товаров каталога.
Работа модуля «Расчет даты доставки» задействует функционал модуля «Интернет-магазин», который недоступен в редакциях «Старт» и «Стандарт».
Для определения местоположения пользователя используется встроенный функционал 1С-Битрикс, что позволяет подключать различные сервисы геолокации без внесения каких-либо изменений в работу модуля. В состав продукта «1С-Битрикс:Управление сайтом» включен сервис геолокации «Sypex Geo», который предоставляет бесплатно и без регистрации 10 000 запросов в месяц.
Модуль включает два компонента, один позволяет вывести на страницу только дату доставки в указанном формате, второй – дату и город доставки с возможностью изменить местоположение пользователя.
Требования для работы модуля:
- PHP версии 8.1 или новее
- Редакция «1С-Битрикс: Управление сайтом» не ниже «Малый бизнес»
<p>Модуль устанавливается штатными средствами 1С-Битрикс. </p><p> При корректной установке модуля в Административном разделе 1С-Битрикс станет доступен раздел «DOBROsite».</p><p><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/1.png" border="0" width="400" height="433" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/1.png" data-bx-onload="Y" /></p><p></p><p></p><p><b>Ручная настройка сроков доставки</b></p><p></p><p>Настройка сроков доставки модуля вручную осуществляется в Административном разделе на странице <i>DOBROsite > Расчет даты доставки > Ручная настройка сроков доставки</i>. </p><p></p><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/2.png" border="0" width="800" height="510" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/2.png" data-bx-onload="Y" /><br /><br />На вкладке «Настройки по умолчанию» определяется время доставки по умолчанию для всех товаров всех каталогов сайта.<p></p><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/3.png" border="0" width="800" height="685" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/3.png" data-bx-onload="Y" /><br /><br /><p>Чтобы изменить время доставки по умолчанию в какой-либо регион или город России, необходимо добавить его в таблицу «Сроки доставки в регионы и города России» с помощью кнопки «Добавить Регион / Город», заполнить количество дней доставки и сохранить настройки.</p><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/4.png" border="0" width="800" height="971" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/4.png" data-bx-onload="Y" /><br /><br />На дополнительных вкладках можно задать время доставки для определенного каталога и/или группы товаров из определенного каталога.<p></p><p>Для добавления вкладки, необходимо заполнить произвольное название и выбрать каталог товаров в соответствующих полях вкладки «+».</p><p><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/5.png" border="0" width="800" height="364" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/5.png" data-bx-onload="Y" /></p><p></p><p>После этого станут доступны дополнительные параметры вкладки: тип товаров и фильтр товаров в формате JSON. Эти параметры предназначены для формирования выборки товаров/ТП из указанного каталога, для которых будут применены параметры доставки, указанные на этой вкладке.</p><p><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/6.png" border="0" width="800" height="550" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/6.png" data-bx-onload="Y" /></p><p>Параметр «Тип товаров» определяет, к какому типу элементов будет применен фильтр.</p><p></p><ul><li><i>Простой товар</i> – будут выбраны только простые элементы/товары каталога, удовлетворяющие условиям фильтра в формате JSON.<br /></ul><ul><li><i>Товар с предложениями</i> – будут выбраны все ТП, которые принадлежат товарам, удовлетворяющим условиям фильтра в формате JSON.<br /></ul><ul><li><i>Торговые предложения</i> – будут выбраны все ТП, удовлетворяющие условиям фильтра в формате JSON.<br /></ul><p></p><p> Для построения фильтра в формате JSON доступен визуальный конструктор, им можно воспользоваться, кликнув на кнопку «Конструктор фильтра».</p><p>В конструкторе фильтр формируется из одного или нескольких блоков логики, каждый из которых содержит одно или несколько условий. В системе 1С-Битрикс можно использовать два вида логики: И и ИЛИ.</p><p><b><i>Логика И</i></b> позволяет выбрать только те товары, которые удовлетворяют сразу всем условиям блока. Цвет блока – зеленый. Блок И в фильтре может быть только один и должен содержать <u>хотя бы одно условие</u>.</p><p><b><i>Логика ИЛИ</i></b> позволяет выбрать товары, которые соответствуют хотя бы одному из условий, например, товары одного из указанных брендов, или товары только определенных разделов каталога. Цвет блока – синий. В фильтре может быть несколько блоков ИЛИ, каждый из которых должен содержать <u>хотя бы два условия</u>.</p><p>Между собой все блоки фильтра объединяются логикой И.</p><p></p><p></p><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/7.png" border="0" width="800" height="434" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/7.png" data-bx-onload="Y" /><br /><br />Каждое условие блока должно содержать <u>свойство каталога</u>, по которому будет производиться фильтрация товаров, <u>оператор </u>(больше, меньше, равно и т.д.) и <u>значение свойства</u>. В зависимости от значения параметра «Тип товаров» список доступных свойств будет отличаться. Для простого товара и товара с предложениями доступны все свойства каталога, для торгового предложения – свойства инфоблока, содержащего ТП.<br /><br /><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/8.png" border="0" width="800" height="378" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/8.png" data-bx-onload="Y" /><br /><br />Каждое условие может содержать только одно значение свойства.<br /><br />Если структура фильтра должна быть сложнее, чем позволяет сформировать конструктор, то параметр «Фильтр товаров в формате JSON» может быть заполнен вручную. Для этого нужно составить массив фильтра $arFilter и сконвертировать его в JSON-формат. Подробнее о массиве $arFilter можно узнать из <a href="https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php" target="_blank" >документации 1С-Битрикс</a>.<br /><br />После сохранения настроек необходимо составить список элементов, к которым будут применены параметры доставки текущей вкладки. За это отвечает агент <i>\Dobrosite\CalcDeliveryDate\Main::agentSaveProductList()</i>. Статус формирования списка элементов отображается в параметре «Список товаров». Доступны два значения:<br /><ul><li><b><i>Ожидает обновления</i></b> – список товаров еще не составлен или требует обновления.<br /><li><b><i>Обновлен [дата обновления]</i></b> – список товаров актуален и не нуждается в обновлении.<br /></ul><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/9.png" border="0" width="800" height="564" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/9.png" data-bx-onload="Y" /><br /><br /><br /><b>Публикация даты доставки товара</b><br /><br />В состав модуля входят два компонента, которые формируют строку с датой доставки согласно выполненным настройкам: «Дата доставки» и «Город и дата доставки». Компоненты находятся в группе <i>DOBROsite Tools > Расчет даты доставки</i>.<br /><br /><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/10.png" border="0" width="800" height="521" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/10.png" data-bx-onload="Y" /><br /><br /><b><i>Примечание:</i></b> если компоненты не отображаются, необходимо обновить панель компонентов.<br /><br /><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/11.png" border="0" width="800" height="519" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/11.png" data-bx-onload="Y" /><br /><br /><b><i>Простой компонент «Дата доставки» (dobrosite:CalcDeliveryDate.DeliveryDate)</i></b><br /><br />Компонент «Дата доставки» выводит строку с датой доставки товара согласно выполненным настройкам. Местоположение пользователя определяется автоматически. Смена местоположения пользователя не поддерживается.<br /><br /><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/12.png" border="0" width="800" height="605" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/12.png" data-bx-onload="Y" /><br /><br /><u><i>Параметры компонента:</i></u><br /><ul><li><i>ID элемента инфоблока (PRODUCT_ID) </i>– идентификатор товара или ТП, для которого необходимо рассчитать дату доставки.<br /><li><i>Формат даты (DATE_FORMAT)</i> – формат вывода даты доставки. Доступны следующие варианты:<br /></ul><p></p><ul><li> j M // 5 фев<br /><li> j F // 5 февраля<br /><li> j M Y // 5 фев 2025<br /><li> j F Y // 5 февраля 2025<br /><li> d-m-y // 05-02-25<br /><li> d.m.y // 05.02.25<br /><li> d-m-Y // 05-02-2025<br /><li> d.m.Y // 05.02.2025<br /><li> Y-m-d // 2025-02-05<br /><li> Y.m.d // 2025.02.05<br /></ul><p></p><i><u>Шаблоны компонента:</u></i><ul><li><i>.default </i>– простой шаблон, выводит дату доставки в указанном формате, стилистического оформления нет.<br /></ul><u><i>Код подключения:</i></u><br /><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre>$APPLICATION->IncludeComponent(
"dobrosite:CalcDeliveryDate.DeliveryDate",
".default",
array(
"PRODUCT_ID" => $productID,
"COMPONENT_TEMPLATE" => ".default",
"DATE_FORMAT" => "j F Y"
),
$component
);</pre></td></tr></table></div><br /><b><i>Простой компонент «Город и дата доставки» (dobrosite: CalcDeliveryDate.DeliveryCityAndDate )</i></b><br /><br />Компонент «Город и дата доставки» выводит строку с городом и датой доставки товара согласно выполненным настройкам. Местоположение пользователя определяется автоматически. В компонент включена возможность сменить местоположение пользователя, кликнув на город доставки.<br /><br /><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/13.png" border="0" width="800" height="537" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/13.png" data-bx-onload="Y" /><br /><br /><i><u>Параметры компонента:</u></i><br /><ul><li><i>ID элемента инфоблока (PRODUCT_ID)</i> – идентификатор товара или ТП, для которого необходимо рассчитать дату доставки.<br /><li><i>Формат даты (DATE_FORMAT)</i> – формат вывода даты доставки. Доступны следующие варианты:<br /></ul><ul><li> j M // 5 фев<br /><li> j F // 5 февраля<br /><li> j M Y // 5 фев 2025<br /><li> j F Y // 5 февраля 2025<br /><li> d-m-y // 05-02-25<br /><li> d.m.y // 05.02.25<br /><li> d-m-Y // 05-02-2025<br /><li> d.m.Y // 05.02.2025<br /><li> Y-m-d // 2025-02-05<br /><li> Y.m.d // 2025.02.05<br /></ul><br /><i><u>Шаблоны компонента:</u></i><br /><ul><li><i>.default</i> – простой шаблон, выводит город и дату доставки в указанном формате. Наименование города выполнено в виде ссылке, при клике на которую открывается модальное окно с функцией поиска города по подстроке. Стилистическое оформление минимальное.<br /></ul><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/14.png" border="0" width="800" height="378" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/14.png" data-bx-onload="Y" /><br /><br /><u><i>Код подключения:</i></u><br /><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre>$APPLICATION->IncludeComponent(
"dobrosite:CalcDeliveryDate.DeliveryCityAndDate",
".default",
array(
"COMPONENT_TEMPLATE" => ".default",
"DATE_FORMAT" => "j F",
"PRODUCT_ID" => $productID,
),
$component
);</pre></td></tr></table></div><br /><b>Геолокация<br /></b><br />Модуль «Расчет даты доставки» использует встроенный функционал продукта «1С-Битрикс: Управление сайтом» для определения местоположения пользователя по его IP-адресу. Настройка сервисов геолокации осуществляется на странице Административного раздела <i>Настройки > Настройки продукта > Геолокация</i>.<br /><br /><img src="https://dobro-site.ru/modules_images/calcDeliveryDate/15.png" border="0" width="800" height="296" data-bx-image="https://dobro-site.ru/modules_images/calcDeliveryDate/15.png" data-bx-onload="Y" /><br /><br />При определении местоположения пользователя данные сохраняются в COOKIE сроком на одни сутки. Если на сайте используются какие-либо другие инструменты и/или сервисы для определения местоположения пользователя, то их можно использовать в модуле «Расчет даты доставки». Для этого данные нужно сохранить в переменную COOKIE с именем «DOBROSITE_GEOIPDATA» в виде JSON-строки.<br />Структура переменной DOBROSITE_GEOIPDATA:<div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre>array(
"COUNTRY" => "", // Наименование страны
"REGION_ID" => "", // Идентификатор региона в формате модуля
"REGION_NAME" => "", // Наименование региона
"CITY_ID" => "", // Идентификатор города в формате модуля
"CITY_NAME" => "", // Наименование города
);</pre></td></tr></table></div>Для определения идентификатора региона в формате модуля следует использовать функцию <i>\Dobrosite\CalcDeliveryDate\Main::getRegionID($regionName, 'REGION')</i>, для определения идентификатора города - <i>\Dobrosite\CalcDeliveryDate\Main::getRegionID($cityName, 'CITY')</i>.<br /><br /><b><i>Пример сохранения данных в переменную DOBROSITE_GEOIPDATA</i></b><br /><div class="blog-post-code" title="Код"><table class="blogcode"><tr><td><pre>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);
}
</pre></td></tr></table></div><br /><br />
Запросы на техническую поддержку решения можно отправлять на <a href="mailto:support@dobrosite.com" target="_blank" >support@dobrosite.com</a> или через форму обратной связи на сайте <a href="https://dobrosite.com/" target="_blank" >dobrosite.com</a>