Цитата | ||
---|---|---|
Олег Голендухин пишет: Так не работает?
|
Ещё раз большущее спасибо)
25.10.2012 11:18:19
До момента, когда я начал добавлять новые документы в инфоблок, я поставил ему (инфоблоку) статус "участвует в бизнес процессах". И как выяснилось, после этого все документы стали добавляться как "неопубликованные" (родное свойство "BP_PUBLISHED" = "N"). И по этой причине они не улавливаются функцией "CIBlockElement::GetList", даже если в кач-ве фильтра устанавливаем только id инфоблока:
После снятия с инфоблока статуса "участвует в бизнес процессах" Ситуация не меняется, так как ранее добавленные документы всё равно неопубликованы... Также не помогает указывать в фильтрации :
GetList никак на это не реагирует и вытаскивает только опубликованные документы... Хотя по логике работы функции он должен вытащить мне ВСЕ элементы инфоблока, не обращая внимания на отдельные свойства элементов, если я ЯВНО не указываю их в фильтре. Кто подскажет решение проблемы или, хотя, как мне сделать документы опубликованными ? При беглом осмотре инфоблока и его инструментов подобной команды не нашёл, плюс функция CIBlockElement::Update() не помогает решить эту проблему - она не изменяет статус опубликованности документа.... Небольшой баг: В настройках элемента инфоблока галочка "Документ опубликован" влияет на его АКТИВНОСТЬ, а не на опубликованность. Это только вносит путаницу в работу... |
|||||||
|
24.10.2012 19:12:10
Столкнулся с интересной проблемой.
Стандартный инфоблок "документы" Корпоративного портала. В нём находится 55 документов на текущий момент. Что подтверждает функция:
Но! Функция CIBlockElement::GetList() возвращает только около половины элементов (все - с довольно старыми id-шниками):
Возвращает только 29 элементов (было 30, пока я не стёр один из старых элементов), который заканчивается самым последним id, равным 131. Последний добавленный мной элемент имеет id = 740. Добавление в фильтр ID проблемы не решает - таких документов GetList не возвращает:
Но если указать один из старых id (а не новых), которые до этого попадают в "неполный список", возвращаемый GetList - всё выводится... Опять же "Но!" Если запрашивать элемент функцией CIBlockElement::GetByID(740); элемент исправно выводится... В административном интерфейсе все документы (элементы инфоблока) на месте... При подключении модуля "Webdav" - так же выводятся все документы. Но если подключить компонент news.list - выводится опять кастрированный список в 29 элементов... Но они ведь ЕСТЬ ! И я командой GetList прошу их вывести, фильтруя всего лишь по IBLOCK_ID... почему они не выводятся ?! Если кто сталкивался с чем подобным - дайте кто-нибудь хоть какую-то наводку... Почему при запросе напрямую по GetByID элемент есть, а через GetList его нет ??? О_о |
|||||||
|
12.10.2012 17:43:31
Модуль webdav - библиотека документов.
Выглядит как список документов некоего инфоблока и отдельная панелька фильтров поиска по данным документам (инфоблоку) Задача: у инфоблока имеются дополнительные свойства - нужно иметь возможность фильтровать по данным свойствам Проблема: Пользовательские фильтры не работают. Сразу замечу, что разработчики и не предполагали, что можно настраивать фильтры по списку документов... хотя идея, вроде бы, лежит на поверхности - настроить те фильтры, по которым будем искать элементы. В пользу этого говорит тот факт, что фильтры настраиваются только изнутри кода компонента: webdav.section.list/component.php. На 180 строке данного компонента идёт настройка стандартных фильтров:
Два новых фильтра успешно появляются на панели... выбираются... даже сохраняются при переходах внутри папок документов и попадают в результирующий массив фильтрации - $arFilter:
Но... они не работают. Фильтрация не осуществляется! Хотя фильтрация осуществляется по таким полям, как "WF_LOCK_STATUS", которые описаны в API, как стандартный функционал фильтров... Но фильтр по доп. свойствам инфоблока не осуществляется, хотя эти свойства успешно приходят в результирующий массив. Объекты и функции, которые подготавливают массив фильтров: CGridOptions::GetFilter и вытаскивают элементы из инфоблока: $res = $ob->PROPFIND($options, $files, array("FILTER" => $arFilter, "COLUMNS" => $arSelectedFields, "return" => "nav_result", "get_clones" => "Y"); (класс "СWebDavIblock" в API не описаны и даже не упоминаются. Единственный выход который нашёл - фильтровать ещё раз результат уже своими функциями. Кто сталкивался с данной проблемой или может подсказать решение - крайне буду рад любой помощи. |
|||||||
|
10.11.2011 12:05:17
Имеется два инфоблока - организации и специалисты.
У каждого из инфоблоков есть дополнительное свойство, типа "привязка к элементам" - у специалистов это привязка к элементам инфоблока "организации" и, соответсвтенно, наоборот. Вопрос: можно ли в административном интерфейсе как то связать эти свойства инфоблоков ? Т.е. чтобы при добавлнии нового элемента инфоблока "специалист" и привязки к нему свойства от инфоблока "организации" - у соответсвующего элемента инфоблока "организации" автоматически добавился соответсвующий специалист (Если проще - при создании специалиста и вобора ему привязки к организации у соответсвующей организации автоматически прописывался этот специалист тоже) и, соответсвенно, наоборот. Я могу такое реализовать программно на сайте - но это получится, что я, по сути, буду лепить вторую админку: придётся делать отдельный личный кабинет для администратора, что на мой взгляд лишний труд и время... Да и зачем, когда и так есть админка... Весь смысл данной процедуры в том, что на страницах выводятся элементы этих инфоблоков и у организаций должна работать фильтрация по специалистам, как и у специалистов фильтрация по организациям. Не хотелось писать кастомный элемент фильтрации, который осуществлял бы фильтрацию по привязки элементов из другого инфоблока + удобно без лишнего кода выводить подробную информацию при детальном просмотре элемента инфоблока (у этой организации - такие-то специалисты, а этот специалист принадлежит к таким-то организациям). Опять же удобно, просматривая элемент в админке сразу видеть - что у этого специалиста такие-то организации, а у этой организации - такие-то специалисты и сразу подредактировать что нужно. А сейчас у меня всё работает очень некрасиво - при создании организации нужно привязать к ней специалиста, а потом по сути сделать зеркальную операцию - зайти к специалисту и привязать к нему туже самую организацию... Дело усугубляется тем, что сейчас в связи участвуют только 2 инфоблока, но их число будет расти в будущем. Вот я и думаю - можно ли связать перекрёстные свойства инфоблоков с помощью стандартных инструментов битрикса в админке ? |
|
|