Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)

#
Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
Здравствуйте.

Мне нужно через php вытащить несколько ИЭ. То есть грубо говоря сейчас так:
$param_select = array();
$param_select['information_systems_id'] = 19;
$param_select['information_items_status'] = 1;
$resource = $InformationSystem->GetExternalInformationSystemItem($param_select);
// Распечатаем результат
while($row = mysql_fetch_assoc($resource)){
print_r($row);
}
Но проблема в том, что мне нужна выборка по доп.свойствам. То есть нужно узнать скажем сколько есть элементов, у которых доп.свойство такое-то равно 1 например. А этот метод дает выборку только по основным свойствам
Создание сайтов в Хабаровске - http://web-alt.ru
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
Добрый день!
Присоединяюсь к вопросу, помогите, пожалуйста.
Какие значения можно передавать в параметре GetExternalInformationSystemItem(API http://www.hostcms.ru/api/HostCMS_5/InformationSystem.html#methodGetExternalInformationSystemItem )
В форуме http://www.hostcms.ru/forums/17/5154/ рекомендуется передавать два параметра в API один.
Возможно ли через API отфильтровать ИЭ-ы по доп. св-вам или нужно напрямую через запрос к БД?
Если через запрос, то можно структуру таблиц вкрадце: где искать?
Спасибо
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
genasan писал(а):
Какие значения можно передавать в параметре GetExternalInformationSystemItem
- данный метод вообще можно не использовать. Если нужно отфильтровать инфоэлементы с целью их показа на сайте, то нужно использовать метод ShowInformationSystem класса InformationSystem. Например, фильтрация по двум доп. свойствам сразу(с ИД 16 и 17):
$element['type'] = 1;
$element['prefix'] = 'and (';
$element['property_id'] = 16;
$element['if'] = '=';
$element['value'] = 21;
$element['sufix'] = '';
$property['select'][] = $element;

$element['type'] = 1;
$element['prefix'] = ' OR ';
$element['property_id'] = 17;
$element['if'] = '=';
$element['value'] = 20;

$count_condition = 2;
$having_count= ' HAVING COUNT(information_propertys_items_table.information_propertys_items_id)= '.$count_condition;
$element['sufix']=' ) GROUP BY information_propertys_items_table.information_items_id '.$having_count;

$property['select'][] = $element;
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
Понятно, что выводить ИЭ-ы  через ShowInformationSystem с фильтрацией.
Осталось только построить параметры для фильтрации.
Фильтрация будет осуществляться по нескольким параметрам, значения которых будут задаваться в доп. параметрах ИЭ (типа ИС). Причем при фильтрации не должен получаться пустой результат, т.е. нельзя перечислить просто все возможные значения параметра, а только те, с которыми есть элементы в ИС.
В этом случае, если использовать ShowInformationSystem, то придется отключать постраничный вывод и в xsl строить список параметров, а потом заново формировать постраничный вывод, а это при увеличении количества ИЭ будет очень накладно.
Следовательно нужен механизм, чтобы постороить список доп. параметров у ИЭ после очередной фильтрации (фильтрация по нескольким параметрам) без построения xml
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
genasan писал(а):
Следовательно нужен механизм, чтобы постороить список доп. параметров у ИЭ после очередной фильтрации (фильтрация по нескольким параметрам) без построения xml
- т.е. проблема заключается не в том, как отфильтровать элементы по нескольким доп. свойствам, а как в форме фильтра вывести поля только тех доп. свойств, которые присутствуют у выбранных на текущий момент элементов?
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
natalya писал(а):
— т.е. проблема заключается не в том, как отфильтровать элементы по нескольким доп. свойствам, а как в форме фильтра вывести поля только тех доп. свойств, которые присутствуют у выбранных на текущий момент элементов?

- да, причем не только тех, которые попали на текущую страницу
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
Сутки "на переспросить" - это не слишком? Похожие вопросы год висят на форуме не отвеченные. Интересно, кто писал отзывы на сайте, что техподдержка отвечает ночью через 15 минут? Сами придумали или это информация немного устарела (лет на пять)? У меня один раз суток трое тикет висел "Скоро ответим" потом ответили, что так нельзя и без вариантов. Документация - описание интерфейса админки, ни архитектуры системы, ни практических примеров реализации (спасибо на форуме расписывают). Только на форуме еще куча мусора, болтавни и нерабочих вариантов, как то на замену мануала не тянет. При этом согласен, что система хорошая, но если уж себя так захвалили, то хотя бы наполовину соответствуйте.
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
natalya писал(а):
— данный метод вообще можно не использовать. Если нужно отфильтровать инфоэлементы с целью их показа на сайте, то нужно использовать метод ShowInformationSystem класса InformationSystem. Например, фильтрация по двум доп. свойствам сразу(с ИД 16 и 17):
$element['type'] = 1;
$element['prefix'] = 'and (';
$element['property_id'] = 16;
$element['if'] = '=';
$element['value'] = 21;
$element['sufix'] = '';
$property['select'][] = $element;

$element['type'] = 1;
$element['prefix'] = 'and';
$element['property_id'] = 17;
$element['if'] = '=';
$element['value'] = 20;

$count_condition = 2;
$having_count= ' HAVING COUNT(information_propertys_items_table.information_propertys_items_id)= '.$count_condition;
$element['sufix']=' ) GROUP BY information_propertys_items_table.information_items_id '.$having_count;

$property['select'][] = $element;


http://hostcms.ru/api/HostCMS_5/InformationSystem.html#methodShowInformationSystem
API писал(а):
Обратите внимание, при фильтрации по нескольким дополнительным свойствам они должны указываться через условие OR и должен быть добавлен параметр HAVING, в условие которого количество полей ДОПОЛНИТЕЛЬНЫХ свойств, по которым идет фильтрация (в примере дано значение 2):


OR писать?

А если больше двух, например 5 первое AND остальные  OR?
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
1) Разобрался с ShowInformationSystem, правильно в API, здесь опечатка.

2) Остался открытым вопрос по более полной документации функции GetExternalInformationSystemItem. Возможно через нее получать с фильтром по доп. полям

3) Я наверное занудствую, прошу прощения, но все же хотелось бы понять возможно ли на потоке работать с вашей системой. Может быть лично я вам не симпатичен, поэтому исключительно мои вопросы игнорируются.  Документация не полная, на форуме много противоречий, тех поддержка хорошо если Наталья отвечает (обычно со смыслом, а не отписками), хотя и ей походу надоедает, исходники закрыты, поэтому понять как работает не реально, может это конечно и норма, но после отзывов типа:

Что меня не перестаёт удивлять,так это очень быстрая реакция группы поддержки — в течение часа, максимум двух, как правило, все мои косяки бывают устранены, часто без моего участия. На мой ящик только приходит письмо: «Всё работает, ошибки устранены». Удивительно высокий уровень поддержки. И это при том,что используется бесплатная версия движка!
Ретивых Сергей Вениаминович
Администратор www.fotonmotors.kz

Покажите мне эту волшебную кнопку я тоже как хочу


А теперь Вопрос-сутки-ответ в виде уточняющего вопроса - сутки - "скоро ответим" трое суток
И заказчики обычно не меньше моего вредничают.
Модератор
#
Re: Получение елементов ИС через API (предполагаю GetExternalInformationSystemItem)
genasan,
может проблема не в поддержке? в ней работают люди, искренне старающиеся помочь.
Давайте начнем с того, что форум не является филиалом поддержки и здесь отвечают не только наши сотрудники. По возможность мы стараемся консультировать и на форуме, однако не всегда есть возможность вести двойную переписку по одному и тому же вопросу и в поддержку, и дублировать не форуме.
Если по какой то причине произошла просрочка запроса в поддержку, Вы всегда можете позвонить и узнать судьбу запроса http://www.hostcms.ru/company/contacts/
Авторизация