Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Вывод данных из другого раздела по определенному признаку

23.05.2023, 10:57
Gvenv_nk
Наталья Комарова
Gvenv_nk

Зарегистрирован:
2011-11-07
Сообщений: 43

Здравствуйте! Я не программист, поэтому не могу решить простейшую проблему, вся надежда на помощь старших товарищей.

Суть задачи: из длинного списка объектов (справочник контактов организации) нужно выводить в другие разделы (структура организации с множеством подразделов 1 и 2 уровня вложенности) объекты по определенному признаку - например, по полю "индекс подразделения".

Например, в структуре организации есть раздел "Бухгалтерия" с индексом подразделения = 1.3. В исходном компоненте (справочник контактов) есть поле $f_index, которое заполняется в каждом объекте. Т.е. у каждого сотрудника бухгалтерии в форме редактирования в поле "индекс" вводится значение 1.3.

К разделу "Бухгалтерия" в структуре прикреплен компонент, где в пользовательских настройках есть поле "index". Туда вводится соответственно то же значение - 1.3. В самом компоненте ничего нет, кроме вывода объектов через s_list_class с дополнительными параметрами и условием, что, если $cc_settings['index'] в разделе = $f_index в исходном компоненте, то выведутся только объекты с этим индексом.

Проблема в том, что я не понимаю, как правильно написать это условие и передать дополнительный параметр в s_list_class. Голову сломала, но ответов в документации не нашла. Свои бредовые варианты не привожу.

И дополнительный вопрос: нельзя ли как-то решить эту проблему через зеркальный инфоблок? Мне не удалось, в документации не нашла ответа на вопрос, как выводить в зеркальном инфоблоке не все объекты, а только выборку объектов по определенному признаку.

Наталья Комарова
24.05.2023, 13:02
Игорь
Игорь Мишарин
Игорь

Зарегистрирован:
2011-11-20
Сообщений: 479

Какая версия Netcat у Вас, если используется до сих пор s_list_class(), а не nc_objects_list()?
Теперь по Вашему вопросу)).
1. При существующем Вашем варианте - в компоненте s_list_class:
-- делаем так - s_list_class(XXX, YYY, "index=$cc_settings['index']")
ХХХ - ID раздела источника
YYY - ID инфоблока источника

-- в Системных настройках компонента Справочник контактов прописываем:
Код:
if ($index) {
$query_where = "a.index = $index";
}


2. При использовании компонента Справочник контактов зеркальным:
-- в Системных настройках компонента Справочник контактов прописываем:
Код:
if ($current_sub['Subdivision_ID'] == XXX) {
$query_where = "a.index = '1.3'";
}

XXX - ID раздела Бухгалтерия

Stark
198 196 2023-05-24 13:02:17 15356
Описание проекта