Search the Community

Showing results for tags 'sugarcrm'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Found 13 results

  1. Максим: Добрый день 11:25:26 Евгений: 11:25:41 добрый! У меня такой вопрос, например у нас IT компания. Нужно чтобы клиенты ставили задачи исполнителям и сами могли менять статус задачи, например "Не выполнена" если они недовольны решением исполнителя 11:27:29 возможно такое? 11:27:35 11:28:22 для этого надо или клиентов пускать в CRM в виде пользователей 11:28:35 или писать на сайте личный кабинет, интегрированный с CRM 11:28:53 ну или просто интегрировать личный кабинет, если он уже написан и там есть такой функционал нет, писать что то лишнее и тратить на это время не хотелось бы. А возможность разделения ролей или создание своих присутствует? 11:29:53 11:30:11 да, есть разделение по ролям 11:30:31 в рамках роли можно либо разрешить править все записи в модуле, либо только свои, либо не править вовсе 11:30:59 с видимостью записей тоже самое 11:31:03 чтобы не видел чужие 11:31:29 только тут вот особенность. под "Своей" подразумевается задача, за которую ответственный текущий пользователь 11:31:51 если клиент назначил кому то задачу, то он сделал ответственным другого пользователя, и сам теряет доступ к этой задаче и не может отслеживать ее статус? 11:32:13 11:32:28 можно хотя немного "допилить" систему, чтобы под "своей" записью подразумевалось кто поставил задачу и кто ответственный за нее 11:33:06 не, статус может отслеживать 11:33:15 например можно сделать, что видит все заявки 11:33:19 но править может только свои 11:33:31 но тогда будет видеть и все заявки других клиентов вот смотрите, я - недовольный клиент, мне не нравится как меня обслужили. Я являясь пользователем этой crm ставлю задачу исполнителю - доделать такой то глюк и назначаю на него. Исполнитель сделал и ставит статус - "Сделано", но я как заказчик недоволен исходом этой правки и опять этой же задаче хочу поставить статус "Не сделано". Возможен такой сценарий? 11:35:57 11:36:42 да 11:36:48 и причем кучей разных способов 11:37:08 от бесплатных но менее удобных до более удобных и доработанных в коде 11:37:37 например когда клиент не доволен и делаю заявку я сразу назначаю исполнителя 11:37:45 у исполнителя в его задачах эта появляется 11:38:02 он по ней отрабатывает и пишет что все. и ответственным за задачу ставит того, кто создал задачу 11:38:13 она возвращается постановщику. он за нее ответственный и видит ее 11:38:16 ему не нравится 11:38:30 он пишет комментарий и опять делает ответственным исполнителя 11:38:40 исполнителю опять эта задача прилетает 11:38:53 и так они могут футболить задачу пока не достигнут дзена 11:39:12 а как все- постановщик ее закрывает и задача улетает в архив вот, то что нужно) 11:39:26 и еще вопрос, последний 11:39:45 например нужны роли 1. Супер Админ, который все может 2. Заявитель 3 Исполнитель. С этими тремя понятно. Но нужен 4ый - менеджер, который просто следит за процессом и смотрит, как исполнитель обслуживает его(менеджера) клиентов, наверное ему должны быть доступны все заявки, может быть даже их редактирование, но согласитесь права супер админа ему давать тоже не дело. 11:42:41 11:43:05 да, можно 11:43:15 сделать роль, которая будет видеть все, но ничего не удалять и не править 11:43:18 без супер-прав 11:44:16 смотрите: роль позволяет для каждого модуля настроить действия: создание/редактирование + просмотр карточки + просмотр в списчке + удаление + импорт + экспорт + массовое обновление 11:44:47 каждое из этих действий можно настроить чтобы был к ним доступ: 1 - к любым записям 2 - вообще не было доступа 3 - к "своим" записям 11:44:53 ну и еще по группам Тоесть можно создавать свои любые роли и гибко настраивать их возможности? 11:45:04 подождите, а модуль - что за сущность? 11:45:17 11:45:24 ну на сколько гибко это конечно понятие относительное... 11:45:33 зачастую гибкости не хватает 11:45:39 но пока из услышанного да, можно 11:45:48 Задачи - это модуль 11:45:55 содержит список записей с задачами а - понятно 11:45:59 тоесть все это можно сделать при помощи стандартных средств - верно? пусть и не крайне удобно, но зато ничего не допиливая 11:46:38 11:46:43 ну по сути пока да ну, все, что я перечислил 11:47:00 пока нам нужно только это, но я думаю мы будем в дальнейшем работать с этой crm. А вы я так понимаю специализируетесь и предлагаете услуги по доработке под дополнительные нужды? 11:48:05 11:48:19 да 11:48:45 SugarCRM/SuiteCRM по сути просто основа с некоторым функционалом, который можно заточить под любой вид деятельности 11:48:52 там только базовые основы и нет как правило специфики 11:48:57 ее я и дописываю понятно, я буду иметь вас в виду. Может быть где то есть прайс? 11:49:47 или каждый раз цена обсуждается в зависимости от задачи 11:50:02 11:50:11 каждый раз обсуждается 11:50:26 это же не товар с фиксированной стоимостью и сроком изготовления... 11:50:35 фиксирована только цена моих услуг = 1500 рублей час согласен 11:50:35 11:50:39 от нее и пляшу понятно, спасибо Евгений 11:51:24 кстати не подскажете какой нибудь гайд по работе? 11:51:50 лучше всего с постановкой задач 11:51:58 даже приемущественно 11:52:11 11:52:44 нет, не подскажу к сожалению 11:53:05 в планах его создать... но это пока планы... времени не хватает понятно, спасибо, всего доброго 11:54:15 11:54:53 спасибо! хорошего дня! нашел мануал, может быть в качестве ликбеза вам будет удобно раздавать своим клиентам http://www.call-center.su/call-center/crm/SugarCRM_manual.pdf 11:58:51 11:59:17 да, был такой 11:59:29 это они дернули из SugarCRM 11:59:39 он не актуальный, но в целом основные вещи отражает 11:59:41 спасибо что, сильно не актуальный?) своё то я там найду? 12:00:13 12:00:22 да, найдете!
  2. Кирилл: Добрый день! Искал на форуме информацию о том - как создать свой вид для отображения карточки редактирования, так и не нашел . Вообще такое возможно ? 11:51:07 Евгений: 11:51:27 Добрый день! для стандартного action=EditView 11:51:56 11:52:32 как правило работа с картами ограничена регулированием состава и месторасположения тех или иных полей и кнопок логика просто нужна такая - в зависимости от выбранного Селекта, показывать или прятать другие поля для редактирования в карте 11:53:11 11:53:37 в базовом функционале SuiteCRM этого нет 11:53:44 подобное есть в SugarCRM Pro 11:53:50 но оно не бесплатно Т.е. лучше создать свои отдельные экшены и там их кастомизировать ?! 11:53:57 11:54:35 лично мой опыт подобного - это подключается к странице javascript, который при помощи jquery отображает/скрывает те или иные поля 11:55:56 ну тоесть настраиваем $('#айдиполясселектом').change(function(){ а тут отображаем или скрываем другие поля}); с этим нет проблем. Просто поля будут местами скрыты и получаются пробелы ) а хочется чтобы они взаимно подтягивались к верху, но так как там таблица, а не бутстраповские grid блоки (к примеру) организовать такую структуру сложнее 11:56:46 вот и хотелось изменить шаблон вывода полей на свой 11:56:56 11:57:00 ну тогда видимо нужно использовать какую то кастомную вьюху вот ))) 11:57:05 можно ли кастомную вьюху создать для стандартного Экшена Редактирования карты ? 11:57:18 переопределить каким то образом ? 11:57:31 12:04:17 да 12:04:19 смотрите 12:04:59 в /custom/modules/Модуль/controller.php можно задавать свои собствннные контроллеры для модуля 12:05:16 В нужном вам модуле добавляете такой файл и в него: 12:05:47 <?php require_once('include/MVC/Controller/SugarController.php'); class МодульController extends SugarController { function action_EditViewCustom() { $this->view = "editcustom"; } } ?> 12:06:00 не, не так 12:06:02 так: 12:06:13 <?php require_once('include/MVC/Controller/SugarController.php'); class МодульController extends SugarController { function action_EditView() { $this->view = "editcustom"; } } ?> 12:06:33 таким образом вы определили свою новую вьюху для стандартного действия EditView 12:06:39 и назвали ее editcustom другие действия. как я понимаю, изменение не затронет ни коим образом?! ) 12:07:00 12:07:03 теперь создаем файл: /custom/modules/Модуль/views/view.editcustom.php 12:07:27 и в нем будет: да этот момент я помню из Ваших видео, довольно смышленая идея так разделить файлы 12:07:30 12:07:45 <?php if (!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); class МодульViewEditCustom extends МодульObjectsViewEdit { } ?> 12:08:16 ну а в нутри уже по образу и подобию того, что есть в /custom/modules/Модуль/views/view.edit.php class AccountsViewDetail extends ViewDetail 12:08:31 только название своего модуля 12:08:43 12:09:00 ViewDetail не путать только с ViewEdit 12:09:10 а так по такому принципу и делать везде это само собой, но там суть видна из названий 12:09:13 12:09:22 и изменения будут касаться только того модуля, где это все определено и того экшена для которого Переопределено 12:09:33 12:09:36 ну да верно ? 12:09:36 12:09:43 для EditView в данном случае ок - попробую сейчас 12:09:44 классы у меня получилось сделать - добился контроля над ситуацией, но остается один вопрос - как подключить теперь файл TPL шаблона и как в него переменне передать ? 13:02:16 13:05:42 через $this->view_object_map['tpl'] 13:06:04 один из вариантов 13:06:05 public function display() { $tpl = $this->view_object_map['tpl']; $sugarSmarty = new Sugar_Smarty(); $sugarSmarty->assign('CALENDAR_FORMAT', $GLOBALS['timedate']->get_cal_date_format()); $sugarSmarty->assign('CALENDAR_FDOW', $GLOBALS['current_user']->get_first_day_of_week()); $sugarSmarty->assign("tpl", $this->view_object_map['tpl']); $sugarSmarty->display($tpl['template']); } 13:06:34 или 13:06:35 global $current_user; $tpl['date_format'] = $current_user->getPreference('date_format'); $tpl['template'] = 'custom/modules/nra_Contracts/tpls/Prolongation.tpl'; $tpl['prolongation_statuses'] = $GLOBALS['app_list_strings']['prolongation_statuses']; $tpl['find_prolongation_statuses'] = $GLOBALS['app_list_strings']['prolongation_statuses']; unset($tpl['find_prolongation_statuses']['']); $tpl['contract_statuses_list'] = $GLOBALS['app_list_strings']['contract_statuses_list']; $tpl['refusal_prolongation_reasons'] = $GLOBALS['app_list_strings']['refusal_prolongation_reasons']; $this->view = "default"; $this->view_object_map['tpl'] = $tpl;
  3. Кирилл: добрый день! Просмотрел ваши видео о SuiteCRM, очень все толково и прекрасно. Больше подобного материала на русском практически нет. Огромное спасибо за труды 12:05:51 Евгений: 12:06:17 добрый! 12:06:19 спасибо! Хотел уточнить, если такое возможно, где можно найти конфигурацию комбобоксов? они в базе все-таки сидят или так же как и поля редактируются в php файле? 12:06:33 12:07:36 Базовые комбобоксы, которые изначально были в системе, лежат в файле /include/language/ru_ru.lang.php а если я свои создаю через конструктор модуля ? 12:07:46 во время создания новых полей 12:07:52 12:08:04 если вы добавляете свои или редактируете базовые, то они лежат в /custom/include/language/ru_ru.lang.php 12:08:25 $GLOBALS['app_list_strings'] - переменная, доступная в системе и содержит все комбобоксы 12:09:26 базовые комбобоксы лучше не редактировать в файле, чтобы оставлять возможность апгрейда системы, и все правки делать в /custom/include/language/ru_ru.lang.php 12:10:06 можно и старые модифицировать, просто новую версию старого комбобокса указывать в /custom/include/language/ru_ru.lang.php да, я так и сделал ) старые не трогая, добавляю новые при создании полей. Ок вопрос. а тогда куда нужно скопировать из файла /custom/include/language/ru_ru.lang.php конфигурацию комбобокса, чтобы его можно было увидеть в Студии, в редакторе комбобоксов ? 12:10:50 12:10:55 никуда 12:11:12 это их нормальное местоположение и студия должна корректно с ними работать без дополнительных действий хм, странно. 12:11:12 12:12:53 вот например у меня есть комбобокс 12:12:54 $GLOBALS['app_list_strings']['nra_sentreports_status_list'] = array( 'new' => 'Сформирован', 'send' => 'Отправлен', ); 12:13:08 и он виден если зайти Администрирование - Редактор комбобоксов а если я его не в коде создавал а через конструтор модулей. Создал новоей поле DropDown и нажал Добавить (в плане добавить новый комбобокс) открылась вкладка, все сделал, сохранил, и где мне найти конфигурацию потом этого комбобокса? Конфигурацию поля я копирую оттуда, как Вы в видео показывали /custom/modulebuilder/packages/ realtor/modules/created_fields_module/vardefs.php в файл /custom/Extension/modules/myModule/Ext/Vardefs/customFields.php 12:15:50 12:17:27 Когда комбобокс создается в конструкторе, он находится в третьем местоположении 12:17:47 поищите его в /custom/Extension/application/Ext/Language 12:17:51 там файлы языковые 12:17:54 для разных модулей 12:17:58 он скорее всего там 12:18:07 но я стараюсь так не делать 12:18:24 я обычно сначало создаю комбобокс в /custom/include/language/ru_ru.lang.php 12:18:36 а потом уже в конструкторе модуля при добавлении поля указываю его Понял суть )) сначала создать Комбобокс, а потом уже при конструировании его привязывать 12:18:43 12:18:47 да Спасибо большое ) разобрался 12:18:58 12:19:03 пожалуйста 12:19:04 удачи Я еще заметил что система работает в основном через Ajax, и создается вопрос, для клиентской части целесообразно использовать фреймворк по типу Angular JS? 12:20:08 12:21:31 и работает она через Ajax кривенько прекривенько 12:21:41 я его обычно для модулей сразу отключаю 12:21:49 хорошо что такая возможность присутствует 12:22:02 наверное можно использовать все, что вам будет удобно 12:22:20 но считаю что лучше стараться в систему не привносить какие то новые технологии 12:22:30 а стараться разобраться с существующими 12:22:49 jquery например с YUI там за глаза хватает 12:23:18 а то будет кладбище разных технологий, которое закостылит весь проект, и после вас там никто разобраться ни с чем не сможет ))) 12:23:21 ка кто так ... Понял. Спасибо за проффессиональный взгляд. И полностью согласен. Система большая и много чего реализовано уже на старте
  4. Виктор: Евгений, добрый день 13:23:04 Евгений: 13:23:18 Добрый! Хотел у Вас поинтересоваться по поводу интеграции CRM. 13:24:04 Выбрать хостинг. Узнать стоимость ваших услуг 13:24:36 13:25:36 если хотите платный хостинг, берите чтобы стоил не менее 500 рублей в месяц 13:25:40 лучше 1000 или две 13:25:47 за эти деньги вам продадут более менее нормальный 13:25:57 это если не вдаваться в технические характеристики 13:26:03 мои услуги стоят 1500 рублей час Вы интегрируете CRM с эластиксом?? Там астерикс с freePBX 13:27:16 13:27:47 подобного опыта нет 13:28:02 но есть большой опыт работы с CRM Мне нужно чтобы оператор работая с CRM мог производить звонки из CRM, у vTiger вроде такая функция есть 13:29:24 И на эластиксе 4 я видел модуль под сахар 13:29:58 13:30:22 в теории я могу разобраться и настроить все это 13:30:33 я видел есть модули для интеграции с астериской 13:30:59 и мог бы или их попробовать поставить и допилить под вас, если такая необходимость будет 13:31:10 но готового предложения у меня нет 13:31:20 я не знаю сколько это будет стоить по поводу хостинга: 13:31:42 http://hosting.reg.ru/hosting/plan/Host-1-1209 13:31:55 такой подойдет 13:32:02 13:32:15 думаю вам будет проще обратиться в компанию, у которой есть опыт подобных интеграций... они хотя бы смогут сказать точную сумму 13:33:46 Объем выделяемой памяти: 256 Мб для каждого скрипта; 13:33:50 я обычно ставлю 512 13:33:55 Максимальный размер выделяемой памяти на процесс: 1 Гб; 13:34:03 не знаю что они под этим подразумевают 13:34:16 я с хостингами давно не имел дел 13:34:34 но если говорить про сервер, то надо чтобы было доступно не менее 2 гигабайт оперативы 13:34:43 это один из основных показателей нужных 13:34:47 можно и на 1 гигабайте 13:35:14 но периодически все будет подвисать. сложные выборки и какие то задачи крона будут или не работать или работать криво Что мне нужно. 3 оператора 3 исполнителя 1 админ постановка задач и ведение клиентской базы для сервисного центра 13:35:25 13:37:18 разместите у меня бесплатно )) Бессплатно- только сыр в мышеловке. Можем у вас произвести настройку проработку, а потом перекинуть??? 13:38:38 13:38:58 да, я как раз на днях добавил возможность скачать всю систему себе с моего хостинга 13:39:15 ну тоесть вы можете зарегистрироваться, получить црм-ку, настроить ее там по своему усмотрению 13:39:27 и в любой момент скачать ее полностью с базой данных и где то там у себя установить уже Вы за оплату сможте ее настоить для нас на своём хостинге, а потом перенести на мой??? 13:40:52 13:41:29 смотрите: установка црм-ки (или нескольких) делаете вы сами просто зарегистрируюясь на этом сайте в админке 13:41:37 вы там можете что хотите с ней делать 13:41:39 в интерфейсе 13:41:44 вам дается админ-доступ к црм 13:41:52 а потом вы также бесплатно можете ее скачать 13:42:02 если будет нужна моя помощь именно как специалиста 13:42:07 или нужно будет как то доделать црм 13:42:11 или помочь вам в чем то 13:42:18 я все смогу для вас сделать за доп.плату 13:42:22 мои услуги стоят 1500 рублей час Может у вас есть готовые решения для сервисного центра??? 13:42:45 13:44:06 нет, у меня нет готовых предложений каких либо бизнесов. хотя у меня и есть куча наработок в тех или иных областях, но у каждого из клиентов слишком все разное, чтобы я мог выделить какую то версию и продавать ее для того или иного вида бизнеса. да и я один работаю. у меня на это просто нет времени Спасибо Вам.
  5. Роман: Здравствуйте! Помогите пожалуйста. Перестали сохраняться данные в созданных мною полях в модуле "Контакты". Что это может быть? 13:59:43 в suitecrm 14:00:07 Евгений: 14:02:33 добрый день! 14:02:41 возможно вы установили себе модуль какой нибудь 14:02:46 который некорректно встал 14:02:58 или у вас расхождения в полях с базой данных 14:03:09 сделайте себе быстрое восстановление 14:03:26 Администрирование - Восстановление - самая верхняя ссылка Быстрое восстановление спасибо огромное, буду пробовать! 14:03:29 14:03:38 там внизу потом сформируются sql-запросы 14:03:43 возможно 14:03:51 если будут - их надо будет тоже выполнить хорошо, спасибо большое
  6. Кирилл: Здравствуйте) Вопрос не стандартный) Так уж вышло что я решил сделать диплом в котором происходит внедрение SugarCRM в компанию. У Вас случайно дипломами не занимаются? ) 12:13:06 Евгений: 12:13:36 Добрый день! 12:13:57 напрямую нет 12:14:11 но я с удовольствием могу поделиться своими знаниями 12:14:36 час моего времени стоит 1500 рублей 12:14:46 за несколько часов я могу из вас сделать неплохого специалиста по шугару 12:14:57 если будете внимательно слушать и стараться разобраться 12:15:08 а потом еще и на работу возьму ))) Дело в том, что диплом у меня практически есть. Точнее есть, но что то мне в нем не устраивает. Вот хотел поинтересоваться на доработку диплома. 12:16:39 Мне нужны блок схемы бизнес процессов. И блок схемы аппаратной части (железо). Настройка sugar CRM и внедрение. Так как у меня специальность электронщик, то нужно больше по железу. как то так 12:20:39 12:23:58 я больше по практическому применению шугара 12:24:02 а не по теории 12:24:07 у меня нет блоксхем 12:24:27 зато есть знания как разворачивать и какие характеристики железа желаемы 12:24:30 и вообще что нужно 12:24:54 а сможет ли вы эту информацию у меня получить и оформить в виде графиков и схем - уже к вам вопрос ))) Понял. Связаться с Вами в сл раз тут же? 12:29:00 12:29:12 да, я обычно онлайн ок! спасибо 12:29:19 12:29:21 ну или пишите на [email protected] хорошо
  7. Михаил: Добрый день! 12:38:45 Евгений: 12:39:02 Добрый! Делаю запрос в SeachFields. 12:39:33 SELECT buildings.`id` FROM buildings LEFT OUTER JOIN realty ON realty.`building_id` = buildings.id WHERE buildings.deleted<>1 AND realty.`deleted`<>1 AND realty.`square` = 12:39:34 В crm находит одно количество записей, а в обычном sql запросе - другое. 12:40:37 База данных одна и та же. Значения одни и те же. 12:41:08 В CRM записей появляется больше. 12:41:18 12:41:58 Посмотрите финальный запрос, который формирует CRM-система после всевозможных преобразований 12:42:11 находится он в файле data/SugarBean.php 12:42:24 function create_new_list_query 12:42:46 if($singleSelect) { unset($ret_array['secondary_where']); unset($ret_array['secondary_from']); unset($ret_array['secondary_select']); } print_r($ret_array['select'] . $ret_array['from'] . $ret_array['where'] . $ret_array['order_by']); if($return_array) { return $ret_array; } return $ret_array['select'] . $ret_array['from'] . $ret_array['where']. $ret_array['order_by']; 12:43:04 вот в конце надо вставить отображение результирующего sql-запроса 12:43:07 print_r($ret_array['select'] . $ret_array['from'] . $ret_array['where'] . $ret_array['order_by']); 12:43:19 и посмотреть что в конечном счете CRM сформировал 12:43:23 может станет понятнее... Спасибо, буду пробовать. 12:43:38 Евгений, вставить после return $ret_array['select'] . $ret_array['from'] . $ret_array['where']. $ret_array['order_by']; 12:50:37 ? 12:50:41 12:51:17 после return код в функции не выполняется 12:51:20 до return Я понял - в конце функции function create_new_list_query 12:52:26 12:52:32 да Первое что заметил это realty.`square` = '200%' Хотя в форме четко указываю 200 12:58:52 13:02:04 знак % подставляется при поиске тектовых значений 13:02:18 чтобы искало не точное соответствие а вхождение подстроки с начало строки 13:02:41 Ну тоесть если ищем слово "сталь", чтобы нашлось "Электросталь" 13:02:58 какой тип у поля square? 13:03:06 varchar? int(11) 13:03:48 Это в sql 13:04:08 13:04:20 а в шугаре? В searchdefs? 13:04:38 13:04:50 в vardef 13:06:22 можно в студии глянуть Кажется, что у меня там вообще ничего нет. 13:06:22 Поле добавил кастомно. Изменения только в SearchFields и в searchdefs 13:08:41 13:09:13 в студии в модуле надо найти это поле и посмотреть какой там тип указан 13:09:26 это Администрирование - Студия - Модуль - Поля 13:09:31 и там в таблице список полей будет 13:09:37 найти его в этом списке 13:09:43 там же должен быть указан тип 13:09:56 он скорее всего Integer будет, но на всякий... Не нахожу такого поля в студии. 13:10:49 Видимо не делал восстановение быстрое. 13:11:07 13:11:23 в модуле realty? 13:11:26 ищите 13:12:10 Integer 13:12:13 Все верно - Integer 14:07:15 14:16:02 Ну вообще такого поведения быть не должно у поля Integer 14:16:18 вот сейчас попробовал с полем типа Integer у себя 14:16:23 SELECT accounts.id ,accounts_cstm.id_custom_c,accounts_cstm.type_c, accounts.name , accounts.phone_office , jt0.user_name assigned_user_name , jt0.created_by assigned_user_name_owner , 'Users' assigned_user_name_mod, accounts.date_entered , accounts.assigned_user_id FROM accounts LEFT JOIN accounts_cstm ON accounts.id = accounts_cstm.id_c LEFT JOIN users jt0 ON accounts.assigned_user_id=jt0.id AND jt0.deleted=0 AND jt0.deleted=0 where ((accounts_cstm.id_custom_c = 5)) AND accounts.deleted=0 ORDER BY accounts.date_entered DESC 14:16:34 id_custom_c = 5 14:16:45 как ввел в фильтре 5 так оно и вывелось 14:17:14 возможно у subquery, если поиск идет по нему, в этом плане не доделаны возможности 14:17:29 я так понимаю оно не проверяет тип поля когда подключает второстепенный запрос 14:18:15 я думаю тут нужно переделывать немного механизм поиска подключаемых запросов - добавлять возможность поиска по прямому запросу без добавления % 14:18:57 возможно в SearchFields.php нужно будет добавить какой то параметр, который будет определять что должно искаться точное соответствие без : 14:18:59 % С этим ясно. Убираю знак % - результат тот же. 14:31:02 Убрал все лишнее из запроса, который у меня отображается в crm 14:31:20 Получилось - 14:31:27 SELECT buildings.id FROM buildings WHERE buildings.id IN (SELECT * FROM ( SELECT buildings.`id` FROM buildings LEFT OUTER JOIN realty ON realty.`building_id` = buildings.id WHERE buildings.deleted<>1 AND realty.`deleted`<>1 AND realty.`square` = '120') square_realty_derived) 14:31:28 Выдает 63 записи. 14:31:49 SELECT buildings.id FROM buildings LEFT OUTER JOIN realty ON realty.`building_id` = buildings.id WHERE buildings.deleted<>1 AND realty.`deleted`<>1 AND realty.`square` = '120' 14:31:51 Выдает 71 14:32:00 14:33:43 а если SELECT DISTINCT buildings.id FROM buildings LEFT OUTER JOIN realty ON realty.`building_id` = buildings.id WHERE buildings.deleted<>1 AND realty.`deleted`<>1 AND realty.`square` = '120' 14:33:44 ? 14:33:52 сколько записей? 63 14:34:15 14:34:30 потому что там или повторяющиеся или NULL 14:34:46 SELECT buildings.id FROM buildings WHERE buildings.id IN (SELECT * FROM ( SELECT buildings.`id` FROM buildings LEFT OUTER JOIN realty ON realty.`building_id` = buildings.id WHERE buildings.deleted<>1 AND realty.`deleted`<>1 AND realty.`square` = '120') square_realty_derived) 14:34:54 какой то слишком навороченный запрос Такой выдается в CRM 14:35:06 Это я его упростил. 14:35:19 SELECT buildings.id , buildings.building_id_for_site , buildings.name , LTRIM(RTRIM(CONCAT(IFNULL(jt0.first_name,''),' ',IFNULL(jt0.last_name,'')))) assigned_user_name , jt0.created_by assigned_user_name_owner , 'Users' assigned_user_name_mod, buildings.date_entered , buildings.assigned_user_id FROM buildings LEFT JOIN buildings_cstm ON buildings.id = buildings_cstm.id_c LEFT JOIN users jt0 ON buildings.assigned_user_id=jt0.id AND jt0.deleted=0 AND jt0.deleted=0 where ((buildings.id IN (select * from (SELECT buildings.`id` FROM buildings LEFT OUTER JOIN realty ON realty.`building_id` = buildings.id WHERE buildings.deleted<>1 AND realty.`deleted`<>1 AND realty.`square` = '120%') square_realty_derived))) AND buildings.deleted=0 ORDER BY buildings.building_id_for_site ASC 14:35:37 Вообще такой. 14:35:43 14:36:18 попробуейт из LEFT OUTER JOIN убрать OUTER 14:36:43 это же ведь ваша вставка в общий запрос? Да. 14:36:53 Ничего не меняет. 14:37:14 14:38:06 SELECT buildings.`id` FROM buildings 14:38:13 заменить на SELECT DISTINCT buildings.`id` FROM buildings 14:38:29 в подставляемом запросе SELECT DISTINCT buildings.id FROM buildings LEFT JOIN realty ON realty.`building_id` = buildings.id WHERE buildings.deleted<>1 AND realty.`deleted`<>1 AND realty.`square` = '120' Выводит 63 записи. 14:40:37 Столько же выводит запрос из crm без distinct, так и с ним. 14:41:15 14:41:42 ну значит не нужны 71 запись 14:41:47 там или лишние или вообще null Я так и понял. Это как-то в этом навороченном запросе обрабатывается, как я понял. 14:42:23 14:42:51 ну потому что ищет id среди того, что нашел select 14:43:01 если селект найдет null, то такого id в базе то нет 14:43:06 и эта запись не учитывается 14:43:17 а если находит нормальное значение - то засчитывается Спасибо!)ъ
  8. Михаил: В шуге поиск в одном модуле по данным из связного можно сделать через студию? 13:51:34 Евгений: 13:51:54 Добрый день! 13:52:50 да, там предусмотрен механизм такой. как искать по тем или иным полям определяется в файле modules/Модуль/metadata/SearchFields.php 13:53:05 Могжно глянуть на примере Accounts: 13:53:14 'email' => array ( 'query_type' => 'default', 'operator' => 'subquery', 'subquery' => 'SELECT eabr.bean_id FROM email_addr_bean_rel eabr JOIN email_addresses ea ON (ea.id = eabr.email_address_id) WHERE eabr.deleted=0 AND ea.email_address LIKE', 'db_field' => array ( 0 => 'id', ), 'vname' => 'LBL_ANY_EMAIL', ), 13:53:48 здесь будет поиск среди записей контрагентов, чей айдишник указан в запросе в виде eabr.bean_id 13:54:02 при этом ea.email_address LIKE - часть общего подзапроса 13:54:06 и будет подставлен емайл 13:54:19 вот по образу и подобию можно делать 13:55:19 вот буквально сегодня делал, чтобы при поиске названия контрагента искались все контрагенты, у которых или имя совпадает с искомой строкой, или в связанной с контрагентом записи из другого модуля название также совпадало с искомой строкой 13:55:32 'name' => array ( 'query_type' => 'default', 'operator' => 'subquery', 'subquery' => array( 'SELECT `id` FROM `accounts` WHERE `deleted` = 0 AND `name` LIKE', 'OR' => 'SELECT `nra_prevnames`.`parent_id` FROM `nra_prevnames` WHERE `nra_prevnames`.`deleted`=0 AND `nra_prevnames`.`name` LIKE', ), 'db_field' => array( 0 => 'id', ), ), 13:56:06 у модуля nra_PrevNames связь с аккаунтами через parent_id 13:57:12 subquery - тут массив. первая строка - чтобы искало по названию в самом модуле с контрагентами, вторая строка - чтобы искало по названию в модуле nra_PrevNames. ключ 'OR' говорит какая связь должна быть (по умолчанию AND) У меня вот такое поле. То есть значение задается, а потом еще и границы указываются. 14:01:15 К нему можно такой способ применить? 14:01:24 14:02:10 ну видимо нужно будет вместо`nra_prevnames`.`name` LIKE указать какое поле будет чему равно 14:02:28 например `realty`.`square` = 14:03:02 ну сам принцип: после этого выражения в финальном sql будет подставлено значение, пришедшее из формы Я понял, спасибо! Буду пробовать! 14:03:36 14:03:37 include/SearchForm/SearchForm2.php 14:03:46 вот в этом файле все это правится 14:04:05 у меня это 992 строка 14:04:06 switch(strtolower($operator)) { 14:04:08 примерно тут 14:04:18 public function generateSearchWhere($add_custom_fields = false, $module='') { 14:04:25 в этой функции 14:04:35 можно посмотреть что там и как генерится О, вот это вообще здорово!) 14:04:51 14:05:21 )) 14:05:44 А через студию это не делается
  9. Стикеры

    Version 1.0.1

    11 downloads

    Модуль предоставляетвозможность приклеить виртуальную заметку в виде стикера в CRM-системе в любом месте экрана. Это может быть удобно, когда хочется в процессе работы что то записать, и чтобы это было на виду: какую то задачу себе, или какие то данные или еще что то, что может вам потребоваться в ближайшее время или что вы хотели бы обработать, но чуть попозже, когда завершите текущую работу. Стикеры будут видны только у того пользователя, который их создал. Чужие стикеры не подсмотреть, а также ваши не увидят другие пользователи.
  10. В этом видео я в карточку Задачи добавляю сверху кнопки, при нажатии на которые Задача переходит в соответствующий статус.
  11. В этом видео я расширяю размер поля с названием проектной задачи до поля типа text (многострочное текстовое поле).