Ответы пользователя по тегу 1С-Битрикс
  • Как сделать запрет закрытия задачи, если есть подзадачи в Битрикс24?

    @Kontrael
    Этот пример вам не подойдет. В нем иллюстрируется добавление пункта меню в сделки.
    Файл init.php создается вручную в папке `/local/php_interface/`. Но прежде чем делать это, почитайте про него в курсе
    Бездумное использование этого файла может приводить к падению сайта в любом месте.
    Но в вашем случае, можно обойтись без него.
    В вашем случае алгоритм действий такой:
    1. Почитать про события.
    2. Вам нужны события задач
    Пример подключения обработчика события(это не готовый пример для вас, его нужно изменить под себя):
    \Bitrix\Main\EventManager::getInstance()->RegisterEventHandler(
        'tasks',
        'OnBeforeTaskUpdate',
        $this->MODULE_ID,
        '\MyCompany\Handlers\CTask',
        'OnBeforeTaskUpdate',
        "1"
    );

    Подробнее про 'RegisterEventHandler' тут
    Этот код можно выполнить в консоли, в админке. Но имейте ввиду, что удалять его нужно тоже выполнением кода или вручную в БД.
    3. В этом обработчике вам нужно определять, является ли задача родительской. Если да, то запрашивать ее дочерние задачи и смотреть, если ли среди них открытые. Если да, то отменять событие закрытия задачи.
    Список задач можно получить так
    Ответ написан
    Комментировать
  • Обновить события в Битрикс?

    @Kontrael
    При отправке писем используется метод Bitrix\Main\Mail\Event::send

    // D7
    use Bitrix\Main\Mail\Event;
    Event::send(array(
    "EVENT_NAME" => "NEW_USER",
    "LID" => "s1",
    "C_FIELDS" => array(
    "EMAIL" => "info@intervolga.ru",
    "USER_ID" => 42
    ),
    ));

    В котором указывается `LID` - это идентификатор сайта.
    Возможно, в вашем случае, дело в том, что новый сайт использует компоненты старого, где жестко прописан какой-нибудь `"LID" => "s1"`, как в примере выше.

    Если это не так, вам стоит подробнее описать ситуацию, при которой не происходит отправка.
    Ответ написан
    Комментировать
  • Как вывести свойства разделов в админке?

    @Kontrael
    У вас, скорее всего совместный тип просмотра разделов и элементов. Поставьте раздельный и нажмите на инфоблок, а не на элементы.
    И вот тут выберите значение.
    5f08676d225ab874129418.png
    Ответ написан
  • Почему REST API у 1C-Битрикс не принимает POST?

    @Kontrael
    Копайте в сторону редиректа, например в .htaccess. При редиректе, тело POST запроса теряется.
    Возможно, у вас редиректы для всех запросов без слэша на конце, на аналог со слэшем. Или "без www" на "c www"
    Ответ написан
  • Конфигурация сервера не соответствует! Где это настраивается?

    @Kontrael
    У вас должны быть установлены на сервере соответствующие расширения. Упоминание как и откуда их установить должно быть в описании модуля, который вы ставите.
    Если их нет, попробуйте поискать по названиям в сети или напишите разработчику модуля.
    Установка таких вещей происходит через ssh консоль сервера, если вы сталкиваетесь с этим впервые, то лучше доверить эту процедуру, кому-то с опытом.
    И судя по вашему вопросу, я не уверен, что вам нужно это расширение. В инфоблоках есть встроенный оптимизатор картинок, для превью и детальной.
    А для пользовательских свойств, можно использовать битриксовый метод сжатия: https://dev.1c-bitrix.ru/api_help/main/reference/c... Последний параметр - качество картинок.
    Ответ написан
    Комментировать
  • Битрикс ORM: получить одну из записей связанной таблицы?

    @Kontrael
    А варианта с двумя запросами вы не рассматриваете.?
    Выбираете заказы, собираете айдишники, выбираете логи с максимальными ID, привязанные к собранным заказам. Если в logs есть индекс по ORDER_ID, то запрос будет очень быстрым.
    Ответ написан
  • Как в битриксе на все поддомены скопировать раздел которых изменил на главном домене?

    @Kontrael
    Все зависит от того, как настроена многосайтовость.
    Если это физически разные директории на сервере, то руками скопировать изменение во все аналогичные файлы index.php
    Если это один файл, и код выводится в зависимости от SITE_ID, то нужно смотреть сам код и внести изменения так, чтобы он отображался при всех условиях.
    Ответ написан
    Комментировать
  • Как профилировать php на 1с-Битрикс через XHProf?

    @Kontrael
    Профилировщик это уже скальпель, для поиска конкретного проблемного куска кода, натравливать его на весь хит - решение сомнительное, которое выльется в проблемы с которыми вы столкнулись.
    Локализуйте проблему и собирайте данные профилировщиком уже внутри компонента. Но по опыту, это действительно нужно процентах в 10 случаев.
    Начните со встроенного отладчика.
    5ec67305b1f79562550586.png
    Посмотрите число запросов с кешем и без, время выполнения. Там же увидите, какие компоненты много себе позволяют, и там уже, при необходимости, запускайте профилировщик. Хотя скорее всего, вы увидите проблему до его запуска.
    Ответ написан
    Комментировать
  • Как учитывать жесткие ссылки с баннеров при многосайтовости?

    @Kontrael
    Все зависит от того, как настроена многосайтовость.
    Если на разных доменах, то проблемы не будет.
    Если по папкам, то SITE_DIR решает проблему.
    Ответ написан
    Комментировать
  • Почему не срабатывает скрипт из под крона в битрикс?

    @Kontrael
    Уберите вот эти теги
    5eb5180c9895a076139739.png
    Ответ написан
    Комментировать
  • Как импортировать csv файл в БД 1с битрикс?

    @Kontrael
    Прямые SQL запросы в Битриксе - плохо. Они противоречат идее архитектуры.
    В 99% случаев вы можете справится при помощи API Битрикса.
    В вашем случае есть несколько решений:
    1. Если магазинов не много (не сотни тысяч), то используйте Инфоблоки(ИБ): https://dev.1c-bitrix.ru/api_help/iblock/classes/i...
    В этому случае, вы руками создаете инфоблок "Магазины" и прогоняете ваш CSV файл через админку Контент->Инфоблоки->Импорт->CSV
    2. Если ИБ по какой-то причине вас не устраивают, Воспользуйтесь HighLoad-блоками(HL). Это более низкоуровневый инструмент. Каждый HL-блок создает таблицу в БД.
    Но в этом случае вам придется самостоятельно написать скрипт, который разберет ваш CSV и запишет это в HL-блоки
    https://dev.1c-bitrix.ru/community/webdev/user/119...
    3. Если хочется максимально низкого уровня, то используйте функционал ядра D7 и собственные ORM-сущности.
    https://dev.1c-bitrix.ru/learning/course/index.php...
    Ответ написан
    Комментировать
  • Почему не работает кнопка назад в браузере?

    @Kontrael
    Если стоит решение интернет-магазина, то смотрите на выбор торгового предложения. Если ничего не путаю, в магазине от Аспро при заходе в деталку, эмулировался клик по первому ТП. И как следствие переписывалась история.
    Ответ написан
    Комментировать
  • Почему не редактируется включаемая область на операционной системе CentOS?

    @Kontrael
    Скорее всего файл был создан под другим пользователем, возможно под root-ом.
    Удалите и создайте через админку битрикса. Или любым другим способом под юзером bitrix (если речь о стандартном окружении)
    Ответ написан
    Комментировать
  • В битриксе вместо 404 отдаёт код 200 и не переходит на страницу 404, в чём дело?

    @Kontrael
    1. Проверьте .htaccess в корне. Должна присутствовать строка ErrorDocument 404 /404.php
    2. Перейдите напрямую на файл с 404 //site.ru/404.php Если страница, не белая, значит проблема в логике "какую страницу показывать", если белая, то в самой странице. Возможно, где-то забыли убрать die(); при отладке

    Если после открытия содержимого страницы, все еще будет 200 статус, надо добавить вот это в начало 404.php
    <?php
    include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
    CHTTP::SetStatus("404 Not Found");
    @define("ERROR_404","Y");
    require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
    use Bitrix\Main\Localization\Loc;
    $APPLICATION->SetTitle("Страница не найдена");
    Ответ написан
    Комментировать
  • Почему не подключается композер к битриксу?

    @Kontrael
    У вас не находит сам файл /vendor/autoload.php
    В целом действия правильные. Возможно, некорректно сконфигурирован сервер или в init.php переписывается значение $_SERVER['DOCUMENT_ROOT'].
    Проверьте, что рабочая директория сайта лежит на сервере по пути "/home/bitrix/www"
    Ответ написан