Перейти к содержимому


Динамическое изменение фильтра по полю связи

вычисления поле связи фильтры

В теме одно сообщение

#1 arax

    Новичок

  • Пользователи
  • Pip
  • 5 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 02 Февраль 2014 - 16:09

Добрый день.

В исходной конфигурации существует и работает такая конструкция:
Существует таблица "Сотрудники", подчиненная таблице "Контрагенты". Из списка этих самых сотрудников в таблице "Контрагенты" можно выбирать контактное лицо. Сделано это было следующим образом: в таблице "Контрагенты", помимо поля-связи "Контактное лицо", добавлено поле-связь "Фильтр для конт.лица". Оба поля ссылаются на таблицу "Сотрудники". Поле "Контактное лицо" фильтруется по полю "Фильтр для конт.лица". В таблице Контрагентов создано вычисление, выполняющееся по условию Отображение поля "Контактное лицо":
$sotr = data_table("Сотрудники","`Контрагент`=$ID");
$line['Фильтр для конт.лица'] = $sotr['ID'];

Мне понадобилось немного развить этот механизм
Создана таблица "Заказы", в которой есть поле связи с таблицей "Контрагенты", называется "Заказчик".
Нужно было добавить возможность выбора контактного лица из сотрудников выбранного контрагента (Заказчика) при добавлении записи в таблицу "Заказы".
Сделал я это так: создал аналогичные поля-связи "Контактное лицо" и "Фильтр для конт.лица". Оба поля так же ссылаются на таблицу "Сотрудники" и поле "Контактное лицо" фильтруется по полю "Фильтр для конт.лица". В таблице "Заказы" создал вычисление, выполяющееся по условию Изменение поля "Заказчик":
$sotr = data_table("Сотрудники","`Контрагент`=".$line['Заказчик']['ID']);
$line['Фильтр для конт.лица'] = $sotr['ID'];
В принципе, эта схема работает. Но вычисление (а значит и заполнение поля "Фильтр для конт.лица") срабатывает только после сохранении записи в таблице Заказов. То есть при создании нового заказа я не могу выбрать контактное лицо сразу после выбора Заказчика (Контрагента). Только потом, отдельно открыв редактирование уже созданной записи я в поле "Контактное лицо" вижу корректно отфильтрованный список сотрудников. Та же проблема при изменении Заказчика - "перефильтровка" списка сотрудников в поле выбора контакта происходит только после сохранения записи.

Вопрос следующий - можно ли динамически менять значение в служебном поле "Фильтр для конт.лица" и, соответственно, результат "отфильтровки" сотрудников для поля "Контактное лицо"? То есть без промежуточного сохранения записи.

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Февраль 2014 - 16:58

В данном случае костыль в виде поля "Фильтр для конт.лица" не нужен, фильтровать можно напрямую по полю Заказчик, т.к. обе таблицы взаимосвязаны.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных