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


Вопрос по вычислениям


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

#101 AssVlad

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

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

Отправлено 15 Июнь 2012 - 16:09

if ($line['Название']['Название'] == $line['Клиент']['Клиент']) - свзяь проходит по полям Название и Клиент и проверка по этим же полям если совпадают, то Да
{
$line['К'] = "Да";
}

#102 CbCoder

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

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

Отправлено 15 Июнь 2012 - 16:22

Просмотр сообщенияAssVlad (15 Июнь 2012 - 15:50) писал:

Так Вы же сами писали, если нужны данные из подчиненной таблицы, то нужно указывать связь - "$line['Номер']['Маржа']" - это было в прошлом случае

Нет, неправильно, ничего подобного я не писал. Во-первых, это было вычисление в подчиненной таблице, а не основной, и соответственно переменная $line['Номер']['Маржа'] ссылалась на основную запись, а не на подчиненную таблицу, через поле связи "Номер" к полю "Маржа". Где вы тут увидели имя таблицы, тем более подчиненной? Во-вторых, еще раз повторюсь, это был код для подчиненной таблицы, в основной же для доступа к подчиненной записи необходимо использовать функцию data_table, как в первом варианте предыдущего вычисления: http://clientbase.ru...indpost&p=12260 , от которого, как я уже сказал, вы впоследствии сами же отказались, попросив код для подчиненной, но теперь снова натыкаетесь на те же грабли.

#103 AssVlad

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

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

Отправлено 19 Июнь 2012 - 12:02

Я пытаюсь понять принцип работы, но явно что то не выходит! Укажите пожалуйста на мои грабли:

if $PS = data_table("Коммерческие", "`Клиент`=".$line['Название']) //пытаюсь вытащить записи из таблицы "Коммерческие" соответствующей записи в таблице "Контрагенты" через связь Клиент = Название. Если есть такие совпадения, то поле "К" в таблице "Контрагенты" принимает значение "Да"
{
$line['К'] = "Да";
}
у меня вообще после этого запроса пол экрана белым становится!

#104 Гость_Roman_*

  • Гости

Отправлено 19 Июнь 2012 - 12:14

Необходимо заключить условие в круглые скобки условие запроса в одинарные кавычки, поскольку поле у Вас явно текстовое.
if ($PS = data_table("Коммерческие", "`Клиент`='".$line['Название']."'")) /*пытаюсь вытащить записи из таблицы "Коммерческие" соответствующей записи в таблице "Контрагенты" через связь Клиент = Название. Если есть такие совпадения, то поле "К" в таблице "Контрагенты" принимает значение "Да"*/
{
   $line['К'] = "Да";
}
В остальном, вроде бы, всё верно.

#105 AssVlad

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

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

Отправлено 19 Июнь 2012 - 12:22

if ($PS = data_table("Коммерческие", "`Клиент`='".$line['Название']."'"))
{
$line['К'] = "Да";
}

вроде сделал, но ничего не происходит! Статус К не меняется на Да

#106 Гость_Roman_*

  • Гости

Отправлено 19 Июнь 2012 - 12:29

Давайте разбираться. У Вас есть таблица "Коммерческие", в которой есть текстовое поле "Клиент"? Из какой-то другой таблицы Вы делаете запрос используя в условии текстовое поле "Название"? И в таблице присутсвует поле "К"? Если всё верно, то проверяйте названия полей/таблицы в вычислении, возможно, где-то стоит пробел. Также проверьте сработку условия, например
if ($PS = data_table("Коммерческие", "`Клиент`='".$line['Название']."'"))
{
die("Условие сработало");
$line['К'] = "Да";
}
Либо выведите массив результата:

if ($PS = data_table("Коммерческие", "`Клиент`='".$line['Название']."'"))
{
$line['К'] = "Да";
}
print_r($PS);
die();


#107 AssVlad

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

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

Отправлено 19 Июнь 2012 - 12:35

Спасибо! Давайте! Есть стандартная таблица Контрагенты с полем Название и с полем список из значений Да/Нет, есть таблица Коммерческие с полем Клиент (связанное с полем Название). Я хочу сделать: вбиваем нового контрагента без коммерческих поле К принимает занчение Нет, как только появляются коммерческие то поле К принимает значение Да. Первое Ваше вычисление ни к чему не привело, а второе пустой экран! Это получается, что условие не срабатало, а массив пуст???

#108 Гость_Roman_*

  • Гости

Отправлено 19 Июнь 2012 - 12:40

Сейчас Вы всё описали, стало всё понятно. Если "Клиент" - это поле связи, то в нём хранится не само текстовое название, а ИД целевой записи, т. е. ИД записи из таблицы "Контрагенты".
if ($PS = data_table("Коммерческие", "`Клиент`=$ID"))
{
$line['К'] = "Да";
}


#109 AssVlad

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

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

Отправлено 19 Июнь 2012 - 12:44

Да нет! В поле Клиент у меня присутствуют текстовые записи: ООО Трейд а в конфигураторе: Клиент - тип поля связь с Контрагенты - Название

#110 AssVlad

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

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

Отправлено 19 Июнь 2012 - 12:46

Хотя сейчас заработало))))) Не понимаю тогда ничего! И еще вопрос проверка проходит и в Удаленных и Архивных?

#111 Гость_Roman_*

  • Гости

Отправлено 19 Июнь 2012 - 12:49

Неважно, что находится на странице в поле связи - текст, число и т. п. В базе данных в поле связи всегда хранится ИД целевой записи.
Да, проверка происходит и в удалённых и архивных записях.

#112 AssVlad

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

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

Отправлено 19 Июнь 2012 - 12:54

Спасибо большое! Более менее начинаю понимать! А еще вопрос, скорее всего не в вычислениях, но все же! В документации Анкеты говорится о html редакторе (редактирование таблицы) - не нашел! И еще есть ли возможность изменять вид таблиц например (границы и т.п.) представления?

#113 Гость_Roman_*

  • Гости

Отправлено 19 Июнь 2012 - 13:00

В документации анкеты HTML-редактор указан не для КБ, а для системы управления сайтом, куда вставляется код анкеты. У каждого сайта html-редактор свой, либо он может вообще отсутсвовать.

Да, возможность есть. Можно изменить стили представления в коде отображения.

#114 AssVlad

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

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

Отправлено 19 Июнь 2012 - 13:21

"Да, возможность есть. Можно изменить стили представления в коде отображения." - где это можно найти в программе или почитать об этом?

#115 Гость_Roman_*

  • Гости

Отправлено 19 Июнь 2012 - 13:26

В документации по представлениям (отчётам).

#116 AssVlad

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

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

Отправлено 19 Июнь 2012 - 13:31

Спасибо, будем изучать!

#117 Aleksey

    Новичок

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

Отправлено 21 Июнь 2012 - 14:18

Никак не могу решить или найти решение на вопрос: Есть таблицы Компании (К), Улицы (Ул) за которые отвечают определенные компании, Заявки (З). В таблице (Ул) есть связанное поле по имени из таблицы (К). А в таблице (З) есть связные поля по имени (К) и имени (Ул). Необходимо при создании заявки выбрать компанию из таблицы (К), а далее в зависимости от выбранного значения в следующем выпадающем связном списке были значения из таблицы (Ул) по связи (К)->(Ул) т.е. улицы за которые отвечает эта компания.
P.S. Извиняюсь, если похожий вопрос уже был.

Сообщение отредактировал Aleksey: 21 Июнь 2012 - 14:19


#118 CbCoder

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

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

Отправлено 21 Июнь 2012 - 14:41

Во-первых, оба поля связи, К и Ул, должны быть привязаны к одной таблице - "Улицы" (т.е. если у вас поле К привязано к Компаниям - поменяйте связь). После этого, в поле "Улица" можно будет установить фильтр по полю "Компания".

#119 Aleksey

    Новичок

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

Отправлено 21 Июнь 2012 - 15:12

Объясню по другому
Таблицы:
Компания
Улица
Заявки

Связи:
Компания->Улица по названию компании
Заявки-> Компания по названию компании
Заявки->Улица по названию улицы

при создании новой строки в таблице Заявки необходимо после Выбора компании получить для заполнения следующей строки улицы привязанные к этой компании.

#120 CbCoder

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

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

Отправлено 21 Июнь 2012 - 15:31

Зачем "объяснять по другому", не понял Вас? Я прекрасно все уловил с первого раза, уточнять тоже ничего не просил. Мало того, уже выдал вам полностью решение. Или это вы наоборот что-то не поняли?





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

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