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

Рейтинг: 1  
Новая
Предложил Зайцев Артемий 17.07.2018 15:50:35

Возможность указать таблицы, бекап которых не делать

Ранее я предлагал не делать бекап таблицы b_xml_tree, потому что ломается обмен с 1С
https://idea.1c-bitrix.ru/not-to-make-a-backup-copy-of-the-table-bxmltree/

Теперь возникла еще одна проблема: наш модуль "Журнал изменений товаров" содержит огромную таблицу, которую сохранять тоже необязательно.

Табличка нашего модуля разрастается до многих гигабайт и существенно замедляет резервное копирование.

Было бы здорово отключать часть таблиц, чтобы сохранялась только структура, но без данных.

Как вариант можно сделать событие при резервном копировании, чтобы получать таблицы, данные которых не нужны.
Рейтинг: 0  
Новая
Предложил Никонов Дмитрий 05.07.2018 10:43:55

Настройка "отправлять пуш уведомления только на андроид или иос"

В настройках модуля есть только "Отправлять PUSH уведомления на мобильные телефоны". Но как быть когда надо отправлять пуши только на андроид (когда иос не корректно обрабатывает пуши)?
Хочется настройку позволяющую запретить отправку на какие-то устройства (apple или google). Ну или в метод CPushManager::SendMessage() - добавить атрибут, позволяющий указать на какие именно устройства отправлять пуши - array("GOOGLE"). Соответственно если параметр не передан - то отправлять на все устройства.
Рейтинг: 0  
Новая
Предложил Чернаков Константин 04.07.2018 15:39:36

Облегчение перевода агентов на cron

Сейчас в документации приводится большая инструкция по переводу агентов на cron в которой рекомендуется: выполнить пару "магических" команд в командной строке, отредактировать файл dbconn.php и создать файл /bitrix/php_interface/cron_events.php, (который большей частью повторяет файл /bitrix/modules/main/tools/cron_events.php) и "натравить" на него крон.
Было бы неплохо сократить эту инструкцию, обойтись без редактирования и создания файлов, а просто в файле /bitrix/modules/main/tools/cron_events.php предусмотреть логику, которая в зависимости от установленных параметров выполняла агенты либо по крону, либо на хитах. А уже крон натравить на исполнение файла - любой мало-мальский админ сможет.
Кстати, если мне не изменяет память в виртуальной машине Битрикс /bitrix/modules/main/tools/cron_events.php уже запускается по крону.
Рейтинг: 2  
На голосовании
Предложил Архипов Руслан 05.06.2018 13:33:32

Хранить LID сайта как число

Теперь, когда ограничение кол-ва сайтов на одной лицензии убрали, хотелось бы, чтобы его не было и со стороны софта. На данный момент LID сайта - 2хзначная строка из цифр и букв латинского алфавита, что дает ограничение в 1296 сайтов. Не скажу, что этого мало, но в некоторых случаях присвоение таких идентификаторов может доставлять неудобства.
Рейтинг: 2  
На голосовании
Предложил Tigpa 25.05.2018 12:40:43

Добавить поле в таблицу агентов

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

Так же вынести данное для редактирования в интерфейс.
Рейтинг: 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");
Рейтинг: 1  
На голосовании
Предложил Николай 24.03.2018 14:00:10

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

Добавить событие в CAdminList::DisplayExcel для модификации списка, как в CAdminList::Display.
Рейтинг: -2  
На голосовании
Предложил Рязанцев Андрей 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, но это можно поправить в логике обработки входных данных)

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

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

Хотелось бы устанавливать режим Установка для разработки через .settings а настройкой в главном модуле.
Ибо после каждого обновления базы тестового сайта надо ее перевключать, что можно и забыть.
Рейтинг: 6.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);
}

Благодарю!
Рейтинг: 4  
На голосовании
Предложил Саянц Антон 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-адресов. Он включает в себя общедоступную бесплатную базу данных такой географической привязки и примеры программ, работающих с ней. База обновляется ежедневно и любой вебмастер может использовать ее для нужд географического таргетинга.

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