- Форум CRM программы Клиентская база
- → Публикации All_ex74
Публикации All_ex74
136 публикаций создано All_ex74 (учитываются публикации только с 09-Май 23)
#24254 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 09 Июнь 2014 - 15:00 in Как это сделать
#24257 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 09 Июнь 2014 - 15:22 in Как это сделать
CbCoder (09 Июнь 2014 - 15:06) писал:
Да, заработало все отлично. Но один косяк вылез - если в Заявках есть закрытые Заявки, совпадающие по параметрам выборки, то новые не создаются - ведь стоит запрет на повторное добавление... как исправить?
if ($line['Состояние'] == "Связана") { $zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$line['ID']); // тут в условии запроса нужно как то указать, чтобы проверялись только активные.. if (!$zvka) { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['Исполнитель'] = $row['id']; $zvka['ID'] = insert_query($zvka, "Заявки"); data_update(240, array('f6130'=>1), "id=",$row['id']); } }
#24249 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 09 Июнь 2014 - 13:31 in Как это сделать
if ($line['Состояние'] == "Связана") { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); data_update(240, array('f6130'=>1), "id=",$row['id']); $zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$line['ID']); if (!$zvka) { $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['Исполнитель'] = $row['id']; $zvka['ID'] = insert_query($zvka, "Заявки"); } }
всё заработало, но почему то Флаг=1 проставляется всей выборке:
#24248 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 09 Июнь 2014 - 12:23 in Как это сделать
#24225 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 07 Июнь 2014 - 18:05 in Как это сделать
2. Как правильно назначить переменной $isp значение поля ФИО т. Исполнители, что бы потом скопировать его в поле Исполнитель т. Заявки??
3. И по синтаксису общего запроса на выборку проверьте пож. - я не накосячил? Да и ошибок вроде нет, но всё равно не копируется Исполнитель в Заявку:
if ($line['Состояние'] == "Связана") { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); $isp = $row['f3460']; // у меня не получается назначить переменной значение поля ФИО, где f3460 - поле ФИО т. Исполнители. $flag = $row['f6130']; data_update(240, array($flag=>1), "`status`=0 and `f6130`='0'"); // запрос на обновление флага добавил, но теперь выводит ошибку, что такого поля нет. $zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$line['ID']); if (!$zvka) { $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['Исполнитель'] = $isp['ID']; // тут пытаюсь копировать... $zvka['ID'] = insert_query($zvka, "Заявки"); } }
Ошибка на работу вычисления:
#24259 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 09 Июнь 2014 - 17:01 in Как это сделать
CbCoder (09 Июнь 2014 - 15:44) писал:
поле Заявка (f5620) бывает в двух состояниях: Исполняемая, Завершённая. вот так исправил, добавив условие...
if ($line['Состояние'] == "Связана") { $zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$line['ID'], " AND `Статус`='Исполняемая'"); // выводит ошибку синтаксиса. if (!$zvka) { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['Исполнитель'] = $row['id']; $zvka['ID'] = insert_query($zvka, "Заявки"); data_update(240, array('f6130'=>1), "id=",$row['id']); } }
...и пишет ошибку синтаксиса:
#24262 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 09 Июнь 2014 - 17:47 in Как это сделать
#24350 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 13 Июнь 2014 - 10:42 in Как это сделать
#24345 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 12 Июнь 2014 - 13:12 in Как это сделать
CbCoder (11 Июнь 2014 - 15:11) писал:
Перенес "запрет" ниже выборки - ничего не поменялось, как копировалось по две записи даже при отсутствии результата в выборке, так и осталось. Залез в базу, посмотрел в таблицу cb_calc - все в порядке, код такой же:
if ($line['Состояние'] == "Связана") { $zvka = data_table("Заявки","`status`<>'2' AND `Статус`='Исполняемая' AND `Заказчик`=".$line['ID']); $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); if (!$zvka) { if (!$row) { data_update(240, array('f6130'=>0), "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID']); $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); } $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['Исполнитель'] = $row['id']; $zvka['ID'] = insert_query($zvka, "Заявки"); data_update(240, array('f6130'=>1), "id=",$row['id']); } sendsms("Вами была сформирована заявка №".$zvka['ID']." на услугу ".$line['Связана по услуге']['ID'].". Ожидайте ответа.", $line['Телефон'], "ENU"); }
2. Мало того СМС, пришли скопом (проблема была не в коде, а со стороны агрегатора) и на каждую отправку тоже по две штуки...
#24321 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 11 Июнь 2014 - 14:01 in Как это сделать
1. Нужно как то добавить запрет на копирование вовсе, если выборка по условиям пуста...
if ($line['Состояние'] == "Связана") { $zvka = data_table("Заявки","`status`<>'2' AND `Статус`='Исполняемая' AND `Заказчик`=".$line['ID']); if (!$zvka) { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); if (!$row) { data_update(240, array('f6130'=>0), "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID']); $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); } $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['Исполнитель'] = $row['id']; $zvka['ID'] = insert_query($zvka, "Заявки"); data_update(240, array('f6130'=>1), "id=",$row['id']); } sendsms("Вами была сформирована заявка №".$zvka['ID']." на услугу ".$line['Связана по услуге']['ID'].". Ожидайте ответа.", $line['Телефон'], "ENU"); }
2. Добавил отправку СМС, но что то не отправляет. Хотя в базе данных код отрабатывается... выложу код модуля шлюза - проверьте пожалуйста:
function send_sms() { global $sms; $user = "abc@yagool.ru"; $password = "5BQY5mvklwNX"; $phone = $sms["phone"]; $sender = "ENU"; $text = $sms["text"]; $translit = array( "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G", "Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I", "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N", "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T", "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH", "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"", "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b", "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j", "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l", "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r", "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h", "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y", "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya" ); $text_tran = strtr($text, $translit); $message = $text_tran; if (file_get_contents('http://gate.smsaero.ru/send/?user='.$user.'&password='.md5($password).'&to='.$phone.'&from='.$sender.'&text='.urlencode($message))) { return 'OK'; } else { return 'ERROR'; } }
Заполнено вроде верно - что за хрень такая!..
#24291 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 10 Июнь 2014 - 19:04 in Как это сделать
if ($line['Состояние'] == "Связана") { $zvka = data_table("Заявки","`status`<>'2' AND `Статус`='Исполняемая' AND `Заказчик`=".$line['ID']); if (!$zvka) { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); // если по условиям выборки строки отсутствуют - то заявка скопируется два раза... if (!$row) { data_update(240, array('f6130'=>0), "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID']); $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], " AND `f4690`=", $line['Связана по услуге']['ID'], " AND `f3530`='Свободна' AND `f6130`='0'"); } $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['Исполнитель'] = $row['id']; $zvka['ID'] = insert_query($zvka, "Заявки"); data_update(240, array('f6130'=>1), "id=",$row['id']); } }
#24222 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 07 Июнь 2014 - 16:49 in Как это сделать
if ($line['Состояние'] == "Связана") { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], "AND `f4690`=", $line['Связана по услуге']['ID'], "AND `f3530`='Свободна' AND `f3460`=", $line['ID'], "AND `f6130`=0"); $isp = $row['f3460']; // тут присваиваем значение переменной $zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$line['ID']); // запрет на вторичное размещение - заявка будет размещаться, как вручную оператором, так и внешним запросом... if (!$zvka) { $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']; $zvka['Исполнитель'] = $isp; // а как тут то быть? как отсортировать с массива нужного исполнителя? $zvka['ID'] = insert_query($zvka, "Заявки"); } }
#24221 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 07 Июнь 2014 - 16:38 in Как это сделать
Цитата
Цитата
а как правильно будет?
Цитата
Так нам же нужно еще и имеющийся уже флаг=1 (значит нужно его как то найти до этого) перезаписать на флаг=0, а так постепенно всем флаг=1 будет присвоен и выбирать некого будет)
#24156 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 05 Июнь 2014 - 13:31 in Как это сделать
Реализовал фильтрацию, применив функционал - фильтр по полю:
#24161 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 05 Июнь 2014 - 15:10 in Как это сделать
CbCoder (05 Июнь 2014 - 14:35) писал:
Второй пункт не совсем понял честно говоря. Что значит "при следующем обращении"? При обращении где? В этой же карточке или следующей?
1. Пробовал, не получается сделать фильтрацию по четвертому полю (Карточка). На двух уровнях фильтруется, а при добавлении третьего начинаются косяки. По форуму несколько сообщений с типичной проблемой. Значения у полей Город, ФИО, Сфера услуг в таб. Исполнители статичны (присвоены единожды и навсегда), а у поля Карточка значения постоянно меняются. Вот после того и появляется неверная фильтрация, а то и вовсе ничего не фильтруется - вываливается полным списком, причем по всем указанным полям. Пробовал разные способы, но так и не добился успеха. Думаю это баг. Ну а по массиву подтянутых в поле Исполнитель значений, вычислением, что нельзя никак вытащить нужное и присвоить его данному полю?...
2. Следующий по списку (с значением поля Карточка - Свободна) должен выбираться "глобально" - при любом запросе. Этот же Исполнитель может быть выбран только когда пройдут все по списку... Вот и не знаю как это реализовать - ведь количество Исполнителей со значением поля Карточка - Свободна не нормированное и постоянно меняется.
#23824 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 21 Май 2014 - 10:28 in Как это сделать
CbCoder (21 Май 2014 - 10:27) писал:
Спасибо, буду думать.
#23820 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 21 Май 2014 - 10:11 in Как это сделать
CbCoder (21 Май 2014 - 10:01) писал:
Нет, во всех записях таблицы значения разные - тогда всё таки динамические...
CbCoder (21 Май 2014 - 10:01) писал:
В вашем примере цепочка вполне обоснована: создаешь три таблицы в Справочнике - Страна - Регион - Город и связываешь их полями, ну а как же мне то увязать абсолютно не связываемые таблицы Города и Виды услуг - ведь в каждом из городов будут все эти виды услуг, а не частично??
Может я туплю конечно, подтолкните к ответу)
#23816 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 21 Май 2014 - 09:52 in Как это сделать
CbCoder (21 Май 2014 - 09:47) писал:
Запись в таб. Заявки создаётся с уже присвоенными значениями полям Город и Тип услуги, которые копируются из ещё одной таб. - Заказчики. Поэтому они не выбираются динамически... Хотя...
У меня в настройках поля Исполнители только два значения по полю:
по полю Исполнители. Город и по полю Исполнители. Сфера услуг
А как это проделать с обоими значениями для поля Исполнитель + ещё условие Карточка = Свободна?..
#24163 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 05 Июнь 2014 - 15:39 in Как это сделать
CbCoder (05 Июнь 2014 - 15:24) писал:
1. Я думал, что можно прямым запросом MySQL к базе делать выборку строк по таблице Исполнители, собирать в массив, отфильтровав лишнее назначать значение поля ФИО данному полю Исполнитель...
CbCoder (05 Июнь 2014 - 15:24) писал:
2. Вы правильно догадались) но не совсем. К 4-й заявке кто нибудь из них уже освободится и значение его поля Карточка станет Свободна. Он станет доступен для исполнения, а значит и для выбора. Как тут быть?..
Просто это жизненно необходимо реализовать.
#24165 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 05 Июнь 2014 - 16:27 in Как это сделать
CbCoder (05 Июнь 2014 - 16:03) писал:
Мне и не нужно формировать никакой выпадающий список, я и хочу присваивать значение полю Исполнитель при СОЗДАНИИ Заявки. Просто вычисление будет срабатывать на изменения в БД по полю Тип услуги и при открытии для просмотра Заявки поле Исполнитель должно быть уже заполнено выбранным Исполнителем. Заявка создается вот этим вычислением поля Состояние в таб. Заказчики:
if ($line['Состояние'] == "Связана") { $zvka['Заказчик'] = $line['ID']; $zvka['Город'] = $line['Город']['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']['ID']; $zvka['ID'] = insert_query($zvka, "Заявки"); }
CbCoder (05 Июнь 2014 - 16:03) писал:
Я имею ввиду именно ВЫБОР ИСПОЛНИТЕЛЯ, а не смену значения его Карточки! Я вроде бы все подробно изложил выше...
Например у меня есть три записи: Иванов, Петров, Сидоров. Если я уже выбрал в одной заявке Иванова (из них троих), то в следующей заявке могу выбирать только Петрова или Сидорова, пока выбирал Петрова Иванов уже отработал заявку и "встал в список снова", потом пошёл Сидоров, а в 4-й заявке стал снова доступен Иванов... Пока Исполнитель не освободится от Заявки на которую был выбран и не сменит САМОСТОЯТЕЛЬНО (смена статуса происходит через голосовое IVR-меню внешним запросом к базе) свой статус Карточка - Связана на Карточка - Свободна, он не должен участвовать в выбираемом списке...
#24218 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 07 Июнь 2014 - 16:12 in Как это сделать
#24216 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 07 Июнь 2014 - 15:45 in Как это сделать
Цитата
1. а если не указать таблицу, то как тогда присвоить нужные значения полям для фильтрации при выборке?
2. И как назначить первую запись из выбранного массива (по значениям состояния полей) и не повторить выбор уже использованной до этого? Может всё таки нужна сортировка?
if ($line['Состояние'] == "Связана") { $row = data_select_array(240, "`status`=0 AND `f3450`=", $line['Город']['ID'], "AND `f4690`=", $line['Связана по услуге']['ID'], "AND `f3530`='Свободна' AND `f3460`=", $line['ID'], "AND `f6130`=0"); $isp = $row['f3460']; // тут присваиваем значение переменной $zvka = data_table("Заявки","`status`<>'2' AND `Заказчик`=".$line['ID']); if (!$zvka) { $zvka['Город'] = $line['Город']['ID']; $zvka['Заказчик'] = $line['ID']; $zvka['Тип услуги'] = $line['Связана по услуге']; $zvka['Исполнитель'] = $isp; // а как тут то быть? как отсортировать с массива нужного исполнителя? $zvka['ID'] = insert_query($zvka, "Заявки"); } }
#24182 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 06 Июнь 2014 - 10:30 in Как это сделать
CbCoder (06 Июнь 2014 - 09:33) писал:
Если бы умел, то давно бы сделал) Я прошу только в крайне затруднительных для меня случаях, как этот.
Что то вроде этого запроса?:
$res = data_select(240, "status=0 AND f4690=",$line['Сфера услуг']); // где 240 - id таб. Исполнители, а f4690 - id поля Сфера услуг $row = sql_fetch_array($res); $isp = $row['id'];
Цитата
А дальше ступор... Как сделать запрос по параметрам (выбранным Городом, Типом услуги и параметром Карточка = "Свободна") ведь это же поля связи и выбрать первую запись, но следующую от предыдущей? Пипец мозгу)
Цитата
Мне нужно выбирать не просто Свободного Исполнителя, а всегда Следующего Свободного (с Карточка = Свободна) по списку...
У нас Исполнители - это исполнители бытовых услуг, организации которые платят за нахождение в базе. Им будет обидно, что заявки будут уходить не всем по очереди)
Но как запоминать, что данный Исполнитель уже брался? Наверное поле Флаг в таблице Исполнитель нужно какое то добавить и писать туда 1 при выборе Исполнителя_1, при следующем выборе искать поле Флаг = 1 и выбирать следующего за ним Исполнителя_2 с полем Флаг = 0, затем Исполнителю_1 переписывать поле Флаг в = 0, а Исполнителю_2 поле Флаг = 1, и так далее, простым перебором по циклу, по очереди подставлять значение полю Исполнитель данным запросом.
Но логику то я понять могу, а вот выразить кодом никак, нужна ваша помощь! Думаю, данная логика будет полезна многим на этом форуме. Помогите пожалуйста...
#24169 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 05 Июнь 2014 - 17:35 in Как это сделать
CbCoder (05 Июнь 2014 - 17:24) писал:
Так вот с данным вычислением я и затрудняюсь) можете привести пример? Думаю, вас это не затруднит как меня)
CbCoder (05 Июнь 2014 - 17:24) писал:
У меня действительно проблема с фильтрацией по полю Карточка. Сделал еще раз так, как вы описали выше - поставил поле Карточка выше поля Город и у поля город в фильтре указал фильтр по полю Карточка. Итог тот же. Может зайдете по ссылке и посмотрите?
Вход в Клиентскую Базу
логин: admin
пароль: gkihyA4TZFYJ
#23814 Фильтр для поля по нескольким значениям
Отправлено от All_ex74 в 21 Май 2014 - 08:14 in Как это сделать
- Форум CRM программы Клиентская база
- → Публикации All_ex74