Идеи для: Главный модуль

Рейтинг: 0  
Новая
Предложил Архипов Руслан 16.04.2018 16:46:20

Фильтр пользователей по местоположению

Просьба сделать фильтрацию пользователей по полю типа "Местоположение" более удобной, с возможностью поиска по названию. Текущий фильтр по ID местоположения не очень удобен.
https://prnt.sc/j5yrd0
Рейтинг: 0  
Новая
Предложил Сергей Гладышев 10.04.2018 19:33:52

Узкое место Битрикса, связанное с тэгированным кэшем.

Кейс таков. У нас есть метод, который формирует ассоциативный массив из символьных кодов и id инфоблоков.
public static function getIBlocksCodeIDMap()
{
    if (!\Bitrix\Main\Loader::includeModule('iblock'))
        return;

    $arIBlocksIDsByCode = array();

    $cache = new CPHPCache();
    $cache_time = 86400;
    $cache_id = 'getIBlocksCodeIDMap' . SITE_ID;

    $cache_path = '/getIBlocksCodeIDMap/';

    if ($cache_time > 0 && $cache->InitCache($cache_time, $cache_id, $cache_path))
    {
        $res = $cache->GetVars();
        if (is_array($res["IBlocksCodeIDMap"]) && (count($res["IBlocksCodeIDMap"]) > 0))
            $arIBlocksCodeIDMap = $res["IBlocksCodeIDMap"];
    }

    if (empty($arIBlocksCodeIDMap))
    {

        $rsIBlocks = \CIBlock::GetList(
            Array(),
            Array(
                "SITE_ID" => SITE_ID
            )
        );

        global $CACHE_MANAGER;
        $CACHE_MANAGER->StartTagCache($cache_path);
        while ($arIBlock = $rsIBlocks->Fetch()) {
            $CACHE_MANAGER->RegisterTag("iblock_id_".$arIBlock["ID"]);
            $arIBlocksCodeIDMap[$arIBlock['CODE']] = $arIBlock['ID'];
        }
        $CACHE_MANAGER->RegisterTag("getIBlocksCodeIDMap");
        $CACHE_MANAGER->RegisterTag("iblock_id_new");
        $CACHE_MANAGER->RegisterTag("getIBlocksCodeIDMap");

        $CACHE_MANAGER->EndTagCache();

        if ($cache_time > 0) {
            $cache->StartDataCache($cache_time, $cache_id, $cache_path);
            $cache->EndDataCache(array("IBlocksCodeIDMap" => $arIBlocksCodeIDMap));
        } 
    }

    return $arIBlocksCodeIDMap;
}
В каких случаях нам нужно обновлять кэш в папке /getIBlocksCodeIDMap/ ?
1 - при добавлении инфоблока. Произведётся сброс по тэгу iblock_id_new в методе CIBlock::Add
2 - изменение символьного кода инфоблока (ну т.е. обновление инфоблока) и удаление инфоблока. Произведётся сброс по тэгу iblock_id_ в методах CIBlock::Delete и CIBlock::Update.

Т.е. всё хорошо, у нас всегда актуальные данные. Но есть один ньюанс:
Сброс по тэгу iblock_id_ будет производиться и при обновлении/удалении/добавлении элемента/секции этого инфоблока (CIBlockSection, CIBlockElement). Т.е. наш кэш будет сбрасываться вообще по каждому чиху, связанному с хотя бы одним из инфоблоков. Хотя нам, в данное методе, абсолютно не нужно реагировать на какие-бы то ни было изменения в элементах или секциях инфоблоков. Нас интересуют только само наличие инфоблоков и их символьные коды.
Получается избыточность.

Почему бы штатным методам не добавить более узкоспециализированные и сброс кэша по ним.
Т.е. , например , в методе  CIBlockElement::Update добавить ClearByTag("CIBlockElement") и ClearByTag("CIBlockElement_Update"), при этом оставив на месте ClearByTag("iblock_id_" . .... ).

И когда разработчик пишет свой метод, то он может более гибко управлять сбросом кэша с результатами работы своего метода. Т.е. если нужно, например, реагировать только на изменения в элементах, в метод добавляется $CACHE_MANAGER->RegisterTag("CIBlockElement"); и всё.

Или, в случае моего примера:
$CACHE_MANAGER->RegisterTag("CIBlock_Update");
$CACHE_MANAGER->RegisterTag("CIBlock_Add");
Рейтинг: 0  
Новая
Предложил Николай 24.03.2018 14:00:10

Добавить событие в класс CAdminList

Добавить событие в CAdminList::DisplayExcel для модификации списка, как в CAdminList::Display.
Рейтинг: -1  
Новая
Предложил Рязанцев Андрей 12.03.2018 16:57:05

Вынести все языковые фразы в один файл

Сейчас языковые фразы образуют огромное месиво ланговых файлов. Чтобы с этим покончить, предлагаю вынести файлы в отдельную системную папку. Например, bitrix/lang/s1/ru. Все файлы всех компонентов будут держать фразы одном файле. Разные папки будут использоваться только для разных языков и сайтов.
Рейтинг: 3.8902  
Новая
Предложил К Алексей 29.12.2017 17:46:54

Поиск по сотням значений в поле Свойства Заказа покупателями для драматического улучшения юзабилити

Хотелось бы, чтобы работал такой простой и популярный на всех сайтах функционал как поиск по нескольким введенным символам - ужасно удобно, когда значений поля сотни https://www.screencast.com/t/zz9fGwah
Рейтинг: 3  
Новая
Предложил Будагов Алексей 15.12.2017 13:12:07

Сжатие HTML-кода композитных страниц

Добрый день. В папке html_pages сайта хранятся html страницы, которые и отдаются браузеру при работе композитного кеша (если я правильно понял). Почему бы при их генерации не убирать пробелы и переносы строк. Таким образом битрикс пройдет еще одну рекомендацию от Google PageSpeed Insights
Рейтинг: 1  
На голосовании
Предложил Архипов Руслан 08.12.2017 12:11:16

Убрать пагинацию в выгрузке пользователей

Сделать, как это реализовано в остальных подобных списках, например, в заказах. Если приходит запрос на выгрузку excel - не устанаваливать параметры пагинации в выборке.
Рейтинг: 2  
На голосовании
Предложил Сергей Пантелеев 04.12.2017 21:04:48

Кириллические домены при регистрации

Кириллические домены уже давно в России.

При регистрации с кириллическим доменом (например, info@кто.рф) выдает "Неверный E-Mail."
Рейтинг: 19.9144  
На голосовании
Предложил Чернышов Антон 17.11.2017 10:17:21

Добавить возможность обновиться до конкретной версии модуля(ей)

В связи с полным интеграционным тестированием обновлений Битрикс на тестовом окружении, которое может занимать несколько дней, к моменту обновления рабочего сайта через site_update релизные версии модлей уже могу отличаться от установленных на тесте.


Поэтому возникает ситуация, что тест приходится обновлять несколько раз, несколько раз прогонять все функциональные тесты и потом надеяться, что к моменту обновления рабочего сайта новых апдейтов не выйдет.
Рейтинг: 4  
На голосовании
Предложил Казаков Алексей 15.11.2017 13:34:59

Блокировать обе кнопки "Сохранить"/"Применить" при нажатии на любую из них

В любой форме в админке внизу есть кнопки "Сохранить"   "Применить"  "Отменить".

При нажатии на "Применить" на кнопке появляется "лоадер", кнопка блокируется и происходит отправка данных POST-запросом. При этом кнопка "Сохранить" активна и на неё можно нажать, при приведет к повторной отправке формы.

Конкретный пример:
Редактирование заказа. Сотрудники бухгалтерии прикладывают к заказу файл (через UF-свойство) и нажимают обе кнопки "Сохранить"/"Применить". В итоге файл отправляется дважды (и дважды же фиксируется в b_file, но это можно поправить в логике обработки входных данных)

Чего хочется:
Чтоб при отправке формы блокировались кнопки, которые могут привести к ещё одной параллельной повторной отправке
Рейтинг: 4  
На голосовании
Предложил Evgeniy Pedan 13.11.2017 10:55:27

Установка для разработки

Хотелось бы устанавливать режим Установка для разработки через .settings а настройкой в главном модуле.
Ибо после каждого обновления базы тестового сайта надо ее перевключать, что можно и забыть.
Рейтинг: 4.3829  
На голосовании
Предложил Eonian 08.11.2017 17:08:39

Множественное подключение модулей - \Bitrix\Main\Loader::IncludeModules(['crm', 'sale']);

Уважаемые разработчики, вставьте пожалуйста этот код в \Bitrix\Main\Loader

public static function includeModules(array $modules)
{
   $result = [];

   foreach ($modules as $module) {
       $result[] = self::includeModule($module);
   }

   return !in_array(false, $result, true);
}

Благодарю!
Рейтинг: 3  
На голосовании
Предложил Саянц Антон 25.10.2017 16:39:07

Геолокация IpGeoBase в 1С-Битрикс

Здравствуйте.
Не давно появилась геолокация в 1С-Битрикс: https://dev.1c-bitrix.ru/api_d7/bitrix/main/service/geoip/index.php

Очень хотелось бы, чтобы добавили класс для работы с http://ipgeobase.ru/
Описание:
Проект IpGeoBase создан как общедоступный ресурс географической привязки российских IP-адресов. Он включает в себя общедоступную бесплатную базу данных такой географической привязки и примеры программ, работающих с ней. База обновляется ежедневно и любой вебмастер может использовать ее для нужд географического таргетинга.

В общем проект российский и БД городов обновляется ежедневно, + нет ограничений кол-во запросов(насколько я знаю). Нужно использовать ее.