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

Рейтинг: 0  
Внедрено
Предложил Ганин Дмитрий 26.06.2017 21:49:01

Баг в админке

Добрый вечер!
При установке bitrix версии standart выскакивает ошибка (версия php 7.1)



А все из-за того, что переменная (1) $arSqlWhere определен как строка, а далее код работает с ней как с массивом (2). Лечится заменой на $arSqlWhere =  []; // на что как бы намекает название переменной
Рейтинг: 0  
Ответил Жуков Евгений 27.06.2017 13:02:30
Исправлено в main 16.5.9.

P.S. Сообщения об ошибках продукта, подобных этой, необходимо отправлять в техподдержку, а не на сайт идей.
Рейтинг: -0.2617  
Внедрено
Предложил Ганин Дмитрий 10.01.2017 12:25:50

Удалить дублирующий класс SystemException

В главном модуле есть класс SystemException, файл /bitrix/modules/main/lib/systemexception.php,  и его дубль в файле /bitrix/modules/main/lib/exception.php
Рейтинг: 1.0001  
Ответил Жуков Евгений 10.01.2017 13:30:54
Файла /bitrix/modules/main/lib/systemexception.php в продукте нет.

P.S. Проблему зафиксировали, именно с дистрибутивами. Поправим в ближайшее время.
Рейтинг: 0.2915  
Внедрено
Предложил Селихов Владимир 09.07.2016 13:39:30

Cортировать список перечислений свойства типа "Список" по "значению", "названию значения" (не используя при этом поле "Сортировка"

На сайте следующая проблема. В качестве свойств торгового предложения можно выбрать только тип свойства "Список". Подразумевается завести свойство "Размер" в котором будут перечисляться значения вида "10х20х30" и таких значений очень много. Можно ли каким то образом при добавлении нового значения в список иметь возможность сортировать по значению названию значения (не используя при этом поле "Сортировка"
Рейтинг: 0  
Ответил Жуков Евгений 04.10.2018 17:47:08
Можно. Для этого достаточно, чтобы у всех значений было одно и тоже значение в поле "Сортировка".
Рейтинг: 6.8004  
Внедрено
Предложил Труш Дмитрий 24.12.2014 18:43:33

Минимизировать файлы *.js *.css ядра.

Минимизировать файлы *.js *.css ядра.
При проверке https://developers.google.com/speed/pagespeed/insights/
Как не оптимизировать страничку, больше 90 баллов набрать очень сложно из-за подключения файлов ядра в хедере для всех пользователей и их большого размера. Они не минимизируются, не подключаются асинхронно и не ужимаются, это такие файлы, как :
/bitrix/js/main/session.js
/bitrix/js/main/core/core_window.js
/bitrix/js/main/utils.js
/bitrix/js/main/core/core.js
/bitrix/js/main/core/core_ajax.js
/bitrix/js/main/json/json2.min.js
/bitrix/js/main/core/core_ls.js
/bitrix/js/main/core/core_fx.js
/bitrix/js/main/core/core_popup.js
и других. Система их клеит в 1 большой файл kernel_main.js и он таким образом набирает ужасные 300+ кБ.
Хвалёная функция в настройках главного модуля - Создавать сжатую копию объединенных CSS и JS файлов не помогает.
Идея. Выбор по параметру, какие версии файлов ядра подключать: в 1 строку(сжатые) или полные.
Рейтинг: 0.0153  
Ответил 22.04.2015 15:34:24
Вышло обновление main в котором мы минимизировали все JS и CSS.
Рейтинг: 1.0978  
Внедрено
Предложил James Gerat 16.09.2014 19:15:21

Подсчет строк в D7

/bitrix\modules\main\lib\entity\query.php:1342

/*
Vadim: this is for paging but currently is not used
      if ($this->count_total || !is_null($this->offset))
      {
         $cnt_body_elements = $build_parts;

         // remove order
         unset($cnt_body_elements['ORDER BY']);

         $cnt_query = join("\n", $cnt_body_elements);

         // remove long aliases
         list($cnt_query, ) = $this->replaceSelectAliases($cnt_query);

         // sel ect count
         $cnt_query = 'SELECT COUNT(1) AS TMP_ROWS_CNT FR OM ('.$cnt_query.') xxx';
         $cnt = $connection->queryScalar($cnt_query);
      }
*/ 
Уважаемый Вадим!!
К сожалению, это не используется только потому это не сделано. У нас большой проект на орме уже работает, вышло пару десятков обновлений, но до сих пор вы почему то считаете, что это ни кому ни нужно.
Подпираем костылями как можем, но очень вас просим включить функционал подсчета строк как можно быстрее. Или укажите когда примерно стоит ожидать.
Рейтинг: 0.219  
Ответил 19.09.2014 15:33:53
Спасибо вам за идею. Мы берем ее в работу.

Будем рады за любые идеи по развитию нового ядра.
Рейтинг: 0  
Внедрено
Предложил Швед Андрей 05.06.2014 12:30:15

Выявил проблему с некоторыми сборками php

на одном из хостингов где расположен сайт на Битрикс выявил ошибку:
в файле: bitrix/components/bitrix/catalog.section/component.php:817
не отрабатывается метод method_exists

в этой строке в редакции старт обращается к не существующему классу и на конкретном хостинге происходит падение php и браузеру возвращается ответ нулевой длины.

фрагмент отработаной с ошибкой:
if (!empty($arResult["ELEMENTS"]))
{
          if (method_exists('CCatalogDiscount', 'SetProductSectionsCache'))
             CCatalogDiscount::SetProductSectionsCache($arResult["ELEMENTS"]);

}
Решение ошибки: предварительно проверить существование класса:
if (!empty($arResult["ELEMENTS"]))
{
       if (class_exists('CCatalogDiscount')){
          if (method_exists('CCatalogDiscount', 'SetProductSectionsCache'))
               CCatalogDiscount::SetProductSectionsCache($arResult["ELEMENTS"]);
       }
}

Прошу принять во внимает Существование проблемы.
Рейтинг: 0  
Ответил Жуков Евгений 05.06.2014 12:57:18
Андрей, обновите модуль инфоблоков - эта проблема давно решена. Кроме того, основная причина такой ошибки - некорректная сборка php.
Рейтинг: 0  
Внедрено
Предложил Сальников Дмитрий 20.05.2014 14:47:06

Компоненты на d7

Почему бы не делать компоненты на d7 без component.php? Причем логику компонента разбивать на методы.
Например вместо проверки $USER->IsAdmin() (или любой другой) реализовать метод public function hasPermission()
в таком случае если клиент захочет расширить число групп которым, доступен функционал компонента (видимо это какая-то модерация),  достаточно будет отнаследоваться от компонента и переопределить 1 метод

Возможно пример не очень яркий, но вся прелесть наследования пропадает, когда приходится не только наследоваться но и component.php править и вмешиваться в его логику.
Рейтинг: 0.1291  
Ответил Жуков Евгений 20.05.2014 17:35:44
Это возможно начиная с main 12.0.7 Новые компоненты пишутся с использованием ООП и могут использовать как классы D7, так и старые классы.
Рейтинг: 0  
Внедрено
Предложил Шерлок Холмс 16.03.2014 23:56:53

Поддержка параметра REFRESH=>"Y" для свойств с типом Список

Добавить поддержку параметра REFRESH => "Y" в настройках параметров компонента (.parameters.php) для свойств с типом "Список" (LIST).
Рейтинг: 0  
Ответил Жуков Евгений 17.03.2014 11:43:31
Этот ключ поддерживается для списков минимум с 5-й версии.
Рейтинг: 34.4301  
Внедрено
Предложил Щукин Олег 13.03.2014 23:01:20

Ускорение на 2%

Если в функции getLocalPath() (в файле /bitrix/modules/main/tools.php) добавить статическую переменную, содержащую наличие каталога local, то общее количество вызовов file_exists() можно уменьшить примерно на 25% (что соответствует примерно 2% общей нагрузки сервера).
function getLocalPath($path, $baseFolder = "/bitrix")
{
   $root = rtrim($_SERVER["DOCUMENT_ROOT"], "\\/");
   
   static $haveLocalDir = null;
   if( $haveLocalDir === null )
      $haveLocalDir = is_dir($root."/local");

   if ($haveLocalDir && file_exists($root."/local/".$path))
   {
      return "/local/".$path;
   }
   elseif (file_exists($root.$baseFolder."/".$path))
   {
      return $baseFolder."/".$path;
   }
   return false;
}

Актуально для всех продуктов с ядром D7 (по-моему, начиная с версии главного модуля 14.0.1).

Обсуждение в моем разделе
Рейтинг: 9.7077  
Внедрено
Предложил Долганин Антон 19.02.2014 20:24:05

Минимизировать все JS из коробки

Варианты галочек главного ядра со склеиванием и прочим не предлагать. Я именно про min-версии. Рядом класть полноценные версии для разработчиков.
Рейтинг: 22.0272  
Ответил 19.10.2015 14:57:00
В продукте сжаты все JS и CSS, а также он умеет сжимать и те которые используются как дополнительные и подключены в шаблоне или на страницах.
Рейтинг: 9.4455  
Внедрено
Предложил Неслуховский Иван 23.01.2014 23:25:11

Свойству типа "Дата/время" пригодилась бы настройка "Дата" или "Дата + время"

Не всегда требуется вводить время, но при этом очень полезен компонент "календарик".
В нынешнем варианте время всё равно проставится, так что приходится его удалять.
Рейтинг: 0  
Ответил Dumbravanu Vadim 11.04.2014 13:09:23
В ядре 14.5 будет отдельный тип пользовательского свойства "Дата".
Рейтинг: 21.0329  
Внедрено
Предложил Шихмагомедов Руслан 28.10.2013 17:45:43

Разные идентификаторы html элементов в компоненте(список новостей, элементы раздела и т.д.) для $this->GetEditAreaId()

Если на странице есть два компонента, которые выводят одни и те же элементы, то в обоих шаблонах для  id="<?=$this->GetEditAreaId ( $arItem['ID'] ) ;?>" мы получим одинаковые значения. Но в HTML-коде не может быть двух элементов с одинаковым названием идентификатора. Это недопустимо по спецификации.
Нужно что бы каждый компонент выдавал уникальный идентификатор.


-----------

Рейтинг: 0  
Ответил Жуков Евгений 14.02.2014 15:35:08
Выйдет в обновлении main 14.0.11
Рейтинг: 56.5987  
Внедрено
Предложил Ерофеев Анатолий 03.10.2013 07:55:57

Добавлять домен к названию бекапа

А то после скачивания пятка бекапов с разных сайтов никак не понять, какой бекап с какого сайта. А если бы в начале названия бекапа значился домен, было бы намного удобнее.
Рейтинг: -8.5888  
Ответил Шаромов Денис 03.10.2013 11:18:16
Мысль интересная, подумаем об этом. Не очень понятно, правда, как быть с кириллическими доменами.

И другой момент: имя файла в облаке "1С-Битрикс" должно иметь строго определенный формат и меняться не будет, так задумано архитектурно.