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


Возможно ли это реализовать?


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

#1 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 26 Апрель 2013 - 06:48

Делаю новую не реальную конфигурацию и немного уперся с функционалом либо просто не понимаю как это реализовать.

Задача такая.
Есть 2 таблицы.
В одной куча контактов Фамилия имя отчество не важно какие данные. И есть поле связь с другим контактом из этой таблицы. Связи в таблице получаются многоуровневые 1 человек может быть связан с 10, в то же время они связаны с другими, а может и не с кем. Получается что-то вроде бесконечной связанности они могут замыкаться в цепочки и так далее. Это реализовано.

Теперь задачка. Во второй таблице я делаю два поля связь В одном выбираю контакт. Выбрали всё ок. Но во втором поле связь я должен получить контакты которые связаны с первым полем связь. Как это сделать? В настройка есть поле сортировать по фильтру. Но я не могу создать такой фильтр т.к. непонятно как задать условие ведь фильтр не сможет получить данных из первого поля связь? Какие есть мысли? как реализовать такую задачку?

Для чего мне это нужно. Пример из жизни.
У меня есть контакт который платит и который получает заказ, но необходимо исключить вариант когда они не связанны, контакты не могут оформить такой заказ. В одной таблице они по тому что могут меняться местами со временем это будет меняться полем связи в их контакте. Существование 3 таблице исключено как в контрагентах базовой конфигурации.
Схема Контрагент а в ней куча контактных лиц исключена. тк перемещение из таблицы в таблицу очень усложняет задачу.
А вообще спасибо вам, за год вы очень круто доработали продукт. Он стал более гибким но и потребности то же выросли))).

#2 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 26 Апрель 2013 - 07:13

Ну и самая главное. Если контакт не связан или сявзан сам с собой. он должен появиться в обоих полях. первой таблицы.

#3 CbCoder

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

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

Отправлено 26 Апрель 2013 - 10:21

Просмотр сообщенияАндрей Гуляев (26 Апрель 2013 - 06:48) писал:

Теперь задачка. Во второй таблице я делаю два поля связь В одном выбираю контакт. Выбрали всё ок. Но во втором поле связь я должен получить контакты которые связаны с первым полем связь. Как это сделать? В настройка есть поле сортировать по фильтру. Но я не могу создать такой фильтр т.к. непонятно как задать условие ведь фильтр не сможет получить данных из первого поля связь? Какие есть мысли? как реализовать такую задачку?

Первое поле должно ссылаться не сам контакт, а на поле связи с другим контактом ("С кем связан" в примере ниже). Тогда во втором поле, при условии фильтра по первому, будет фильтрация именно тех контактов, кто с ним связан.

Пример:

ФИО контакта		С кем связан
Иванов			Сидоров
Петров			Сидоров
Сидоров			Иванов

В этом случае, если выберем вначале Сидорова, то во втором поле выпадут Иванов и Петров

#4 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 26 Апрель 2013 - 18:02

Спасибо! Всё понял, вы еще раз доказали что разработчики на шаг впереди.

#5 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 27 Апрель 2013 - 04:55

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

#6 CbCoder

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

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

Отправлено 27 Апрель 2013 - 11:38

Добавьте еще 3-е поле связи, которое будет видно только в режиме просмотра, и которое будет отображать реальную связь с контрагентом, а не фильтр. Поле будет рассчитываться через вычисление:

$line['3-е поле'] = $line['Поле-фильтр']['С кем связан ']['ID'];

#7 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 29 Апрель 2013 - 18:13

Да всё работает, но это уже подпорки. Как на картинке с деревом и качелями, все программисты её точно видели. Ведь всё гениальное просто, Но пока у меня так не получилось в таблице заказы уже около 40 полей. Проблемма моей последней конфигураци в том что она получилось очень сложной, куча вычислений фильтров и рассылок, смс рассылок, интеграция с платежными системами, иногда я думаю что не я руковожу своим бизнесом а база руководит всем, Так и есть но я боюсь как бы она или оно не зарегистрировало себя как юр лицо и не начало работать само на себя. Думаю я вхожу в то число пользователь которые жмут из этого скрипта максимум Все равно я очень доволен продуктом. Ему нет аналогов, может быть и в мире. А ваша поддержка и быстрые ответы настраивают на стабильность, а это очень важно когда динамика прироста оборотов +14% в месяц. Желаю вам как минимум такой же динамики продаж продукта. Спасибо!

#8 Андрей Гуляев

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

  • Пользователи
  • PipPipPip
  • 94 сообщений
  • Пол:Мужчина

Отправлено 30 Апрель 2013 - 10:56

Подскажите пожалуйста никак не пойму как поставить условие. Если поле Платильшик не связано ни кем скопировать значение связи из заказчика. Как проверить поле на пустоту? Почти сделал но как всегда плохо знаю синтаксис. Оба поля Связь.

if ($line['Платильщик']===NULL)
{
$line['Платильщик'] = $line['Заказчик'];
}

#9 CbCoder

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

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

Отправлено 30 Апрель 2013 - 12:07

if ($line['Платильщик']['raw']==0)
{
   $line['Платильщик'] = $line['Заказчик'];
}

'raw' - значение поля связи в БД





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

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