Написал это в техподдержку, но продублирую и сюда, потому что тема странная, скорее всего не часто встречается и вообще пока что для меня выглядит как чёрная магия.
Возникла непонятная ситуация. Перестали отображаться некоторые товары в каталоге (да, вот просто так, никто ничего не делал, как обычно). В результате копания, оказалось, что некоторые товары не проходят фильтрацию по активности.
Вот такой вызов обрезает выдачу много каких активных элементов:
А вот такой, естественно, выводит все вообще (из раздела, само собой):
Естественно, запросы к базе формируются почти одинаковые, и отличаются только той самой проверкой 'Y' у ACTIVE.
У элементов в базе поле ACTIVE заполнено как 'Y', в админке они отображаются как активные, но почему-то они не проходят фильтр 'ACTIVE' => 'Y'. Пересохранение элемента решало проблему.
Единственное, что мне пришло в голову, что каким-то образом(может какой-нибудь гадкий хитрец поменял, я не знаю) у некоторых элементов вместо 'Y' который U+0059, стоит что-то очень похожее на него, например греческий 'Υ' (U+03A5). Но код символа у всех 'Y' был одинаковый.
Естественно, все элементы в спешном порядке пересохранили. Сейчас уже даже покопаться в этом не выйдет.
Может кто сталкивался с подобным или есть какие-то идеи на этот счёт? Очень хотелось бы узнать, в чём может быть причина такого поведения.
Возникла непонятная ситуация. Перестали отображаться некоторые товары в каталоге (да, вот просто так, никто ничего не делал, как обычно). В результате копания, оказалось, что некоторые товары не проходят фильтрацию по активности.
Вот такой вызов обрезает выдачу много каких активных элементов:
Код |
---|
CIBlockElement::GetList(array(), array('SECTION_ID' => 1051, 'IBLOCK_ID' => 14, 'ACTIVE' => 'Y'), false, false); |
А вот такой, естественно, выводит все вообще (из раздела, само собой):
Код |
---|
CIBlockElement::GetList(array(), array('SECTION_ID' => 1051, 'IBLOCK_ID' => 14), false, false); |
Естественно, запросы к базе формируются почти одинаковые, и отличаются только той самой проверкой 'Y' у ACTIVE.
У элементов в базе поле ACTIVE заполнено как 'Y', в админке они отображаются как активные, но почему-то они не проходят фильтр 'ACTIVE' => 'Y'. Пересохранение элемента решало проблему.
Единственное, что мне пришло в голову, что каким-то образом(может какой-нибудь гадкий хитрец поменял, я не знаю) у некоторых элементов вместо 'Y' который U+0059, стоит что-то очень похожее на него, например греческий 'Υ' (U+03A5). Но код символа у всех 'Y' был одинаковый.
Естественно, все элементы в спешном порядке пересохранили. Сейчас уже даже покопаться в этом не выйдет.
Может кто сталкивался с подобным или есть какие-то идеи на этот счёт? Очень хотелось бы узнать, в чём может быть причина такого поведения.