Задать вопрос
  • Как привязать bitrix:main.ui.filter к конкретному инфоблоку?

    s_panteleev
    @s_panteleev
    25 yo, Yaroslavl
    Для начала, 'FILTER' => [] должен быть массив массивов (у вас сейчас просто массив)

    Посмотрите статью - описывал в ней примеры подключения

    Связку с инфоблоком нужно будет кодом реализовывать.

    Чтобы добавить фильтр над рабочей областью, попробуйте обернуть в шаблоне компонента CBitrixComponentTemplate::SetViewTarget
    <?php
    // например, в /local/components/company/report.list/templates/.default/template.php
    
    $this->SetViewTarget('inside_pagetitle');
    
    $APPLICATION->IncludeComponent('bitrix:main.ui.filter', '', [ 
        'FILTER_ID' => 'report_list', 
        'GRID_ID' => 'report_list', 
        'FILTER' => [ 
            ['id' => 'IS_SPEND', 'name' => 'Тип операции', 'type' => 'list', 'items' => ['' => 'Любой', 'P' => 'Поступление', 'M' => 'Списание'], 'params' => ['multiple' => 'Y']],
        ], 
        'ENABLE_LIVE_SEARCH' => true, 
        'ENABLE_LABEL' => true 
    ]);
    
    $this->EndViewTarget();?>
    Ответ написан
  • Как решить: ImportError: cannot import name 'executor' from 'aiogram'?

    xzripper
    @xzripper
    0xC0000005
    Обновитесь до Aiogram3, такое доступно только в новых версиях.
    Ответ написан
    Комментировать
  • Где и как хранить языковые фразы для javascript в Битрикс?

    @ZardoZAntony
    программист, сис. админ
    Я так делаю в шаблоне:
    <script>
      BX.message({
        'BTN_MESSAGE_BASKET_REDIRECT': '<?=GetMessageJS("BTN_MESSAGE_BASKET_REDIRECT")?>',
        'BTN_MESSAGE_CLOSE_POPUP': '<?=GetMessageJS("BTN_MESSAGE_CLOSE_POPUP")?>',
        'CART_CAPTION_ADD': '<?=GetMessageJS("CART_CAPTION_ADD")?>',
        'CART_ADDED_TEMPLATE': '<?=GetMessageJS("CART_ADDED_TEMPLATE")?>'
      });
    
      console.log(BX.message("CART_CAPTION_ADD"));
    </script>
    Ответ написан
    Комментировать
  • Битрикс24 сообщает об ошибке cron, но в логе cron всё работает как надо. В чём проблема?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Запись в кроне:

    /home/bitrix/www/bitrix/modules/main/tools/cron_events.ph


    Свидетельствует о том, что запускается cron битрикса и все как-бы должно быть ок.

    Однако в dbconn.php есть запись:

    if(!(defined("CHK_EVENT") && CHK_EVENT===true))
       define("BX_CRONTAB_SUPPORT", true);


    Что свидетельствует о том, что кто-то воспользовался инструкцией, но сделал это не до конца
    https://dev.1c-bitrix.ru/learning/course/?COURSE_I...

    Что можно сделать?

    Например можно воспользоваться инструкцией и до конца перевести агенты на крон.
    Создать файл, поставить его в загрузку, удалить вызов системного крон файла.

    А можно наоборот - отменить действия.
    Для этого нужно вернуть константу `BX_CRONTAB_SUPPORT` и удалить упоминания `CHK_EVENT`. Затем проделать в инвертированном порядке команды COption::SetOptionString (из инструкции выше).
    Ответ написан
    1 комментарий
  • Где и как хранить языковые фразы для javascript в Битрикс?

    ShelestovAnt
    @ShelestovAnt Автор вопроса
    Верстаю и программирую
    Все намного проще оказалось.
    Регистрируем скрипты через CJSCore::RegisterExt, там же можно указать файл локализации
    Ответ написан
    2 комментария
  • Что необходимо для работы контроллера в Bitrix?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Почему битрикс должен видеть мой класс и где он должен находиться?


    Есть несколько способов чтобы "Битрикс" (а на самом деле php) видел ваш класс:
    1. Ванильный php: класс должен быть подключен к выполнению явно через подключение файла в которым он описан
    2. Вандальный/Коробочный Б24: Класс должен располагаться где-угодно, но быть заргистрирован через автолоадер (здесь не важно что вы используете: composer, битриксовый или свое на базе spl_autoloader) в init.php
    3. Через модули.

    Если мы говорим о классическом bitrix framework то правильнее делать модуль.
    Причем в модуле есть 2 варианта его инициализации:
    1. Через "автолоадер" или прямое подключение в include.php ()
    2. Через `psr`-подобный загрузчик в папке lib (https://dev.1c-bitrix.ru/learning/course/index.php...)

    Иначе говоря:
    - Либо вы размещаете где хотите и подключаете его сами
    - Либо если вы работаете с модулем то положить его по psr4 в папочку `lib` вашего модуля.

    Как работает автозагрузчик?


    Если вы читали абзац выше, то поняли, что единого центразиованного загрузчика тут нет.
    Есть:
    1. Глобальный автозагрузчик из модулей (который загружает по psr4 из активных подключенных модулей)
    2. Локальный автозагрузчик модуля (для подключенного модуля)
    3. Кастомные загрузчики (тут кто во что горазд).

    Соответственно, если мы говорим про 1 и 2 типы загрузчиков, что сначала необходимо подключить модуль (`\CModule::IncludeModule` или `\Bitrix\Main\Loader`), а потом уже вызывать классы.
    Если вы попытаетесь вызывать классы, а до вас никто не подключил модуль, то вы получите фатал.

    Везде ли он работает?


    Последний абзац выше показывает что нет.

    Есть ли проблемы с версиями? Отличия ядер битрикса или ещё какой черной магии?


    Описания в зависимости от версии особо нет.
    Что касается проблем, то примерно до версии 18 psr-подобного загрузчика не было, потом он начал появляться и совершенствоваться.
    Если ориентироваться на последнюю версию Битрикс24, то проблемы если и есть, то только локального характера связанные с модульной структурой.
    Здесь могу посоветовать только проштудировать документацию и потыкаться самому. Универсальной формулы нет - документация тут скудная.

    Как настроить defaultNamespace и namespaces в .settings.php, чтобы всё заработало?


    Здесь нужно намного больше информации, например: как модуль используете, что сделали, что ожидаете и что работает не так как ожидали.
    Пока могу лишь ограничиться ответом "настроить согласно документации" (ха-ха, злая шутка, особо документации нет - нужно больше вводных данных см выше)

    Есть ли где-то полностью рабочий пример реализации своего класса, с описанием того где файлы и почему они там?


    Нет, такого нет.
    В Битриксе это можно получить только после изучения всех курсов/доков/экзаменов и с точки зрения практического опыта.
    Можно посмотреть уже готовые модули (что-то подобное можно найти на github, например https://github.com/alex-nzr/bitrix-example-boilerp... или https://github.com/zahalski/awz.ydelivery/tree/mas...)/
    Можно посмотреть как это делать без модулей https://bx24devbook.website.yandexcloud.net/index.html (тут скорее больше описания чем конкретные классы).

    Готового гайда как у симфони здесь увы нет.

    Какая именно должна быть ссылка для проверки роута?

    Что вы имеете ввиду? Проверки чем? Ссылка на что? Какого роута?
    Ответ написан
    1 комментарий
  • Не подгружаются стили и скрипты в слайдере Битрикс?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Для вывода своего компонента используйте bitrix:ui.sidepanel.wrapper

    Ваша ошибка следует из того, что вы не знаете как именно работает слайдер в режите iframe
    Ответ написан
    Комментировать
  • Как сделать сортировку по стрелкам в компоненте main.ui.grid?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Сортировка состоит из двух частей: визуального отображения (стрелочки и т.п.) и реальной сортировки данных.

    Если вы внимательно посмотрите на код, то у вас есть фрагмент:

    $sort = $grid_options->GetSorting(['sort' => ['ID' => 'DESC'], 'vars' => ['by' => 'by', 'order' => 'order']]);


    Если вы поставите дебаг переменной `$sort` и будете смотреть как он меняется при обновлении страницы (щелкать по столбцам и обновлять страницу), то вы увидите что он содержит там ключ стобца из HEADERS (COLUMNS) и направление (ASD/DESC), и все это будет вроде бы в `$sort['sort']`.

    Далее, если вы посмотрите на фрагмент кода:

    $res = \CIBlockElement::GetList(array("ID"=>"ASC"), $filterD, false, $nav_params);


    То благодара документации по методу вы узкаете что первым параметром передается массив для сортировки результатов и в вашем случае он всегда фиксированный - по возрастанию ID.

    Если вместо фиксированного параметра вы передадите тот самый набор из сорт то у вас все заработает.
    Ответ написан
    1 комментарий
  • Как массово загружать файлы в битрикс24 Коробка?

    Tkreks
    @Tkreks
    Системный инженер
    Смотря еще какой у вас битрикс, не знаю как в облачных тарифах, но в коробке можно подключить диск по webdav,и таким образом попробовать загрузить файлы. И не понятно что у Вас не работает, какая ошибка вылезает?
    Я например весьма успешно выгружал 2.5тб из я.диска в битрикс через родной клиент битрикса. Ну там настройки определенные сделали из каких папок и куда и в остальном у меня все успешно скопировалось. Самый большой файл весил около 130 гигов, но всё опять таки прошло успешно
    Ответ написан
    4 комментария
  • Как добавить пункт меню Битрикс24?

    gromdron
    @gromdron Куратор тега Битрикс24
    Работаю с Bitrix24
    Для конкретно этого пункта меню есть прекрасное событие OnAfterCrmControlPanelBuild

    Пример вызова:
    \Bitrix\Main\EventManager::getInstance()->addEventHandlerCompatible(
    	"crm",
    	"OnAfterCrmControlPanelBuild",
    	function( &$menuItems ){
    
    		// $menuItems - список элементов меню по ссылке. Можно даже удалить
    		$menuItems[] = [
    			/**
    			 * ID пункт меню. Нужен для подсветки на странице
    			 * @var string
    			 */
    			'ID'      => 'CUSTOM_REPORTS',
    
    			/**
    			 * ID js-пункта меню. Для счетчиков и action-комманд
    			 * @var string
    			 */
    			'MENU_ID' => 'menu_crm_custom_reports',
    
    			/**
    			 * Название и hover title
    			 * @var string
    			 */
    			'NAME'    => 'Пользовательские отчеты',
    			'TITLE'   => 'Пользовательские отчеты',
    
    			/**
    			 * Ссылка, куда вести по нажатию
    			 * @var string
    			 */
    			'URL'     => '/crm/_some_link_/',
    		];	
    	}
    );


    Ну и собственно на своей странице нужно вызвать доп.компонент:

    $APPLICATION->IncludeComponent(
    	'bitrix:crm.control_panel',
    	'',
    	array(
    		'ID'             => 'CUSTOM_REPORTS',
    		'ACTIVE_ITEM_ID' => 'CUSTOM_REPORTS',
    	)
    );
    Ответ написан
    1 комментарий