niks111111
Пользователь

Специалист
Постов: 25
graphgraph
 
Поддержание контакта с контрагентом - 25.07.2014 19:03 Добрый день, господа!

Такой вопрос.

Моя задача - периодически оживлять контакт с контрагентами.

Дата последнего контакта фиксируется вкладкой "история контакта" в карточке.

Хотел бы, чтобы можно было отчетом выводить перечень контрагентов, по которым последняя активность была раньше какой-либо даты.

При этом, в отчете, где я ввел просто выборку по дате (меньше или равно текущей), по одному и тому же контакту предсказуемо отображаются ВСЕ записи о контактах с датой меньше введенной.

Как отсечь их так, чтобы в отчет попадала самая молодая из записей?
 
admin
avatar Администратор

Администратор
Постов: 2728
graph
 
В ответ на: Поддержание контакта с контрагентом - 28.07.2014 21:48 Поскольку эта задача требует "подзапроса", то надо создать
отчет с помощью SQL запроса.

Создаем новый отчет, переключаемся на - Использовать язык запросов (SQL)

В верхнее окно, помещаем код
Code:

  if object_id('tempdb..#t'is not null drop table #t create table #t (dt datetime, id_contacts int) insert #t(dt, id_contacts) select min(h.[date]), h.id_contacts from historycontacts   h group by h.id_contacts   select from #t t, contacts k where k.id_contacts=t.id_contacts  and t.dt>@dt



В нижнем вносим параметры.

Параметры
@dt


Наименование параметров
Дата

Тип параметров
дата
 
villkin
Пользователь

Наблюдающий
Постов: 9
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 07.05.2015 15:54 Пожалуйста проясните как работает скрипт. Фактически получается что он делает выборку по последним напоминаниям старше указанной даты. (t.dt>@dt)
Каким образом получить список контактов, последнее общение с которыми было именно ДО определенной даты? (dt) Нужно именно последнее.
Спасибо
 
admin
avatar Администратор

Администратор
Постов: 2728
graph
 
В ответ на: Поддержание контакта с контрагентом - 07.05.2015 17:35 Там была чуть другая задача. Что касается Вашего вопроса - мы не знаем как именно у вас построен рабочий процесс. Если считать что он происходил с записями в Историю контакта, то надо вот так:

Code:

  --1 шаг    переменныечтобы понятно было о чем речьв скрипт их вставлять не надо declare @dt datetime set @dt='2015-03-12 13:01:40.000' --2 шаг  Это список из номеров контакта и даты последнего общениятоже для понимания сути процессаЭто тоже не скриптТут берем контакты и последние даты из истории до определенной даты. select max(h.[date]), h.id_contacts from historycontacts   h where [date]<=@dt group by h.id_contacts --Но поскольку такое (дата+номер контактаредко когда надона третьем шаге используем промежуточную таблицу чтобы далее к ней добавлять все что нам нужно. --3 шагвременная таблица if object_id('tempdb..#t'is not null drop table #t create table #t (dt datetime, id_contacts int) insert #t(dt, id_contacts) select max(h.[date]), h.id_contacts from historycontacts   h where [date]<=@dt group by h.id_contacts -- 4 шагРади примера к временной таблице прикрепляем таблицу Cоntacts select from #t t, contacts k where k.id_contacts=t.id_contacts  --Итогнекий скрипт который выглядит вот так (естественно @dt нужно задать как параметр): if object_id('tempdb..#t'is not null drop table #t create table #t (dt datetime, id_contacts int) insert #t(dt, id_contacts) select max(h.[date]), h.id_contacts from historycontacts   h where [date]<=@dt group by h.id_contacts select from #t t, contacts k where k.id_contacts=t.id_contacts

 
villkin
Пользователь

Наблюдающий
Постов: 9
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 25.05.2015 13:34 Благодарю за подробный ответ! Действительно на выходе получается список всех карточек с последними переговорами до определенной даты.
Мы используем программу именно как вы сказали - записями в историю.
Конечная задача - формировать список для менеджеров из клиентов, с которыми давно не было связи. Так, хотелось бы получить данные в эксель с указанием этой самой даты последней связи, чтобы можно было фильтровать данные.
В идеале - выводить в ту же таблицу последнюю запись в истории контакта.

Возможно ли это? Спасибо.
 
Zheka
avatar Пользователь

Эксперт
Постов: 61
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 25.05.2015 17:22 Я встряну в разговор с Вашего позволения, может я не правильно понял, но я делал такой отчёт через стандартные средства. Т.е. мне нужно сделать выборку по "заброшенным" контрагентам с такой-то даты. Я выбираю менеджера и дату, и отчёт выводит всех контрагентов этого менеджера, по которым нет записей в "истории" после этой даты. И при этом есть экспорт в Excel. Правильно я понял? Сохраняйте тонкую грань между "удержать покупателя" и "прогнуться под покупателя"
 
Zheka
avatar Пользователь

Эксперт
Постов: 61
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 25.05.2015 17:25 Если так, могу помочь как стандартными средствами сделать такой отчёт. Саму запись из истории я у себя не вывожу, т.к. они как правило длинные и всё равно не читабельны ни в отчёте, ни в Excel (надо раздвигать строки и столбцы), а вывожу лишь дату последней записи и параметры контрагента (любые). Но если надо, то можно и саму запись выводить... Сохраняйте тонкую грань между "удержать покупателя" и "прогнуться под покупателя"
 
admin
avatar Администратор

Администратор
Постов: 2728
graph
 
В ответ на: Поддержание контакта с контрагентом - 25.05.2015 17:37 villkin писал(а):
Благодарю за подробный ответ! Действительно на выходе получается список всех карточек с последними переговорами до определенной даты.
Мы используем программу именно как вы сказали - записями в историю.
Конечная задача - формировать список для менеджеров из клиентов, с которыми давно не было связи. Так, хотелось бы получить данные в эксель с указанием этой самой даты последней связи, чтобы можно было фильтровать данные.
В идеале - выводить в ту же таблицу последнюю запись в истории контакта..


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

Конкретно, вот сам запрос, который выделяет последнюю по дате запись (максимальная дата и есть последняя)

Code:

  select max(h.[date]), h.id_contacts from historycontacts   h where [date]<=@dt  group by h.id_contacts



Может Вы имели ввиду, что Вам надо добавить какой то текстовой признак, можно добавить еще и его через лайк.

Например если нужна последняя по времени строка в которой есть ключевое слово “в заказе” можно сделать так:

Code:

  select max(h.[date]), h.id_contacts from historycontacts   h where [date]<=@dt  and [Messagelike '%в заказе%' group by h.id_contacts

 
Zheka
avatar Пользователь

Эксперт
Постов: 61
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 25.05.2015 18:48 admin писал(а):

Например если нужна последняя по времени строка в которой есть ключевое слово “в заказе” можно сделать так:


Кстати, про ключевые слова...Хорошая подсказка, надо эту тему осветить, как легко по ключевым словам в "История контакта" собирать информацию.
Сохраняйте тонкую грань между "удержать покупателя" и "прогнуться под покупателя"
 
villkin
Пользователь

Наблюдающий
Постов: 9
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 01.07.2015 13:20 Да, идея неплохая. Пока мы разбираемся с заброшенными контактами. Кстати, как вы этот вопрос решали стандартными средствами? Буду благодарен за наводку!
 
admin
avatar Администратор

Администратор
Постов: 2728
graph
 
В ответ на: Поддержание контакта с контрагентом - 01.07.2015 16:21 Самый простой и точный вариант, это добавить на Карточку поле - Дата последнего контакта, и тогда простым отчетом через мастера смотрим клиентов у которых дата последнего контакта меньше чем определенный Вами период.
 
villkin
Пользователь

Наблюдающий
Постов: 9
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 01.07.2015 18:26 Согласен, но есть человеческий фактор. Как при этом привязать к полю автоматический скрипт, подставляющий дату из истории?
 
admin
avatar Администратор

Администратор
Постов: 2728
graph
 
В ответ на: Поддержание контакта с контрагентом - 01.07.2015 19:52 Лучше наверное создать SQL - метку прямо на карточке и скриптом вносить туда дату.

Справка по SQL - меткам:
http://a-number.com/index.php?option=com_content&task=view&id=133
 
Zheka
avatar Пользователь

Эксперт
Постов: 61
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 09.07.2015 19:44 Через мастер отчётов создаём новый отчёт.
1. Отмечаем Основную закладку и Историю контактов
2. Выбираем нужные поля в Основной закладке и поля в Истории контактов: Дата созд.записи и Сообщение
3. Делаем удобные названия полей в отчёте
4. Выбираем "Группировка" и указываем для поля "Дата созд.записи" = "Максимум", для остальных полей ставим "Группировать".
5. Следующий шаг "Логические операции".
Здесь выбираем поле "Дата созд.записи" , операция "<=", Поле или значение "Дата" с галочкой "Использовать как параметр", связь "И".
Второе поле я например делал "Менеджер", операция "=", поле или значение "Справочник" с галочкой "Использовать как параметр", связь ничего не ставим.
Всё отчёт готов!
При вызове отчёта появляется диалоговое окно, где я указываю дату и менеджера. Выводится список клиентов конкретного менеджера по которым нет записей в истории после указанной даты.
Сохраняйте тонкую грань между "удержать покупателя" и "прогнуться под покупателя"
 
villkin
Пользователь

Наблюдающий
Постов: 9
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 25.09.2015 03:11 К сожалению, результатом этого фильтра выводится ошибка: Недопустимое имя объекта "#Prom_AdvDCicle"

Кстати, Вы не указали, участвует ли поле пользователь в 1й группировке. Если его не внести, тогда выполнить фильтр по нему будет невозможно.
 
Zheka
avatar Пользователь

Эксперт
Постов: 61
graphgraph
 
В ответ на: Поддержание контакта с контрагентом - 25.09.2015 18:28 У меня в карточках есть специальное поле "менеджер", где указан человек, который НА ДАННЫЙ момент ведёт эту карточку (тип поля справочник). Пользователь в данном случае для меня не подходит, ведь в истории могут быть разные пользователи, а нужно отфильтровать именно те карточки, которые сейчас закреплены за конкретным менеджером.
По ошибке: нужно всё проверить...
Сохраняйте тонкую грань между "удержать покупателя" и "прогнуться под покупателя"
 
© 2005 - 2015 A-Number Software. Все права защищены                          Написать письмо