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


Связь с несколькими таблицами


Сообщений в теме: 5

#1 Whitescorpion

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

  • Пользователи
  • PipPipPip
  • 62 сообщений

Отправлено 23 Октябрь 2017 - 18:57

Доброго времени суток, друзья.
Столкнулся с задачей сделать подтаблицу с отслеживанием корреспонденции. Подтаблица привязана к клиенту.
Существуют поля:
Направление - список - Отправить, принять
Вид отправления - список - Договор, запрос документов, извещение
Отправитель - связь
Получатель - связь
Проблема в том, что необходимо, в зависимости от значений первых двух полей, Отправитель и получатель должны фактически меняться местами. Допустим вносим запись: Направление (Отправить), Вид (Договор), Отправитель (Я), Получатель (ООО РОмашка).
Следующая запись: Направление (Получить), Вид (Договор), Отправитель (ООО Ромашка), Получатель (Я).
Но (Я) и (ООО Ромашка) находимся в разных таблицах.
Можно выкрутиться несколькими полями Отправитель и Получатель со связями в разных таблицах, скрывая некоторые из них с помощью JAVA при выборе различных значений в первых двух полях. Но тогда, при отображении записей подтаблицы в табличном виде (не входя внутрь записи а рассматривая их все в табличном виде) все эти поля Отправитель и получатель будут видны, даже если висит специальный скрипт, т.к. в одной таблице записи могут быть и Отправить и получить.
Можно ли как-то решить задачу. Например объеденить в одном поле "связь" Отправитель несколько таблиц для выбора отправителя?

#2 Tony999

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

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 24 Октябрь 2017 - 00:37

А для чего у Вас Отправитель и Получатель в разных таблицах, как я понимаю?
Почему бы не поместить (слить) их в одну таблицу, а признак отправителя / получателя обозначать в соотв. поле типа список?
На это же поле повесить соотв. фильтр. Тогда бы все и в подтаблице решилось.
Умные сайты на заказ
https://info.crm-master.info

#3 Whitescorpion

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

  • Пользователи
  • PipPipPip
  • 62 сообщений

Отправлено 24 Октябрь 2017 - 15:34

Просмотр сообщенияTony999 (24 Октябрь 2017 - 00:37) писал:

А для чего у Вас Отправитель и Получатель в разных таблицах, как я понимаю?
Почему бы не поместить (слить) их в одну таблицу, а признак отправителя / получателя обозначать в соотв. поле типа список?
На это же поле повесить соотв. фильтр. Тогда бы все и в подтаблице решилось.

Таблица, из которой берется получатель, изначально не для контроля отправляемой почты создавалась. Там хранится список контрагентов. А отправитель - это наши компании или ИП. Соответственно, если поместить их в одну таблицу - это создаст путаницу. Кроме того некоторые данные, которые нужны в одной таблице - не нужны в другой. И наоборот. Для слияния в одну нужно будет их приводить к общему виду, потом писать вычисление, чтобы при добавлении записи в одну из таблиц, эта запись копировалась в общую, да и просто не хочется нагромождать еще одну подтаблицу, в которой будут одинаковые записи из обеих таблиц, только для того, чтобы обеспечить описанный выше функционал.
Думаете других вариантов нет? Только так? Сливать таблицы в одну?
Если другого варианта нет - подскажите, пожалуйста, как лучше всего слить их в одну? Через - экспорт/импорт? Или можно какое-то вычисление придумать.

Сообщение отредактировал Whitescorpion: 24 Октябрь 2017 - 17:22


#4 CbCoder

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

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

Отправлено 24 Октябрь 2017 - 17:47

Все гораздо проще: раз уж у вас у этих двух полей разные источники, то и назовите их соответственно, например Контрагент и Наша компания. У вас вся проблема именно в неправильном именовании полей. Если контрагент может быть и получателем и отправителем, то зачем было называть его Получателем? Тем более направление письма уже задано в соответствующем поле.

Добавлено: точнее, еще проще: т.к. это подтаблица, уже привязанная к контрагенту, то достаточно только поля с "нашими компаниями".

#5 Whitescorpion

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

  • Пользователи
  • PipPipPip
  • 62 сообщений

Отправлено 27 Октябрь 2017 - 17:38

Просмотр сообщенияCbCoder (24 Октябрь 2017 - 17:47) писал:

Все гораздо проще: раз уж у вас у этих двух полей разные источники, то и назовите их соответственно, например Контрагент и Наша компания. У вас вся проблема именно в неправильном именовании полей. Если контрагент может быть и получателем и отправителем, то зачем было называть его Получателем? Тем более направление письма уже задано в соответствующем поле.

Добавлено: точнее, еще проще: т.к. это подтаблица, уже привязанная к контрагенту, то достаточно только поля с "нашими компаниями".

Короче говоря, ничего у меня путного придумать не получилось.
Дело в том, что отправка может быть в обе стороны. Компания <-> Контрагент
Структура такая:
Есть Таблица "Клиенты"
У нее есть подтаблица "Корреспонденция", в которой и требуется вести учет почты.
Есть Таблицы "Контрагенты", "Наши компании"
По каждому клиенту идет обмен с почтой. Причем, как с контрагентами, так и с самим клиентом.
Т.е. возможны варианты, когда
- отправитель - это клиент, получатель контрагент
- Отправитель наша компания, получатель контрагент
- Отправитель наша компания, получатель клиент
- отправитель клиент, получатель наша компания

Внутри записи подтаблицы это все организовать можно. Сделать несколько полей отправитель и несколько получатель и скрывать java скриптами, в зависимости от того, какое направление у письма и какой вид отправления. Но это будет очень неудобно и не информативно, залезать внутрь каждой записи. Поэтому и ломаю голову как сделать красивое отображение в самой подтаблице, когда просматриваешь запись в таблице Клиенты.

#6 CbCoder

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

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

Отправлено 28 Октябрь 2017 - 15:59

Не надо ничего скрывать. Раз так все сложно, сделайте поля Отправитель и Получатель просто списком из трех значений: клиент, контрагент или наша компания. Поля связи Клиент, Контрагент и Наша компания остаются как есть. Да, не так красиво как хотелось, зато вполне будет выполнять свою задачу.





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

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