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


Добавление контрагента


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

#1 Jeka

    Новичок

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

Отправлено 05 Август 2014 - 10:22

В базе в категории "наша компания" заведены 2 организации, соответственно все сотрудники принадлежат либо одной либо второй. Необходимо чтобы при внесении нового контрагента в базу ему присваивалась принадлежность к компании сотрудника кторый внес. Т.е. Есть Наша_компания_1 и ее сотрудник Вася и Наша_копания_2 и ее сотрудник Петя. Необходимо чтобы при внесении Петей контрагента "Новый" в графе Наша компания вставлялась Наша_компания_2. и соответственни если его добавил Вася, то Наша_компания_1.

#2 CbCoder

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

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

Отправлено 05 Август 2014 - 10:55

Вначале необходимо обратится к таблице Наши сотрудники с условием "поле Пользователь из таблицы сотрудников равно значению полю Кто добавил текущей таблицы (контрагентов)". В результате будет выбран сотрудник, привязанный к данному пользователю (добавившему запись). Затем берете из выбранной записи значение поля Организация и заносите его в поле Наша компания текущей таблицы (контрагентов).

#3 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 05 Август 2014 - 15:12

А для блондинок?

Просмотр сообщенияCbCoder (05 Август 2014 - 10:55) писал:

необходимо обратится к таблице Наши сотрудники с условием "поле Пользователь из таблицы сотрудников равно значению полю Кто добавил текущей таблицы (контрагентов)".
Это где и как? В конфигурации таблицы, в каком-то из полей в поле вычисления???

#4 CbCoder

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

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

Отправлено 05 Август 2014 - 15:20

Просмотр сообщенияMouse (05 Август 2014 - 15:12) писал:

А для блондинок? Это где и как? В конфигурации таблицы, в каком-то из полей в поле вычисления???

Любая автоматизация (включая автоматическое заполнение полей) в программе КБ происходит с помощью вычислений. В данном случае, необходимо добавить вычисление в таблицу Контрагенты на событие изменения поля Кто добавил (т.к. заполнение организации напрямую зависит от этого поля). В самом вычислении пишется код, согласно приведенному мною алгоритму. Под "обращением к таблице" подразумевается запрос к ней. Информации о том как писать запросы полно в документации и на этом форуме.

#5 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 08 Август 2014 - 14:40

Т.е., если я правильно понимаю. в самой таблице Контрагенты я завожу поле "Фильтр наша компания" в нем вычисление на событие "изменения поля Кто добавил" $line [Кто добавил] = $line[Наши сотрудники][Пользователь], в поле Наша компания(связь с Наши сотрудники по полю организация) я добавляю по фильтру "для:наша компания" ??? Или нет?

#6 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 08 Август 2014 - 14:58

Вооот нашла нечто подобное на мой взгляд

Просмотр сообщенияCbCoder (08 Август 2014 - 12:59) писал:

Ну, наконец-то. Теперь можно составить запрос к подтаблице, чтобы извлечь нужную запись, а уже из записи достать значения нужных вам полей и поместить их в поля родительской таблицы:

// извлекаем с помощью запроса нужную запись:
$data = data_table("Работа по заявке", "`Заявка №`=".$line['ID']." ORDER BY `Дата` DESC")
// копируем значения нужных полей:
$line['След.действие'] = $data['Действие'];
$line['Исполнить до'] = $data['Дата'];

Это вычисление должно быть в родительской записи на условие "отображение поля След.действие" или "отображение поля Исполнить до" .


#7 CbCoder

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

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

Отправлено 08 Август 2014 - 15:44

Просмотр сообщенияMouse (08 Август 2014 - 14:40) писал:

Т.е., если я правильно понимаю. в самой таблице Контрагенты я завожу поле "Фильтр наша компания" в нем вычисление на событие "изменения поля Кто добавил" $line [Кто добавил] = $line[Наши сотрудники][Пользователь], в поле Наша компания(связь с Наши сотрудники по полю организация) я добавляю по фильтру "для:наша компания" ??? Или нет?

Причем тут фильтр то? О фильтрах в моем сообщении ни слова не было. О каких-то дополнительных полях тоже. Я же вам расписал весь алгоритм, ваш код должен полностью ему соответствовать:

Просмотр сообщенияCbCoder (05 Август 2014 - 10:55) писал:

Вначале необходимо обратится к таблице Наши сотрудники с условием "поле Пользователь из таблицы сотрудников равно значению полю Кто добавил текущей таблицы (контрагентов)". В результате будет выбран сотрудник, привязанный к данному пользователю (добавившему запись). Затем берете из выбранной записи значение поля Организация и заносите его в поле Наша компания текущей таблицы (контрагентов).

// обращаемся к таблице Наши сотрудники, чтобы получить нужного сотрудника по полю Кто добавил:
$sotr = data_table("Наши сотрудники", "`Пользователь`='".$line['Кто добавил']."'")
// копируем значение поля Организация:
$line['Наша компания'] = $sotr['Организация '];

Как видите все достаточно просто. Не нужно самостоятельно придумывать что-то, о чем я не писал.

#8 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 08 Август 2014 - 16:44

Сделала... получается раскрывающийся список в котором можно выбрать организацию, а мне надо чтобы оно само заполнялось. Может я накосячила с самим полем Наша компания? оно у меня связь Наши сотрудники Организация.

#9 CbCoder

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

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

Отправлено 08 Август 2014 - 16:55

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

#10 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 08 Август 2014 - 18:02

Речь идет о таблице Контрагенты. и да я использовала уже существовавшее там поле Наша компания. В таблице контрагенты открыла вкладку вычисления, нажала создать, вставила данный вами код, выбрала событие изменения поля Кто добавил

#11 CbCoder

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

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

Отправлено 09 Август 2014 - 14:21

Тогда поле должно заполняться, после добавления любой новой записи. На старых срабатывать не будет, т.к. не возникает события изменения поля (поле уже заполнено).

#12 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 11 Август 2014 - 09:21

Это я понимаю, но, увы, не срабатывает.

#13 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 11 Август 2014 - 09:23


Ошибка в вычислении.


Контрагенты.Добавление контактного лица
Контрагенты.Добавление партнера из склада
Контрагенты.Отображение поля: Наша компания :

3: // копируем значение поля Организация:
4: $line['f1088'] = $sotr['Организация '];
syntax error, unexpected T_VARIABLE

При попытки добавить компанию вот такая ошибка выпадает


#14 CbCoder

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

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

Отправлено 11 Август 2014 - 09:29

Опечатка в коде - добавьте точку с запятой в конце строки с data_table. И уберите пробел в $sotr['Организация '] - тоже опечатка.

#15 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 11 Август 2014 - 10:47

ААА!!! Заработало!!! Но пока без какой-либо логики пользователь принадлежит компании 1 вставляется компания 2 и наоборот....

#16 CbCoder

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

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

Отправлено 11 Август 2014 - 10:53

Логика полностью обусловлена тем, какая организация привязана к пользователю в таблице Наши сотрудники.

#17 Mouse

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Женщина
  • Город:Минск

Отправлено 11 Август 2014 - 11:26

https://yadi.sk/i/HdM4zyOJZQiqv https://yadi.sk/i/HdM4zyOJZQiqv Скрины сотрудников и компании вроде все верно а добавляет криво

#18 CbCoder

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

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

Отправлено 11 Август 2014 - 12:18

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

#19 Аlex Jet

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

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

Отправлено 03 Октябрь 2016 - 00:10

аналогичная ситуация, но вместо компании пользователя подгружается значение "1", код вычисления:
$sotr = data_table("Наши сотрудники", "`Пользователь`='".$line['Кто добавил']."'");
$line['Компания'] = $sotr['Организация'];
пробовал ставить чтобы вычисление срабатывало на сохранение в таблице, изменение поля Кто добавил, Компания, отображение поля Компания, все равно вместо компании выводится "1"
Белый сервис - сервисный центр, работающий на одной из лучших CRM.

#20 Timur

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

  • Техподдержка ООО "КБ"
  • PipPipPip
  • 854 сообщений
  • Пол:Мужчина

Отправлено 05 Октябрь 2016 - 16:43

Просмотр сообщенияАlex Jet (03 Октябрь 2016 - 00:10) писал:

аналогичная ситуация, но вместо компании пользователя подгружается значение "1", код вычисления:
$sotr = data_table("Наши сотрудники", "`Пользователь`='".$line['Кто добавил']."'");
$line['Компания'] = $sotr['Организация'];
пробовал ставить чтобы вычисление срабатывало на сохранение в таблице, изменение поля Кто добавил, Компания, отображение поля Компания, все равно вместо компании выводится "1"

Лучше использовать для таких вычислений код вида

$result = data_select(46, "f1400 = ", $line['Кто добавил']);
$row = sql_fetch_assoc($result);
$line['Компания'] = $row['f711'];

Проверили работу аналогичного вычисления - оно работает корректно. Возможно проблема в том, что некоторые поля ,участвующие в вычислении не заполнены.

Для дебага используйте код


echo "<pre>";
print_r($line);
print_r($sotr);
echo "</pre>";
exit;







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

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