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


Объединить несколько полей через вычисления


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

#1 sergmuz

    Новичок

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

Отправлено 09 Декабрь 2014 - 11:06

Простите за ламерский вопрос, только начинаю осваивать КБ:
в стандартной конфигурации в таблицу контрагентов cb_data42 добавил отдельные поля Фамилия f3950, Имя f3940, Отчество f3960, теперь необходимо сделать при сохранении объединение этих нескольких полей в одно, т.е. f435=f3950+' '+f3940+' '+f3960, подскажите пож-та как реализовать через вычисления ?

Спасибо !

#2 CbCoder

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

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

Отправлено 09 Декабрь 2014 - 12:29

$line['ФИО'] = $line['Фамилия']." ".$line['Имя']." ".$line['Отчество'];

http://clientbase.ru...6/calculations/
http://php.net/manua...tors.string.php

#3 sergmuz

    Новичок

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

Отправлено 09 Декабрь 2014 - 13:17

Просмотр сообщенияCbCoder (09 Декабрь 2014 - 12:29) писал:

$line['ФИО'] = $line['Фамилия']." ".$line['Имя']." ".$line['Отчество'];

http://clientbase.ru...6/calculations/
http://php.net/manua...tors.string.php
Спасибо ! Теперь другая проблема, в свойствах поля "ФИО" стоит "Запрещать дублирование значений", но этот триггер почему-то не срабатывает при варианте объединения полей, подскажите пож-та как решить ?

#4 CbCoder

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

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

Отправлено 09 Декабрь 2014 - 13:21

Запрет предназначен для ручного редактирования, работа вычислений никак не регламентируется настройками, вы сами управляете своим кодом.

#5 sergmuz

    Новичок

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

Отправлено 09 Декабрь 2014 - 14:57

Просмотр сообщенияCbCoder (09 Декабрь 2014 - 13:21) писал:

Запрет предназначен для ручного редактирования, работа вычислений никак не регламентируется настройками, вы сами управляете своим кодом.
Хорошо, тогда через вычисления можно проверить уникальность поля ФИО ?

#6 CbCoder

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

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

Отправлено 09 Декабрь 2014 - 18:17

Ищете через запрос к текущей таблице строку с аналогичным ФИО. Примеры запросов есть в документации и здесь на форуме.

#7 sergmuz

    Новичок

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

Отправлено 09 Декабрь 2014 - 18:58

Просмотр сообщенияCbCoder (09 Декабрь 2014 - 18:17) писал:

Ищете через запрос к текущей таблице строку с аналогичным ФИО. Примеры запросов есть в документации и здесь на форуме.
Запрос то найду, а как при совпадении вывести сообщение с предупреждением ? Пример бы, плиз.

#8 CbCoder

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

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

Отправлено 10 Декабрь 2014 - 10:51

Здесь есть пример: http://clientbase.ru...?showtopic=6248

#9 sergmuz

    Новичок

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

Отправлено 10 Декабрь 2014 - 15:45

Просмотр сообщенияCbCoder (10 Декабрь 2014 - 10:51) писал:

Здесь есть пример: http://clientbase.ru...?showtopic=6248
Опять не то, сообщение то выдается, но нужно выдать именно предупреждение о запрете ввода контрагентов с одинаковыми ФИО, т.е. должен быть диалог.

Хорошо, может тогда можно пойти от обратного, коль уникальность значений полей реализована не на уровне триггеров и работает только при вводе значения в конкретное поле, то может можно сделать обратное разложение ФИО на составные Фамилия Имя Отчество ?
т.е. $line['Фамилия']=$line['ФИО' конкест 1] $line['Имя']=$line['ФИО' контекст 2] $line['Отчество']=$line['ФИО' контекст 3]
имеется ввиду сделать так чтобы при вводе в поле ФИО, например Петров Иван Иванович, поля Фамилия, Имя, Отчество принимали соответствующие значения Петров, Иван, Иванович.

Как это реализовать ?

#10 sergmuz

    Новичок

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

Отправлено 11 Декабрь 2014 - 00:24

Ребят, а тут есть еще кто живой ? Или это не форум, а просто чат с CbCoder ?

#11 maksn

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

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

Отправлено 11 Декабрь 2014 - 02:41

Просмотр сообщенияsergmuz (11 Декабрь 2014 - 00:24) писал:

Ребят, а тут есть еще кто живой ? Или это не форум, а просто чат с CbCoder ?

Живые то есть, только пока не очень понятно что Вы хотите, и зачем Вам объединение, а затем разложение ФИО на части
"...Сижу, паяю. CRM починяю..."
Мои разработки

#12 CbCoder

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

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

Отправлено 11 Декабрь 2014 - 09:50

Просмотр сообщенияsergmuz (10 Декабрь 2014 - 15:45) писал:

Как это реализовать ?

Например, так:

list($line['Фамилия'],$line['Имя'],$line['Отчество']) = explode(" ",$line['ФИО']);

Это уже не совсем к КБ относится, скорее вам стоит поизучать мануал PHP, т.к. функции стандартные.

#13 sergmuz

    Новичок

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

Отправлено 11 Декабрь 2014 - 13:12

Просмотр сообщенияmaksn (11 Декабрь 2014 - 02:41) писал:

Живые то есть, только пока не очень понятно что Вы хотите, и зачем Вам объединение, а затем разложение ФИО на части
Спасибо что откликнулись, тут все связано с человеческим фактором, дело в том, что базу заполняют порядка 5 разных людей, один пишет в поле ФИО Петров Иван Иванович, второй Иван Иванович Петров, а третий и вовсе Петров Иван, вот чтобы избежать таких моментов и была поставлена задача руководством чётко разделить поля на Фамилия Имя Отчество, а т.к. существует определенная логика работы базовой конфигурации КБ, которую не хотелось бы рушить, возникла задумка обойтись малой кровью и для сортировки по полю ФИО сделать объединение нескольких полей в одно, в КБ заложен избыточный для нас функционал переключения юр.лицо, физ.лицо, который связан с вычислениями и который возможно в дальнейшем мы задействуем для учета предприятий-клиентов.
Ну вот как бы так, надеюсь логика моих мыслей стала более понятна.

Разложение в этом случае особо ситуацию не спасет, оно нужно лишь для того, чтобы оттянуть время на решение задачи выше и начать заполнять поля таблицы Фамилия Имя Отчество уже сейчас, затем как посоветовал уважаемый CbCoder планировал изучать PHP и за неимением другой помощи самостоятельно ваять необходимый скрипт, SQL знаю не плохо, но тут вижу чистый SQL не используется, необходимо еще знание PHP.

Спасибо что не прошли мимо. :)

Сообщение отредактировал sergmuz: 11 Декабрь 2014 - 13:31


#14 sergmuz

    Новичок

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

Отправлено 12 Декабрь 2014 - 14:21

Друзья неужели никто не может помочь конкретным примером, вопрос то ведь простой, нужно средствами вычислений проверить уникальность значения поля и выдать предупреждение с диалогом (Сохранить ДА/НЕТ/Открыть похожее) ?
Выручайте, горят все сроки.

#15 maksn

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

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

Отправлено 12 Декабрь 2014 - 15:20

Просмотр сообщенияsergmuz (12 Декабрь 2014 - 14:21) писал:

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

Сообщение отредактировал maksn: 12 Декабрь 2014 - 15:22

"...Сижу, паяю. CRM починяю..."
Мои разработки

#16 CbCoder

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

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

Отправлено 13 Декабрь 2014 - 15:13

Есть еще вариант: объединять поле не вычислением, а с помощью яваскрипта. Тогда поле ФИО будет формироваться еще до сохранения записи и соответственно, проверяться на уникальность встроенным функционалом.

#17 ManFree

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

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

Отправлено 23 Декабрь 2014 - 16:09

На каждое поле js проверки после перехода на следующее поле. Не очень понятно в чем действительно проблема
Найдена ф. - Чек 1
Найдена и. Если чек 1. - Чек 2
Найдено о. если чек 2. - отбой

Ну или как там вам еще что нужно проверять

Сообщение отредактировал ManFree: 23 Декабрь 2014 - 16:11






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

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