+7 495 008 8452 пн.-пт. 10:00 – 17:00
Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.


Добрый день, коллеги!

Поговорим немного о неудобствахбагах в Битриксе, которые живут вместе с нами в 14й версии.
На написание данного поста меня сподвигло последнее общение с техподдержкой, где мне ясно дали понять, что с определенными багами они делать ничего не собираются.

Как оказалось, зря я себя тешил мыслью, что я такой "молодец" и нахожу какие-то ошибки, сообщаю о них и делаю тем самым продукт лучше, но увы, это никому не нужно.

Итак, краткий экскурс по фичам\багам

1 ) Проблема с функцией \FindUserID()
Данная функция не работает в форме быстрого редактирования записей (см. вложение)
Конечно не критичная проблема, но неприятная.
Номер обращения в разработку: 45220.

2 ) Security Issue
Мне лично очень нравится этот, по моему мнению баг, ну или огромный недочет.
Думаю многим из нас, приходилось включать режим отладки, чтобы увидеть, что за ошибка возникает и затем ее поправить. Речь идет о файле /bitrix/.settings.php и параметре 'debug' => true
Некоторые хранят этот параметр всегда включенным.
А теперь самое интересное, если параметр включен и выполнить код вида
Код
use Bitrix\Main\SiteTable as BxSiteTable;
$siteSource = BxSiteTable::getList(
    array(
     'select' => array('LID'),
     'filter' => array('ACTIVE' => 'Y')
    )
);
echo '<pre>';
print_r($siteSource);

Ну забыли вы fetch сделать, с кем не бывает?
и в результирующем объекте видим вот такую мелочь:
Цитата
[configuration:protected] => Array
   (
 [className] => \Bitrix\Main\DB\MysqlConnection
 [host] => localhost
 [database] => cv
 [login] => root
 [password] =>
 [options] => 2
   )
Данные доступа к БД в открытом виде. Т.е. бери, подключайся, меняй пароль к админу и делай на сайте, что хочешь.
Сообщил о проблеме в Техподдержку, на что получил интересный ответ:
Цитата
Данная переменная защищенная и не может быть изменена.
Как разработчик имеющий доступ к php вы имеете доступ ко всем данным сервера.
Наши разработчики не видят в этом проблемы, а случае использования нескольких баз это дает понимание от куда приходят данные.  
С горем пополам удалось убедить, что это все же проблема
Категория: Пожелания.
Номер обращения в разработку: 34271.

правда это категория пожелания, то есть ждать года эдак 3.

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

3 ) \Bitrix\Main\UserTable::getById(null)
Подобная выборка:
Код
$result = \Bitrix\Main\UserTable::getById(null)->fetch();
возвращает данные данные пользователя с ID=1, мягко говоря совсем не очевидно.
Номер обращения в разработку: 45287.
Вроде даже есть исправление, но обновления с ним пока что-то не видно.


4 ) Некорректное описание полей возвращаемых \Bitrix\Main\UserTable::getMap()
\Bitrix\Main\UserTable::getMap() возвращает "слегка" некорректное описание полей, а именно нет флага обязательности полей, что позволяет создать пользователя без логина\пароля и других полей.
Как потом работать с таким пользователем без логина и пароля я пока не придумал. Может у кого-то есть идеи?
Номер обращения в разработку: 45330.
Обновления также пока не увидел, хотя есть уведомление, что исправлено.


5 ) Некорректная работа нового API, D7
Тут сложно объяснить, возможно просмотр видео поможет https://www.youtube.com/watch?v=uSHbSf7HFt4&feature=youtu.be
Правда техподдержка проблемы не моделирует или не хочет. Зато проблема есть у меня локально, у ряда пользователей моих модулей и в демо-лаборатории, что должно быть поводом как минимум задуматься.
Номер обращения в разработку: 46486.
Да, вот кстати пришло мне сообщение от одного из пользователей модуля, который общается с техподдержкой
Цитата
Проблема описанная в заявке 46486, закрыта с комментарием, что она не воспроизводиться локально или связана именно с вируальной лабораторией
Т.е. разбираться в проблеме не интересно.

6) \Bitrix\Main\UserTable::getById() и Пользовательские поля, Группы
Выборка групп пользователей в принципе не работает изначально, даже если ее попытаться добавить самостоятельно
Код
use \Bitrix\Main\UserTable as BxUser;
class UserTable extends BxUser{
    public static function getMap(){
     $map = parent::getMap();
     $map['USER_GROUPS'] = array(
      'data_type' => 'Bitrix\Main\UserGroup',
      'reference' => array('=this.ID' => 'ref.USER_ID')
     );

     return $map;
    }
}
то в результате будет массив вида:
Код
 [KM_USER_USER_USER_GROUPS_USER_ID] => 1
    [KM_USER_USER_USER_GROUPS_GROUP_ID] => 1
    [KM_USER_USER_USER_GROUPS_DATE_ACTIVE_FROM] =>
    [KM_USER_USER_USER_GROUPS_DATE_ACTIVE_TO] => 
Не будем брать в расчет, что имена полей сложно использовать, так еще и группа будет выбрана только 1. Если у Вас пользователь находится в нескольких группах, будьте любезны выбрать все группы самостоятельно и отдельно.
Метода getById и getRowById Никогда не будут возвращать пользовательские свойства и принадлежность группы.
Хотя про пользовательские поля я погорячился. Они вроде и описаны в классе, но не работают, совсем никак не работают, возвращают fatal error
Код
$u = \Bitrix\Main\UserTable::getList(array(
    "select"=>array(
     "*",
     "UTS_OBJECT",
    ),
    "filter"=>array("=ID"=>1)
));
echo '<pre>';
print_r($u->fetch()); 
Добиться от техподдержки вменяемого ответа как или когда не получилось
Цитата
Разработчики пока не могут дать конкретного ответа как сейчас будет построена схема взаимодействия с пользовательскими полями.
7 ) Не работает "Печать" заказа
Для НЕ ru сайтов из огромного числа форм для печати заказа работает только 1, зачем выводятся остальные я так и не понял.
Категория: Пожелания.
Номер обращения в разработку: 46604.


8 ) /bitrix/modules/main/classes/mssql/database.php ошибка перевода времени в am\pm
Проблема состоит в некорректном формировании даты, например, вы создали сообщение в живую ленту в 12:07(по 24 часовой схеме), то получите результат 12:07AM(по 12 часовой схеме), однако это 00:07(по 24 часовой схеме), т.е. вы потеряете 12 часов на преобразованиях даты\время, не говоря о душевных страданиях людей которые используют 12 часовую схему. В Битриксе с использованием MSSQL просто не бывает 12:xx pm

Категория: Пожелания.
Номер обращения в разработку: 46712.

Судя по переписке с техподдержкой решать проблему не будут.

PS. Надеюсь когда-нибудь, все эти проблемы пофиксят и мы сможем спокойно заниматься разработкой...

Назад в раздел

Подписаться на новые материалы раздела:












CAPTCHA