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


Реквизиты контактного лица и Сотрудники

вычисления поле контактное

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

#1 SAO

    Участник

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

Отправлено 23 Декабрь 2011 - 13:33

Цель вычислений - реквизиты контактного лица автоматически переносить в таблицу Сотрудники (что логично, т.к. К.Л. тоже сотрудник). По совету вашей техподдержки изменил тип контактного лица на Связь, теперь при сохранении таблицы его фамилия появляется в списке Сотрудников. Теперь пытаюсь перенести телефон компании из контрагентов в Сотрудники и привязать его к фамилии перенесенного туда К.Л. За основу взял код из документации раздел Вычисления. При возврате в меню компании программа вываливается с:

get_table: invalid table_id:
#0 get_table() called at [/home/ollen/public_html/include/functions1.php:162] #1 form_event_recurs(Array ([id] => 42,[cat_id] => 1,[table_num] => 1,[name_table] => Контрагенты,[full_name] => Компании,[add_text] => ...
Вычисления:
$contr = data_table("Контрагенты","`id`=$ID");
$sotr = data_table("Сотрудники","`Контрагент`=$ID");
$contr['Фильтр для конт.лица']=$sotr['ID'];
$line['Сотрудники']['Телефон'] = $line['Телефон'];
update_query($contr,"Контрагенты","`id`=$ID");

Используем лицензионную 1.95 версию программы 3062.
Всего доброго
Александр
Оллен Технолаб
service@ollen.ru

#2 CbCoder

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

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

Отправлено 23 Декабрь 2011 - 14:52

Вы неправильно понимаете вычисления с помощью $line. Переменная $line содежит поля текущей строки текущей таблицы, к другой таблице обращаться через нее нельзя. Для обновления данных в другой таблице используйте функцию update_query:

$sotr['Телефон'] = $line['Телефон'];
update_query($sotr,"Сотрудники","`Контрагент`=$ID");


#3 CbCoder

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

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

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

И не совсем понял, зачем вы вставили свою строку в уже существующее вычисление, лучше создавать отдельное, так, как я описал выше. Существующее кстати тоже можно переписать с ипользованием $line (оно было создано до версии 1.9.5, где $line не было):

$sotr = data_table("Сотрудники","`Контрагент`=$ID");
$line['Фильтр для конт.лица'] = $sotr['ID'];


#4 SAO

    Участник

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

Отправлено 24 Декабрь 2011 - 09:22

Просмотр сообщенияРазработчик (23 Декабрь 2011 - 14:52) писал:

Вы неправильно понимаете вычисления с помощью $line. Переменная $line содежит поля текущей строки текущей таблицы, к другой таблице обращаться через нее нельзя. Для обновления данных в другой таблице используйте функцию update_query:
$sotr['Телефон'] = $line['Телефон']; update_query($sotr,"Сотрудники","`Контрагент`=$ID");

Спасибо за поддеоржку! Сделал как Вы посоветовали:
- старое вычисление для контактного лица пока оставил как есть, по замыслу при сохранении таблицы Email и Телефон контрагента, должны вместе с ФИО контактного лица автоматически переносится в Сотрудники.
Пока пробуем перенести только телефон
- создал новое вычисление для контрагенты "Перенос телефона"
$sotr = data_table("Сотрудники","`Контрагент`=$ID");
$sotr['Телефон'] = $line['Телефон'];
update_query($sotr,"Сотрудники","`Контрагент`=$ID");
Выполнять при сохранении таблицы
Увы, поле Телефон в Сотрудники не переносится.
Имеем лицензию на Ollen Technolab, но наша база уже рабочая, поэтому я созал счет
SAOTEST для отработки.
версия программы 3073.
Вход в базу:
Admin пароль 2027877
Александр
service@ollen.ru

#5 CbCoder

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

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

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

Проверил - вычисление работает, телефон переносится. Естественно для этого нужно чтобы хоть одна запись в Сотрудниках была, у вас же не было ни одной. Может вы имели ввиду автоматическое добавление сотрудника, а не перенос телефона? Это совсем другая задача.

#6 SAO

    Участник

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

Отправлено 26 Декабрь 2011 - 14:36

Просмотр сообщенияРазработчик (26 Декабрь 2011 - 09:13) писал:

Проверил - вычисление работает, телефон переносится. Естественно для этого нужно чтобы хоть одна запись в Сотрудниках была, у вас же не было ни одной. Может вы имели ввиду автоматическое добавление сотрудника, а не перенос телефона? Это совсем другая задача.
Еще раз спасибо и с наступающим!
Как я написал в самом первом обращении, мы хотим чтобы К.Л. и реквизиты компании при сохранении таблицы контрагентов автоматически формировали первую свободную запись в подчиненной таблице "Сотрудники" (Консультанты говорят, что раньше так и было!). При этом К.Л. добавляется в ФИО , Телефон и Email соответственно. Я ввел в контагентах поле Должность, относящаяся к К.Л. и это поле должно формировать поле должность в Сотрудники. Нам представляется что это логично, т.к. К.Л. является сотрудником контрагента. Как я понял, Вы ввели вручную в SAOTEST сотрудника Иванов и после этого телефон перевелся из контрагентов в Сотрудники. Пока таблица Сотрудники пуста, она неактивна?
Вы правильно поняли задачу - автоматически добавлять в Сотрудники. Но один раз и только при формировании компании/редактировании поля К.Л. Собственно, в каждом письме сказано, что мы хотим получить. Перенос телефона - только как пример понимания вычислений, остальные реквизиты по аналогии. Подскажите, пожалуста, что еще надо доделать.
Александр
service@ollen.ru

#7 CbCoder

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

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

Отправлено 26 Декабрь 2011 - 14:55

Такого не было раньше. В стандартной конфигурации все реализовано наоборот - вначале необходимо добавить сотрудника в подтаблицу, а затем уже выбрать Контактное лицо (реализованное в виде поля связи) из добавленных сотрудников. Чем Вас такая схема не устраивает? Дублировать данные КЛ (телефон, email, должность) на мой взгляд излишне, их лучше подтягивать из сотрудников.

#8 SAO

    Участник

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

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

Просмотр сообщенияРазработчик (26 Декабрь 2011 - 14:55) писал:

Такого не было раньше. В стандартной конфигурации все реализовано наоборот - вначале необходимо добавить сотрудника в подтаблицу, а затем уже выбрать Контактное лицо (реализованное в виде поля связи) из добавленных сотрудников. Чем Вас такая схема не устраивает? Дублировать данные КЛ (телефон, email, должность) на мой взгляд излишне, их лучше подтягивать из сотрудников.

Это не сработает при добавлении контрагента - сначала появляются его реквизиты в том числе К.Л. а уже после сохранения открывается карточка компании. Затем надо вниз для заполнения таблицы Сотрудники, продублировать К.Л. уже в "Сотрудники" вновь прыгнуть наверх, перейти в редактирование для выбора контактного лица из списка соотрудников и внести из списка в уже заполненное поле. Сработает, но как-то коряво - сами попробуйте добавить компанию. Неужели предлагаемая нами схема тяжела для реализации? Ваша система очень гибкая, поэтому мы ее и выбрали..

#9 CbCoder

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

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

Отправлено 26 Декабрь 2011 - 15:34

Просмотр сообщенияSAO (26 Декабрь 2011 - 15:12) писал:

Это не сработает при добавлении контрагента

Да, забыл что в 1.9.5 подтаблицы не отображаются до сохранения новой записи. Тем не менее я настаиваю что ваша схема все равно не оптимальна. Конечно вы можете сделать т.к. вы считаете нужным, но данная схема сложнее для реализации и требует излишнего дублирования полей.

#10 SAO

    Участник

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

Отправлено 26 Декабрь 2011 - 16:14

Просмотр сообщенияРазработчик (26 Декабрь 2011 - 15:34) писал:

Да, забыл что в 1.9.5 подтаблицы не отображаются до сохранения новой записи. Тем не менее я настаиваю что ваша схема все равно не оптимальна. Конечно вы можете сделать т.к. вы считаете нужным, но данная схема сложнее для реализации и требует излишнего дублирования полей.
По-поводу сложности реализации Вам, конечно виднее.... Я бы реализовал предлагаемую схему и посмотрел в действии.
Может и Вам понравится!
Мы только начали использовать базу, пока много ручной работы и предложение поступило от наших сотрудников. Еще одно соображение - К.Л. обязательно должно быть в "Сотрудники", иначе оно выпадает из рассылок, опять же не хочется дулировать вручную.
Кажется все просто - Добавил поле "Должность" - оно появилось при добавлении контрагента
Соохранил - открыласть карточка компании, должность есть. Внизу ждет заполнения таблица Сотрудники. Неужели сложно сформировать в ней строку из уже существующей таблице? Помогите плиз

#11 CbCoder

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

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

Отправлено 27 Декабрь 2011 - 11:39

Проанализировал еще раз, все таки я был не прав, вашу схему можно реализовать, причем совместив при этом старую и новую. При добавлении нового контрагента можно автоматически добавлять контактное лицо, чуть доработав карточку клиента. После сохранения карточки образуется связь с сотрудником, как и было ранее. В общем доработал стандартную конфигурацию, как все реализовано вы можете посмотреть на test271211.clientbase.ru (логин и пароль admin)

#12 SAO

    Участник

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

Отправлено 27 Декабрь 2011 - 12:55

Просмотр сообщенияРазработчик (27 Декабрь 2011 - 11:39) писал:

Проанализировал еще раз, все таки я был не прав, вашу схему можно реализовать, причем совместив при этом старую и новую. При добавлении нового контрагента можно автоматически добавлять контактное лицо, чуть доработав карточку клиента. После сохранения карточки образуется связь с сотрудником, как и было ранее. В общем доработал стандартную конфигурацию, как все реализовано вы можете посмотреть на test271211.clientbase.ru (логин и пароль admin)
Попробовал - то что надо! Спасибо! Теперь можно преносить вычисления в рабочую базу? Хитростей нет?

#13 CbCoder

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

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

Отправлено 27 Декабрь 2011 - 13:06

Все хитрости я описал в предыдущем сообщении. Если сделаете точно также как на демо аккаунте, должно работать.

#14 SAO

    Участник

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

Отправлено 27 Декабрь 2011 - 16:30

Просмотр сообщенияРазработчик (27 Декабрь 2011 - 13:06) писал:

Все хитрости я описал в предыдущем сообщении. Если сделаете точно также как на демо аккаунте, должно работать.
Все скопировал с демо счета, в целом работает, но почему-то упорно не вставляется E-mail и нет замечательного указания на должность под фамилией контактного лица. Посмотрите, пожалуйста, что не доделал - не хотел беспокоить, но все глаза проглядел, не могу поймать в чем дело..
база SAOTEST admin пароль 2027877
Спасибо Александр

#15 CbCoder

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

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

Отправлено 27 Декабрь 2011 - 17:20

Я вас опять немного обманул, чуть позже до меня дошло что все можно сделать еще проще, без дополнительных полей. Дело в том что сейчас возможность добавления значений уже встроена в само поле связи, при нажатии на плюс справа от поля (в данном случае Контактного лица). Достаточно было добавить туда поле Должность (чтобы оно появилось, его надо сделать обязательным), и через вычисление переносить только телефон и емейл. В общем внес нужные изменения в ваш аккаунт.

Просмотр сообщенияSAO (27 Декабрь 2011 - 16:30) писал:

и нет замечательного указания на должность под фамилией контактного лица
Это указывается в настройках поля связи, "Выводить также поле". Тоже добавил.

#16 SAO

    Участник

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

Отправлено 28 Декабрь 2011 - 08:15

Просмотр сообщенияРазработчик (27 Декабрь 2011 - 17:20) писал:

Я вас опять немного обманул, чуть позже до меня дошло что все можно сделать еще проще, без дополнительных полей. Дело в том что сейчас возможность добавления значений уже встроена в само поле связи, при нажатии на плюс справа от поля (в данном случае Контактного лица). Достаточно было добавить туда поле Должность (чтобы оно появилось, его надо сделать обязательным), и через вычисление переносить только телефон и емейл. В общем внес нужные изменения в ваш аккаунт.


Это указывается в настройках поля связи, "Выводить также поле". Тоже добавил.
Спасибо еще раз с наступающим Новым ГОдом! Теперь с контактным лицом все отлично! Посмотрите,пожалуйста, удаление компаний. Из списка компаний удаляю компанию 123, а затем добавляю с тем же именем. Нажимаю + ввожу контактное лицо, должность, сохраняю К.Л. сохраняю команию. Открылась карточка компании. Открываю подчиненную таблицу Сотрудники и в списке сотрудников вижу тех, которые были в ранее удаленных компаниях 123, причем реквизиты дублируются. Логично, чтобы при удалении компании таблица сотрудников чистилась, похоже этого не происходит.
По оформлению - при нажатии + у контактного лица рамки полей ФИО и Должность практически не видны, а сами поля сливаются с экраном, особенно на ноутбуках с экраном типа Glare. Можно сделать рамки потолще или выделить поля неборским цветов?
Все действия производил с тестовым аккаунтом SAOTEST вход admin пароль 2027877
Александр

#17 CbCoder

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

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

Отправлено 28 Декабрь 2011 - 09:32

Просмотр сообщенияSAO (28 Декабрь 2011 - 08:15) писал:

Открываю подчиненную таблицу Сотрудники и в списке сотрудников вижу тех, которые были в ранее удаленных компаниях 123, причем реквизиты дублируются.
Имеется ввиду подчиненная вкладка внизу основной, или нажатие на ссылку в Связанных таблицах? В первом случае все нормально, во втором действительно есть коллизия. Это исправим позже.

Оформление тоже подправим.

#18 SAO

    Участник

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

Отправлено 28 Декабрь 2011 - 13:22

Просмотр сообщенияРазработчик (28 Декабрь 2011 - 09:32) писал:

Имеется ввиду подчиненная вкладка внизу основной, или нажатие на ссылку в Связанных таблицах? В первом случае все нормально, во втором действительно есть коллизия. Это исправим позже.

Оформление тоже подправим.
Еще раз спасибо! В рабочую базу можно переносить?

#19 CbCoder

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

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

Отправлено 28 Декабрь 2011 - 13:30

Переносите.

#20 SAO

    Участник

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

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

.

Просмотр сообщенияРазработчик (28 Декабрь 2011 - 13:30) писал:

Переносите.

Обновил жо ревизии 3124. Коллизия с сотрудниками удаленных компаний не ушла. Следует ждать новой ревизии? Уйдет ли она в рабочей базе, если я перенесу в нее все усовершенствования?





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

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