DATE_CREATE ----- name ---- city
01.01.2022 ----- 0001 ---- Москва
01.01.2022 ----- 0002 ---- Москва
03.01.2022 ----- 0003 ---- Москва
01.01.2022 ----- 0004 ---- СПБ
01.01.2022 ----- 0005 ---- СПБ
05.01.2022 ----- 0006 ---- Пермь
06.01.2022 ----- 0007 ---- Пермь
07.01.2022 ----- 0007 ---- Пермь
Необходимо узнать сколько элементов ИБ с значением свойства city Москва были созданы в диапазоне дат И сколько с значением свойства city Пермь были созданы в диапазоне дат
Отлавливаю событие с init.php. Необходимо при определенных условиях ( цена равняется n ), при сохранении товара выбрасывать админу сообщение и прервать сохранение товара (по принципу "обязательного поля"). Раньше для этого я использовал:
Код
global $APPLICATION;
$APPLICATION->throwException("Ошибка...");
return false;
Теперь переписываю на d7
Код
use Bitrix\Main\Entity;
$eventManager = Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("catalog", "Bitrix\Catalog\Model\Price::OnBeforeUpdate", ["ActionPrice", "handlerOnPriceUpdate"]);
class ActionPrice {
public static function handlerOnPriceUpdate(Bitrix\Catalog\Model\Event $event) {
$data = $event->getParameter("fields");
$newPrice = (int)$data['PRICE'];
if ($newPrice>10000) {
$result = new Entity\EventResult;
$result->addError(new Entity\EntityError('Невозможно обновить запись'));
return $result;
}
}
}
Текст ошибки дефолтный "Ошибка Ошибка обновления параметров цены с кодом 35", а не тот что я передаю. Подскажите что я делаю не так?
Как я понял событие Price::OnBeforeUpdate срабатывает всегда, вне зависимости от изменения цены. Поэтому, для того чтобы отследить изменение цены необходимо сначала отдельным запросом получить текущую цену, а затем сравнить ее с той что пришла в $data.
Может я что-то не так понял, поправьте если что...
Это устаревшее событие. Я включал "Включить поддержку устаревших событий" в каталоге, Ровно та-же история "обработчик срабатывает при каждом сохранении товара" ПС. Может я что с настройками каталога напутал?
Добрый день. Есть инфоблок "Каталог", "Является торговым каталогом". Мне необходимо отловить событие изменения цены товара. Я использую обработчик
Код
$eventManager = \Bitrix\Main\EventManager::getInstance();
$eventManager->addEventHandler("catalog", "\Bitrix\Catalog\Price::onBeforeUpdate", ["ActionPrice", "handlerOnPriceUpdate"]);
class ActionPrice {
public function handlerOnPriceUpdate(Entity\Event $event) {
$result = new Entity\EventResult;
$data = $event->getParameter("fields");
AddMessage2Log(print_r($data, true));
}
}
Проблема в том этот обработчик срабатывает при каждом сохранении товара, вне зависимости была изменена цена или нет. При нажатии на кнопку Сохранить он срабатывает.
Мне необходимо отловить фактическое изменение цены
Добрый день. Помогите собрать конфигурацию с учетом данных из панели производительности. Дано: VPS CPU Cores - 6 Memory RAM - 24GB CentOS 7 Bitrix virtual appliance version 7.5.0 MySQL 5.7.34-37 Конфиг mysql настроился автоматически исходя из производительности сервера
Посещаемость сайта ~ 400k в месяц. Кривых кастомных компонентов нет.
Производительность конфигурации битрикс
Конфигурация
61.94
30
Среднее время отклика
0.0161
0.0330
секунд
Процессор (CPU)
196.6
9.0
миллионов операций в секунду
Файловая система
2 019.8
10 000
файловых операций в секунду
Почтовая система
0.1124
0.0100
время отправки одного письма (в секундах)
Время старта сессии
0.0007
0.0002
секунд
Конфигурация PHP
оптимально
оптимально
База данных MySQL (запись)
2 480
5 600
количество запросов на запись в секунду
База данных MySQL (чтение)
11 139
7 800
количество запросов на чтение в секунду
База данных MySQL (изменение)
2 576
5 800
количество запросов на изменение в секунду
В логах mysql периодически записи
Код
2021-12-10T04:53:25.505838Z 18608 [Note] Got an error reading communication packets
2021-12-10T04:58:25.511744Z 18999 [Note] Got an error reading communication packets
2021-12-10T05:03:13.579022Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 6152ms. The settings might not be optimal. (flushed=105, during the time.)
2021-12-10T05:03:25.520937Z 19382 [Note] Got an error reading communication packets
2021-12-10T05:08:25.527947Z 19818 [Note] Got an error reading communication packets
Проблема с настройкой сервисов мониторинга, При обращении к системе мониторинга 403 Forbidden
Есть сайт, версия Управление сайтом 17.0.9 необходимо обновиться.
Установлена: BitrixVM7.5.0 PHP 7.4 из рез. копии был развернут сайт с префиксом dev, переведен в режиме Установка для разработки.
После Настройки > Инструменты > Проверка системы получили одобрение на обновление версии битрикс до актуальной. на последнем этапе установки получили ошибку "о невозможности разархивировать модуль landing_internals_site" В данный момент при входе в админ. часть получаю ошибку
Может кто сталкивался, знает как решить? Спасибо
Код
[Bitrix\Main\DB\SqlQueryException]
Mysql query error: (1054) Unknown column 'landing_internals_site.SMN_SITE_ID' in 'field list' (400)
SEL ECT
`landing_internals_site`.`ID` AS `ID`,
`landing_internals_site`.`TITLE` AS `TITLE`,
`landing_internals_site`.`SMN_SITE_ID` AS `SMN_SITE_ID`,
`landing_internals_site`.`TYPE` AS `TYPE`
FR OM `b_landing_site` `landing_internals_site`
WHERE `landing_internals_site`.`SMN_SITE_ID` in ('s1')
AND `landing_internals_site`.`DELETED` = 'N'
/home/bitrix/ext_www/dev..ru/bitrix/modules/main/lib/db/mysqliconnection.php:137
#0: Bitrix\Main\DB\MysqliConnection->queryInternal
/home/bitrix/ext_www/dev..ru/bitrix/modules/main/lib/db/connection.php:330
#1: Bitrix\Main\DB\Connection->query
Суть задачи. По событию "OnAfterIBlockElementUpdate" скрипт стучится на сторонний API через библиотеку CURL, выполняется и получает success или error. При error, данные об ошибке пишутся в log.txt Контент-менеджеру необходимо получать данные real time, идеально получать popup с ошибкой на экран. Может у кого-то есть опыт решения подобной задачи. Думал двигаться в сторону отложенных функций, в файле admin_header.php вызывать функцию,
Код
$APPLICATION->AddBufferContent('apiLog')
а в init.php в классе
Код
function apiLog() {
global $APPLICATION;
return '<sc ript data-skip-moving="true">'
.'console.log(data)'
.'</sc ript>';
};
только ничего не выходит. Подскажите может кто сталкивался с подобной проблемой и ее решением?
Как включить access.log для основного сайта (в папке www) в конфиге nginx
Все верно. В этой папке находятся логи. Только access.log пишется для доп. сайтов (находящихся в папке ext_www) и имеют вид /var/log/nginx/domen_access.log, а вот для основного сайта (он находится в папке www) логи не пишутся. Там есть файл /var/log/nginx/access.log но он пуст. Я так понимаю по дефолту для сайта из директории www логи access не пишутся, а если создавать новый сайт через интерфейс bitrixvm, то в конфиге nginx для данного сайта прописывается логирование. Как включить логи для основного сайта?
Как включить access.log для основного сайта (в папке www) в конфиге nginx
Суть вопроса: В каталоге на странице 20 элементов. Необходимо вместо одного элемента выводить рекламный баннер в случайном месте (каталог "плитка" 4х5). мое решение: Вывод в шаблоне компонента catalog.section template.php
Код
function randNumber() //вынес в init.php
{
return rand(1, 19);
};
<?$i=1?>
<?foreach ($arResult['ITEMS'] as $arItem) :?>
<article>/*контент*/</article>
<? if(randNumber() == $i): ?>//проблема с кэшем
<article>/*баннер $arResult["BANNER_LIST"]//проблема с кэшем*/</article>
<? endif; ?>
<?$i++;?>
<?endforeach?>
Код в result_modifier.php Получаю привязанный элемент раздела, передаю в GetList, выбираю один случайный элемент, сохраняю в $arResult, скармливаю в шаблон
Все работает как хотелось. Появилась вторая задача - "поднятые объекты" сортировать рандомно, последующие по дате на убывание. И тут я потерялся..... Подскажите возможно-ли в одном компоненте применить разные сортировки, в зависимости от свойства.
Ссылка на удаленный элемент, Необходимо после "удаления" элемента оставить на него ссылку
Может кто подскажет с чего начать. Нужно после продажи объекта оставлять на него ссылку с усеченным описанием, доступную только по прямому запросу в урл. План таков: 1. снимаем галку активность 2. ставим галку "продано" 3. далее пилим.......??? (где установить доп проверку?) Может кто подскажет как архитектурно правильно реализовать данное...?
Ошибка NS_ERROR_ILLEGAL_VALUE в умном фильтре в режиме ajax в firefox
Добрый день! Появляется ошибка NS_ERROR_ILLEGAL_VALUE после фильтрации в умном фильтре в режиме ajax только в firefox. Может кто сталкивался? Подскажите как лечить?
Проблемы с АвтоКомпозитом, Не работает композит в умном фильтре