Цитата |
---|
kirov43 написал: может кто то своими идеями поделится почему так? |
Для начала давайте усвоим небольшую разницу: есть привязка, есть справочник, есть список.
При использовании привязки - храните идентификатор связанного элемента
При использовании справочника - мнемонический код
При использовании списка - идентификатор значения списка
Почему-то Вы говорите о справочнике, но подразумеваете список.
Вот тут и кроется интересное поведение:
Код |
---|
$arFields = [
'UF_STATUS' => 467
]; |
Вопрос - какой статус будет установлен после обновления элемента? Конечно же 467, но вот что за магическая цифра?
Можно переписать фрагмент так:
Код |
---|
define('STATUS_SUCCESS', 467);
$arFields = [
'UF_STATUS' => STATUS_SUCCESS
]; |
Стало понятнее, но добавилась лишняя конструкция. А если таких справочников 10? Да в каждом по 15-20 значений? Это что? 150-200 констант заводить?
Почему бы не сделать так:
Код |
---|
$arFields = [
'UF_STATUS' => 'STATUS_SUCCESS'
]; |
Семантично - ведь всегда у Вас есть известная связка код->значение.
Коротко - не нужно лишних констант и перечислений.
Удобно для интеграции - при работе с привязками и списками нужно постоянно искать соответствие ID -> XML_ID и при нахождении обновлять, при несовпадении добавлять, лишние удалять... Чувствуете сколько операций? А теперь фикс: удаляем все значения справочника, заполняем с чистого листа. Проще? Намного.
Такой подход Битрикс использует в CRM (статусы) и он очень хорошо работает.