Всем здравствуйте. Подскажите, кто знает, в чем проблема с фильтрацией по свойству заказа типа "Дата" и что делать дальше. Собственно, создаем свойство типа "Дата". http://prntscr.com/ibthbj Пишем код, который выберет нам заказы с нужной датой:
И результата ноль. Естественно, пытался впихнуть и другие форматы даты. Так же добавлял и время на всякий случай. Заказы с датами, попадающие в этот диапазон есть. Вывод напрашивается один - дата хранится строкой и в GetList'е заказов ничего не сделано по этому поводу. А фильтровать надо, без этого никак. Помогите, если кто знает, как вылечить сайт от такого тяжелого недуга. P.S. Как альтернатива - думал создать hl блок с нужными полями дат. А в свойство заказа прилепить привязку к записи из этого инфоблока в виде целого числа. А потом API d7 делать выборки со всеми нужными зависимостями. Если будут другие предложения, буду очень рад и признателен, если вы поделитесь ими.
Спасибо за ответ. Однако, судя по всему, этот фильтр предназначался для свойств инфоблока. И с этим проблем нет, фильтрация по свойствам инфоблока типа "Дата" работает на ура. А вот фильтрация по свойствам заказа типа "Дата" не отличается тем же успехом. Я и в том формате, что вы показали также пробовал фильтровать. Увы и ах.
Боюсь, вам не поможет дамп заказа, т.к. там не выбираются сами свойства. Поэтому, думаю, вам будет полезнее увидеть дамп из таблицы свойств. Но это лишь укоренит подозрения, что там просто строка и это дело никак не обрабатывается.
А так же немного об особенностях фильтрации по свойствам заказа есть прямо в документации, там и описывается момент с PROPERTY_VAL_BY_CODE_... CSaleOrder::GetList
Да не, дело не в этом. Однако все равно попробовал! Но никаких результатов это не принесло. Кошмар на самом деле. Вот как можно было предлагать создать поле типа "Дата", сохранять ее строкой и ничего с этим не делать?! Хотя удивительно, что с этим больше никто не сталкивался... По крайней мере я не находил схожих тем. Только одну, но результатов от ее прочтения не было к сожалению!
Если использовать OrderPropsValueTable::getList с подобным фильтром (value по дате), то чисто теоретически можно получить все id заказов, но это как то через одно место.
Алексей Соловьв написал: Кошмар на самом деле. Вот как можно было предлагать создать поле типа "Дата", сохранять ее строкой и ничего с этим не делать?!
Ну это тоже не точно, вполне может быть что результат в строку трансформируется уже в процессе обработки.
Спасибо за ответы. Проблему не решил. Но сделал в обход немного. Создал hl блок с нужными полями и полем UF_ORDER_ID, и с помощью апи d7 выбираю нужные записи примерно следующим способом:
Все хорошо работает. В секции runtime указываем связь с созданным ранее hl блоком. Про особенности связи можно подчерпнуть вот отсюда. Конкретно мне очень помогло. Отдельное спасибо Андрею за статью и подробные ответы на вопросы в комментариях.
написал: Кошмар на самом деле. Вот как можно было предлагать создать поле типа "Дата", сохранять ее строкой и ничего с этим не делать?!
Дата == строка? да как так (глянул базу так и есть!!!) Мне надо фильтровать заказы по дате свойства заказа . ну почему с битрксом каждый раз надо изобретать велосипед