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


Копирования поля типа связь


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

#1 TelecomMedia

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

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

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

Вычисление в таблице "Контрагенты". Если поле "Логин" т. "Контрагаенты" совпадает с полем "Логин" т. "ХХХ", то необходимо перенести поле "Юр. название" из т. "Контрагенты" в т. "ХХХ".

data_update(661, array("f13141" => $line['Юридическое название']), "f13021='",$line['Логин'],"'");

где: 661 - таблица "ХХХ" куда нужно перенести данные
f13141 - поле "Юридическое название" таблицы "ХХХ". Поле типа связь с таблицей "Контрагенты".
$line['Юридическое название'] - поле в таблице "Контрагенты"
f13021 - поле "Логин" т. "ХХХ"
$line['Логин'] - поле "Логин" т. "Контрагенты".

Если f13141 указать как поле типа текст, то значение записывается в таблицу, но перейти в карточку контрагента не представляется возможным.
А если f13141 оставить полем типа связь, то значение не передается. Пробовал передавать как
$line['Юридическое название']['raw'] - тоже не передавалось.

#2 CbCoder

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

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

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

В поле связи хранится ID связанной записи, соответственно именно его и надо передавать, а не отображаемое в поле связи поле (которое никак не влияет на хранение связи)

#3 TelecomMedia

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

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

Отправлено 24 Апрель 2014 - 13:56

Подскажите, пожалуйста, как в моем случае будет выглядеть код?
А то что-то я совсем запутался)

Сообщение отредактировал fabrika-r: 24 Апрель 2014 - 13:56


#4 CbCoder

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

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

Отправлено 24 Апрель 2014 - 16:38

Вместо $line['Юридическое название'] копировать надо $line['ID'].

Поясняю: вы создали в таблице XXX поле связи с таблицей контрагентов, с отображаемым полем "Юридическое название" (т.е. "Контрагенты.Юридическое название"). Так вот, какое поле отображается, значения не имеет, в БД, в поле связи, хранится все равно ID связанной записи, и соответственно копировать надо именно его.

#5 All_ex74

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

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

Отправлено 24 Май 2014 - 11:17

Подскажите, а как скопировать отображение поля Сфера услуг таб. Исполнители (со связью на таб. Виды услуг) в поле Сфера услуг тхт (текст) своей же таблицы?

Такое вычисление копирует только ID записи таб. Виды услуг, а нужно значение, отображаемое в поле Сфера услуг:


$line['Сфера услуг тхт'] = $line['Сфера услуг']['ID'];


Сообщение отредактировал All_ex74: 24 Май 2014 - 11:19


#6 CbCoder

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

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

Отправлено 24 Май 2014 - 14:10

$line['Сфера услуг'] - это массив всех полей связанной записи. Соответственно, какое поле вам надо скопировать, то и выбираете: $line['Сфера услуг']['Нужное поле'].

#7 All_ex74

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

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

Отправлено 24 Май 2014 - 14:56

А вот еще такой вопрос. Как при копировании поля перевести на лету и записать значение в транслит?:

$line['Сфера услуг тхт'] = $line['Сфера услуг']['Полное название'];

т.е. поле Полное название перевести в транслит и записать в Сфера услуг тхт...

...как применить код ниже?
$str - текст в кириллице
	
	function sms_translit($str)
	{
		$translit = array(
			"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
			"Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
			"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
			"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
			"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
			"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
			"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
			"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
			"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
			"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
			"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
			"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
			"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
		);
		return strtr($str,$translit);
	}

Вопрос снят. Т.к. значения меняться не будут, сделал проще - добавил в связанную таблицу поле Транслит и прописал записям значения в транслите в это поле.

$line['Сфера услуг тхт'] = $line['Сфера услуг']['Транслит'];

Сообщение отредактировал All_ex74: 25 Май 2014 - 18:01






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

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