При создании инфоблока добавить возможность "жестко" задать значение ID инфоблока

Рейтинг: -1.6980  
Отложено
Предложил Пользователь 880 21.11.2016 23:01:36

При создании инфоблока добавить возможность "жестко" задать значение ID инфоблока

Есть проблема при разработке используя git. Допустим мы создаем миграцию, которая создаст инфоблок Статьи и его ID будет равен 1. Далее мы выводим статьи через комплексный компонент Новости. Позже мы понимаем, что в нашем инфоблоке не хватает какого-то свойства, мы его добавляем в миграцию создания Статей, откатываем её и накатываем вновь. У нового инфоблока будет ID равный 2. И наш комплексный компонент Новости будет ругаться так как в нем жестко указан ID=1. Более того выкатим миграции на продакт и накатив их, мы получим id инфоблоков отличающиеся от develop. И ситуацию эту довольно трудно поправить. Предложение - либо дать возможность в CIBlock::Add дать возможность задать id инфоблока, либо переделать все шаблоны компонентов на поддержку указания не ID инфоблока, а его символьного кода

Рейтинг: 0  
Пользователь 3089 08.12.2016 16:01:17
либо дать возможность в CIBlock::Add дать возможность задать id инфоблока
Ну, это слишком. Создание численного ИД - прерогатива СУБД.

либо переделать все шаблоны компонентов на поддержку указания не ID инфоблока, а его символьного кода
Как вариант. Собственно и параметр новый не нужен. Если в IBLOCK_ID передается строка, то это символьный код.

Обходной путь для этого есть и без каких-либо переделок компонент. Можно брать ИД инфоблоков из настроек (не COption) на основе тех же символьных кодов. Вероятно поэтому идея не столь популярна.
[IMG]
Рейтинг: 0  
Пользователь 158225 14.12.2016 21:33:31
Не используйте ID напрямую. Используется обёртки.

Например:
// Вернёт ID инфоблока с кодом clothes 
echo \Artmix\Core\Entity\Iblock::getByCode('clothes')->ID;  

Модуль artmix.core
Рейтинг: 0  
Пользователь 390462 14.12.2016 22:22:52
так добавьте это св-во при переноса с дева на прод, или нельзя?