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


Публикации 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 проставляется всей выборке:


				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 24248-->
<div class=

#24248 Фильтр для поля по нескольким значениям

Отправлено от All_ex74 в 09 Июнь 2014 - 12:23 in Как это сделать

Какой Вы молодец все таки! Спасибо большое за терпение к таким "специалистам" как я. Сейчас быстренько всё поменяю и продолжу...



#24225 Фильтр для поля по нескольким значениям

Отправлено от All_ex74 в 07 Июнь 2014 - 18:05 in Как это сделать

1. Вставил запрос на обновление флага (Флаг=1), но сейчас обновляется поле у всех выбранных строк, а как сделать, чтобы менялся только у первой записи из выбранных запросом?

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, "Заявки");
				}
}


Ошибка на работу вычисления:

				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 24259-->
<div class=

#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']);
		}
}


...и пишет ошибку синтаксиса:


				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 24262-->
<div class=

#24262 Фильтр для поля по нескольким значениям

Отправлено от All_ex74 в 09 Июнь 2014 - 17:47 in Как это сделать

Просмотр сообщенияCbCoder (09 Июнь 2014 - 17:36) писал:

Теперь все окей?

Один косяк не могу исправить - добавил выше ошибку синтаксиса...



#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("Вами была сформирована заявка &#8470;".$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 Как это сделать

Погонял немного и обнаружился "интересный" косяк - если по условиям выборки строки отсутствуют, то заявка скопируется всегда 2 раза... Подскажите, как исправить...

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']);
		}
}



				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 24222-->
<div class=

#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 Как это сделать

Цитата

Да, теперь все верно с $line. Еще раз повторюсь: $line - это массив полей текущей строки, т.к. строки в той таблице, где работает это вычисление, поэтому таблицу указывать не нужно.
...Я вот только не понимаю одного здесь, как в условии выборки полю f3450 будет присвоен выбранный в Заказчике Город и полю f4690 - выбранная в Заказчике услуга? Например f3450 = Барнаул, а f4690 = Ремонт компьютеров.

Цитата

Почему у вас в условии поле ФИО исполнителя (f3460) приравнено к $line['ID']? Что вы хотели этим сказать?

а как правильно будет?

Цитата

Затем у вас должен быть запрос на обновление этой записи, с изменением значения флага на 1, и в следующий раз эта запись уже не попадет в первый запрос.

Так нам же нужно еще и имеющийся уже флаг=1 (значит нужно его как то найти до этого) перезаписать на флаг=0, а так постепенно всем флаг=1 будет присвоен и выбирать некого будет)



#24156 Фильтр для поля по нескольким значениям

Отправлено от All_ex74 в 05 Июнь 2014 - 13:31 in Как это сделать

Здравствуйте. В продолжении темы выше...

Реализовал фильтрацию, применив функционал - фильтр по полю:


				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		

			
	<!--Begin Msg Number 24161-->
<div class=

#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) писал:

Попробую догадаться сам: у вас есть 3 записи: Иванов, Петров, Сидоров. Если я уже выбрал в одной заявке Иванова (из них троих), то в следующей заявке могу выбирать только Петрова или Сидорова, потом только Сидорова, а в 4-й заявке снова всех? (нет не всех, а следующего по кругу и только со значением поля Карточка - Свободна) Так что ли?

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 Как это сделать

Цитата

$line['Заказчики']['Город']['ID'] - это что? Поле Город в таблице Заказчики что ли? В переменной $line нет имен таблиц! Это массив полей текущей строки, в данном случае в таблице Заказчики, поэтому указывать таблицу в $line не нужно!

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) писал:

Вы же вроде умеете делать запросы? Поищите на форуме data_table или data_select.

Если бы умел, то давно бы сделал) Я прошу только в крайне затруднительных для меня случаях, как этот.

Что то вроде этого запроса?:


$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 Как это сделать

Здравствуйте, такой вопрос...

Необходимо реализовать фильтр.

Что бы Исполнитель отсеивался по таб. Города и Сфера услуг + по полю Карточка = Свободна таб. Исполнители,
в зависимости от значений полей Город , Тип услуги , Карточка

Эскиз для общего понимания вопроса:


				
			</div>
		</div>
	</div>
	<br />
</div>
<hr />
<br />

		
		</div>
<script type=