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


Публикации TelecomMedia

27 публикаций создано TelecomMedia (учитываются публикации только с 30-Март 23)



#38861 CRON Ошибка

Отправлено от TelecomMedia в 18 Сентябрь 2018 - 15:28 in Как это сделать

Просмотр сообщенияCbCoder (18 Сентябрь 2018 - 13:19) писал:

А много ли записей в таблице? Задача вылетает из-за нехватки памяти. Плюс у вас ошибка - не $line['f15581']['id'], a $line['f15581'], здесь поля связи не разворачиваются.

Да, записей больше 1.2 млн.
А как нам тогда разбиение провести правильно?

Так?
$result = data_select(711, "status=0 AND id<'1000'"); // цикл по всем активным записям таблицы Наши сотрудники
while ($line = sql_fetch_assoc($result)){
/*



#38858 CRON Ошибка

Отправлено от TelecomMedia в 17 Сентябрь 2018 - 16:29 in Как это сделать

Возникает такая ошибка в кроне. В чем может быть причина?

2018-09-17 16:12:13 - OneTime - Task terminated
<br />
<b>Fatal error</b>: Allowed memory size of 536870912 bytes exhausted (tried to allocate 395974400 bytes) in <b>/home/intertorg/public_html/include/sql_functions.php</b> on line <b>69</b><br />

Сам скрипт

$result = data_select(711, "status=0"); // цикл по всем активным записям таблицы Наши сотрудники
while ($line = sql_fetch_assoc($result)){
/*
* Отправить текущую запись в реестр СушиМастер
* 1. Добавляем запись с нужынми полями в таблицу реестра
* 2. Обнуляем поля кроме телефона, города и группы
* 06.09.2018
*/



/*1*/
$newData['Телефон'] = $line['f15541'];
$newData['Группа'] = $line['f15571'];
$newData['Город'] = $line['f15581']['id'];
$newData['Канал отправки'] = $line['f15551'];
$newData['Статус сообщ.'] = $line['f15561'];
$newData['Дата обновления статуса'] = $line['f15611'];
$newData['Статус'] = $line['f15621'];
$newData['Время отправки'] = $line['f15881'];


if($line['id'] >= '1240379' && $line['f15621'] == 'Есть отчет' && $line['f15611'] != ''){
insert_query($newData, 'СушиМастер (реестр)');
}
/*2*/

/*
$line['Канал отправки'] = '';
$line['Статус сообщ.'] = '';
$line['Дата обновления статуса'] = '';
$line['Статус'] = '';
$line['Время отправки (по МСК)'] = '';
*/

}



#38857 Как в SQL запросе получить значение поля связи.

Отправлено от TelecomMedia в 14 Сентябрь 2018 - 16:58 in Как это сделать

Да, я тоже пришел к варианту с 2 запросами. Спасибо.



#38855 Как в SQL запросе получить значение поля связи.

Отправлено от TelecomMedia в 14 Сентябрь 2018 - 15:55 in Как это сделать

Нет, Город - список.
И как нам тогда сравнить поле связи, в котором название города задано как ID(f15581) и Город - который является списком?



#38853 Как в SQL запросе получить значение поля связи.

Отправлено от TelecomMedia в 14 Сентябрь 2018 - 12:15 in Как это сделать

Есть такой запрос:

$sqlQuery = "SELECT count(*) as count FROM ".DATA_TABLE."711 WHERE f15881 >= '".$r_monday." 00:00:00' AND f15881 <= '".$r_sday." 23:59:00' AND f15551 = 'SMS (Б)' AND status='0' AND f15581 = '".$line['Город']."'";

Где f15581 - поле связи.
Такой запрос не выполняется, как нам получить непосредственно значение этого поля, что бы сравнение f15581 = '".$line['Город']. - работало?



#38758 CRON

Отправлено от TelecomMedia в 19 Июль 2018 - 12:23 in Разработчикам

Просмотр сообщенияCbCoder (19 Июль 2018 - 12:21) писал:

У вас в коде есть некий цикл foreach($var as $item), который несколько раз (столько, сколько элементов в $var) перезаписывает $line. Возможно в последнем проходе цикла он в итоге записывает пустые значения, хотя до этого могли быть и корректные (и echo их вывело). Может алгоритм некорректен? Как то странно выглядит многократная перезапись $line в цикле.

Цикл прогоняет все записи полученные по API со стороннего сервиса.
Там по идеи всего 1 раз записываются LINE, т.к. идет сравнение значения в ЦРМ с полученным по АПИ и только в случае соответствия значения перезаписываются.
Такое соответствие всего 1 может быть.



#38755 CRON

Отправлено от TelecomMedia в 19 Июль 2018 - 11:57 in Разработчикам

Скрипт почему-то не обновляет строку после изменения $line.
$result = data_select(380, "status=0"); // цикл по всем активным записям таблицы Наши сотрудники
$snoopyFree = new Snoopy;
$snoopyFree ->proxy_host = $config['proxy_host'];
$snoopyFree ->proxy_port = $config['proxy_port'];
$snoopyFree ->proxy_user = $config['proxy_user'];
$snoopyFree ->proxy_pass = $config['proxy_pass'];

/*
$snoopy = new Snoopy;
$snoopy->proxy_host = $config['proxy_host'];
$snoopy->proxy_port = $config['proxy_port'];
$snoopy->proxy_user = $config['proxy_user'];
$snoopy->proxy_pass = $config['proxy_pass'];
*/
//Мультиподпись (бесплатные имена)
$url="https://smsc.ru/sys/senders.php?get=1&login=sms34&psw=bvn773ked&fmt=3&operators=1";
$url2="https://smsc.ru/sys/senders.php?get=1&login=sms34_sub&psw=dhk736&fmt=3&operators=1";
$snoopyFree ->fetch($url);
$var = $snoopyFree ->results;
$var = json_decode($var,true);
/*
$snoopy->fetch($url2);
$varR = $snoopy->results;
$varR = json_decode($varR,true);
*/
while ($line = sql_fetch_assoc($result)) // помещаем в $line текущую запись на очередном проходе цикла
{
if(intval($line['id']) > 5514){
$senderName = $line['f7200'];
   
    foreach($var as $item){
	    if($item['sender'] == $line['f7200']){
	   
	
		    $mega = $item['mega'];
		    $mts = $item['mts'];
		    $tele = $item['tele2'];
			    echo 'End OF CRON '.$mega.$mts.$tele."<br>";
			   
		    switch($mega){
			    case '0':
			    case '1':
				    $mega = 'Подано';
				    break;
			    case '2':
				    $mega = 'Допущено';
				    break;
			    case '3':
				    $mega = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $mega = 'Отключено';
				    break;
			    case '6':
				    $mega = 'Дубль';
				    break;
			    case '8':
				    $mega = 'Треб. документы';
				    break;
			    default:
				    $mega  = 'Не подано';
				    break;
		    }
		   
		    switch($mts){
			    case '0':
			    case '1':
				    $mts= 'Подано';
				    break;
			    case '2':
				    $mts= 'Допущено';
				    break;
			    case '3':
				    $mts = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $mts= 'Отключено';
				    break;
			    case '6':
				    $mts= 'Дубль';
				    break;
			    case '8':
				    $mts= 'Треб. документы';
				    break;
			    default:
				    $mts = 'Не подано';
				    break;
		    }
		   
		   
		    switch($tele){
			    case '0':
			    case '1':
				    $tele = 'Подано';
				    break;
			    case '2':
				    $tele = 'Допущено';
				    break;
			    case '3':
				    $tele = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $tele = 'Отключено';
				    break;
			    case '6':
				    $tele = 'Дубль';
				    break;
			    case '8':
				    $tele = 'Треб. документы';
				    break;
			    default:
				    $tele = 'Не подано';
				    break;
		    }
		   
	   
		    $line['f7220'] = $mega;
		    $line['f7240'] = $mts;
		    $line['f14211'] = $tele;
		    echo $line['f7220'].PHP_EOL.$line['f7240'].PHP_EOL.$line['f14211']; <- ВОТ ТУТ ДАННЫЕ ПОЛУЧАЮТСЯ КОРРЕКТНЫЕ А НА ВЫХОДЕ ПУТСЫЕ ПОЛЯ
		   // $line['f14201'] = json_encode($item).PHP_EOL.PHP_EOL.'Значения статусов: '.PHP_EOL.' 0 - ожидает регистрации '.PHP_EOL.' 1 - отправлено на регистрацию'.PHP_EOL.' 2 - допущено оператором '.PHP_EOL.' 3 - не принято оператором '.PHP_EOL.' 4 - временно отключено '.PHP_EOL.' 5 - автоотключение из-за окончания баланса '.PHP_EOL.' 6 - дубль другого имени (конфликт) '.PHP_EOL.' 8 - необходимы подтверждающие документы'.PHP_EOL;
	    }
	 
	   }

	  

  /*
    foreach($varR as $item){
	    if($item['sender'] == $line['f7200']){
		    $line['f14201'] = json_encode($item);
		    $mega2 = $item['mega_step'];
		    $beeline2 = $item['bee_step'];
		    $tele2 = $item['tele2_step'];
		    switch($mega2){
			    case '0':
			    case '1':
				    $mega2 = 'Подано';
				    break;
			    case '2':
				    $mega2 = 'Допущено';
				    break;
			    case '3':
				    $mega2 = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $mega2 = 'Отключено';
				    break;
			    case '6':
				    $mega2 = 'Дубль';
				    break;
			    case '8':
				    $mega2 = 'Треб. документы';
				    break;
			    default:
				    $mega2= 'Не подано';
				    break;
		    }
		   
		    switch($beeline2){
			    case '0':
			    case '1':
				    $beeline2= 'Подано';
				    break;
			    case '2':
				    $beeline2= 'Допущено';
				    break;
			    case '3':
				    $beeline2= 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $beeline2= 'Отключено';
				    break;
			    case '6':
				    $beeline2= 'Дубль';
				    break;
			    case '8':
				    $beeline2= 'Треб. документы';
				    break;
			    default:
				    $beeline2= 'Не подано';
				    break;
		    }
		   
		   
		    switch($tele2){
			    case '0':
			    case '1':
				    $tele2 = 'Подано';
				    break;
			    case '2':
				    $tele2 = 'Допущено';
				    break;
			    case '3':
				    $tele2 = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $tele2 = 'Отключено';
				    break;
			    case '6':
				    $tele2 = 'Дубль';
				    break;
			    case '8':
				    $tele2 = 'Треб. документы';
				    break;
			    default:
				    $tele2 = 'Не подано';
				    break;
		    }
		  
		    $line['f14901'] = $mega2;
		    $line['f14911'] = $beeline2;
		    $line['f14921'] = $tele2;
		   
		  
	 }	 
    }
*/

}
data_update(380, $line, "id=",$line['id']); // обновляем текущую строку запросом, если поля в $line менялись!
}



#38731 CRON

Отправлено от TelecomMedia в 09 Июль 2018 - 16:00 in Разработчикам

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

А что конкретно то не работает? На первый взгляд код выглядит корректно.
Не происходит обновление полей. Единственное, что приходит на ум, это то , что мы делаем запрос на сторонний ресурс и мб это из -за того, что много записей и на каждую он тратит время.

А можно как то отследить ,когда заканчивается проход по всем записям?



#38728 CRON

Отправлено от TelecomMedia в 09 Июль 2018 - 12:42 in Разработчикам

Добрый день.
Настраиваем вычисление в кроне.
Все , вроде,по инстркукции, но почему-то не работает.
Отдельно, вне цикла, как доп. действие, код работает.

$result = data_select(380, "status=0"); // цикл по всем активным записям таблицы Наши сотрудники
while ($line = sql_fetch_assoc($result)) // помещаем в $line текущую запись на очередном проходе цикла
{

$snoopy = new Snoopy;
$snoopy->proxy_host = $config['proxy_host'];
$snoopy->proxy_port = $config['proxy_port'];
$snoopy->proxy_user = $config['proxy_user'];
$snoopy->proxy_pass = $config['proxy_pass'];
$url="https://smsc.ru/sys/senders.php?get=1&login=sms34&psw=bvn773ked&fmt=3&operators=1";
$snoopy->fetch($url);
$var = $snoopy->results;
$var2 = json_decode($var,true);

$senderName = $line['f7200'];
   
    foreach($var2 as $item){
	    if($item['sender'] == $line['f7200']){
		    $mega = $item['mega'];
		    $mts = $item['mts'];
		    $tele = $item['tele2'];
		    switch($mega){
			    case '0':
			    case '1':
				    $mega = 'Подано';
				    break;
			    case '2':
				    $mega = 'Допущено';
				    break;
			    case '3':
				    $mega = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $mega = 'Отключено';
				    break;
			    case '6':
				    $mega = 'Дубль';
				    break;
			    case '8':
				    $mega = 'Треб. документы';
				    break;
			    default:
				    $mega  = 'Не подано';
				    break;
		    }
		   
		    switch($mts){
			    case '0':
			    case '1':
				    $mts= 'Подано';
				    break;
			    case '2':
				    $mts= 'Допущено';
				    break;
			    case '3':
				    $mts = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $mts= 'Отключено';
				    break;
			    case '6':
				    $mts= 'Дубль';
				    break;
			    case '8':
				    $mts= 'Треб. документы';
				    break;
			    default:
				    $mts = 'Не подано';
				    break;
		    }
		   
		   
		    switch($tele){
			    case '0':
			    case '1':
				    $tele = 'Подано';
				    break;
			    case '2':
				    $tele = 'Допущено';
				    break;
			    case '3':
				    $tele = 'Отклонено';
				    break;
			    case '4':
			    case '5':
				    $tele = 'Отключено';
				    break;
			    case '6':
				    $tele = 'Дубль';
				    break;
			    case '8':
				    $tele = 'Треб. документы';
				    break;
			    default:
				    $tele = 'Не подано';
				    break;
		    }
		  
		    $line['f7220'] = $mega;
		    $line['f7240'] = $mts;
		    $line['f14211'] = $tele;
		    $line['f14201'] = json_encode($item).PHP_EOL.PHP_EOL.'Значения статусов: '.PHP_EOL.' 0 - ожидает регистрации '.PHP_EOL.' 1 - отправлено на регистрацию'.PHP_EOL.' 2 - допущено оператором '.PHP_EOL.' 3 - не принято оператором '.PHP_EOL.' 4 - временно отключено '.PHP_EOL.' 5 - автоотключение из-за окончания баланса '.PHP_EOL.' 6 - дубль другого имени (конфликт) '.PHP_EOL.' 8 - необходимы подтверждающие документы';
	    }
			   
    }

data_update(380, $line, "id=",$line['id']); // обновляем текущую строку запросом, если поля в $line менялись!
}



#38700 Обработка импортируемых данных до внесения их в таблицу

Отправлено от TelecomMedia в 19 Июнь 2018 - 12:04 in Разработчикам

Тогда можете подсказать, как можно решить задачу. У нас импортируется список контактов. В таблице имеется уникальное поле - (e-mail). Но также, в таблице есть поле "проект" , которое определяем принадлежность е-майла к проекту. Однако, мб такая ситуация, что один и тот же е-майл принадлежит двум проектам. И нам надо, что бы в момент импорта проверялось соответствие не только e-mail но и проекта,и если все совпало - то обновить запись, а иначе создать новую.

Надеюсь понятно высказал мысль свою.
Т.е., как я понимаю, нам надо как то зацепиться за то место ,где происходит запрос к БД на обновление или создание записи в процессе импорта и добавить там проверку условия дополнительного.
Возможно ли это?



#38697 Обработка импортируемых данных до внесения их в таблицу

Отправлено от TelecomMedia в 18 Июнь 2018 - 14:12 in Разработчикам

Добрый день! Подскажите пожалуйста, можно ли как-то обрабатывать построчно импортируемые данные до загрузки в таблицу?



#38682 Как избежать дублирования записи

Отправлено от TelecomMedia в 08 Июнь 2018 - 15:38 in Разработчикам

Добрый день. Имеется вычисление, генерирующие записи для таблицы1 из данных таблицы2.
И есть проблема, если у некоторых записей таблицы2 обновятся данные или же в ней появятся новые записи, то при выполнении вычисления в таблице 1 не произойдет обновление записей и добавление новых, а произойдет дубляж записей.
Как его можно избежать, в настройках таблицы стоит запрет на дубли, но он срабатывает только если пытаться отредактировать запись в ручную.
//Email контрагента
$agent_email = $line['E-mail'];
//Юр. имя
$ur_name = $line['Юридическое название'];
$from = 'Контрагенты';
$project = $line['Проект'];
//Создадим запись в таблице "Email marketing"
$data['E-mail'] = $agent_email;
$data['Контрагент'] = $line['ID'];
$data['Источник'] = $from;
$data['Проект'] = $project ;
if($agent_email != '')
{
    if($line['f8160'] == 'WEBCOM MOBI' || $line['f8160'] == 'DjangoSMS'){
	    insert_query($data, "E-mail marketing");
    }
}
//Смотрим подтаблицу сотрудники
$sqlQuery = "SELECT f549 as mail  FROM ".DATA_TABLE."51 WHERE f545 = '".$line['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$result = data_select(51, "f545=",$line['ID']);
while($row5 = sql_fetch_array($result)){
	    if($row5['f549'] != '' && $row5['f549'] != $agent_email){
		    $addSot['E-mail'] = $row5['f549'];
		    $addSot['Контрагент'] = $line['ID'];
		    $addSot['Источник'] = 'Сотрудники';
		    $addSot['Проект'] = $project ;
		    if($row5['f13821'] == 'WEBCOM MOBI' || $row5['f13821'] == 'DjangoSMS'){
			    insert_query($addSot, "E-mail marketing");
		    }
	    }
}

На ум приходит только перебор таблицы2 перед добавлением записей.



#38678 Настройка CRON

Отправлено от TelecomMedia в 08 Июнь 2018 - 09:55 in Разработчикам

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

$cold_email = $line['f6860']['f6470'];

Вот такая конструкция в кроне работать не будет, т.к. data_select возвращает только одномерный массив текущей записи, без связанных полей. К ним надо обращаться отдельными запросами, например:

$result2 = data_select(111, "id=", $line['f6860']); // получаем связанную запись (вместо 111 подставьте id связанной таблицы)
$line2 = sql_fetch_assoc($result2);
$cold_email = $line2['f6470'];

Ага, понял.
Исправил, но все равно не выполняет.
$result = data_select(42, "status=0"); // цикл по всем активным записям таблицы
while ($line = sql_fetch_assoc($result))
{
//Проверим, есть ли в карте поле E-mail
$card_email  = $line['f442'];
//Если он не заполнен, начинаем поиск по ХЗ
//Получим мыло из карточки и мыло ЛПР из карочки ХЗ
$result2 = data_select(350, "id=", $line['f6860']); // получаем связанную запись (вместо 111 подставьте id связанной таблицы)
$line2 = sql_fetch_assoc($result2);
$cold_email = $line2['f6470'];
$lpr_email = $line2['f6480'];
if($card_email  == ''){
    //Если мыло из карточки не пустое ,добавляем его в котрагента
    if($cold_email != ''){
	    $line['f442']= $cold_email;
    }
    else{
	    if($lpr_email != ''){
		  $line['f442'] = $lpr_email;
	    }
    }
}

// проверяем поле мыло ЛПР
    if($lpr_email != ''){
		    //Если мыло существует,то получаем списко сотрудников контрагента
		    //и проверяем на наличие сотрудника с таким же адресом
		    $result3 = data_select(51, "f545=",$line['ID']);
		    $flag = 1; //Флаг наличия  совпадения
		    while($row5 = sql_fetch_array($result3)){
				   //Если такого сотрудника нет, то добавляем его в таблицу сотрудники
				   if($row5['f549'] == $lpr_email){
					   $flag = 0;					   
				   }				
		    }
		 
		    if($flag == 1){
					   $addSot['ФИО'] = $line2['f6490'];
					   $addSot['Телефон'] = $line2['f6900'];
					   if($line2['f13651'] != ''){
						   $addSot['Должность'] = $line2['f13651'];
					   }
					   else{
						   $addSot['Должность'] = 'ЛПР';
					   }
					   $addSot['E-mail'] = $lpr_email;
					   $addSot['Контрагент'] = $line['ID'];
					   insert_query($addSot, "Сотрудники");  
				   }
		  
    }
   
}



#38674 Настройка CRON

Отправлено от TelecomMedia в 07 Июнь 2018 - 17:47 in Разработчикам

Добрый день. Есть задача - поставить вычисление на крон.
По аналогии со статьями на форуме сделал все в цикле по всем записям.
Однако он не работает. Отдельно , вне цикла, для конкретной записи, вычисление работает.
$result = data_select(42, "status=0"); // цикл по всем активным записям таблицы
while ($line = sql_fetch_assoc($result))
{
//Проверим, есть ли в карте поле E-mail
$card_email  = $line['f442'];
//Если он не заполнен, начинаем поиск по ХЗ
//Получим мыло из карточки и мыло ЛПР из карочки ХЗ
$cold_email = $line['f6860']['f6470'];
$lpr_email = $line['f6860']['f6480'];
if($card_email  == ''){
    //Если мыло из карточки не пустое ,добавляем его в котрагента
    if($cold_email != ''){
	    $line['f442']= $cold_email;
    }
    else{
	    if($lpr_email != ''){
		  $line['f442'] = $lpr_email;
	    }
    }
}

// проверяем поле мыло ЛПР
    if($lpr_email != ''){
		    //Если мыло существует,то получаем списко сотрудников контрагента
		    //и проверяем на наличие сотрудника с таким же адресом
		    $result = data_select(51, "f545=",$line['ID']);
		    $flag = 1; //Флаг наличия  совпадения
		    while($row5 = sql_fetch_array($result)){
				   //Если такого сотрудника нет, то добавляем его в таблицу сотрудники
				   if($row5['f549'] == $lpr_email){
					   $flag = 0;					   
				   }				
		    }
		 
		    if($flag == 1){
					   $addSot['ФИО'] = $line['f6860']['f6490'];
					   $addSot['Телефон'] = $line['f6860']['f6900'];
					   if($line['f6860']['f13651'] != ''){
						   $addSot['Должность'] = $line['f6860']['f13651'];
					   }
					   else{
						   $addSot['Должность'] = 'ЛПР';
					   }
					   $addSot['E-mail'] = $lpr_email;
					   $addSot['Контрагент'] = $line['ID'];
					   insert_query($addSot, "Сотрудники");  
				   }
		  
    }
   
}



#38463 Синхронизация с сайтом

Отправлено от TelecomMedia в 05 Март 2018 - 10:01 in Как это сделать

Добрый день.
Вопрос по синхронизации с сайтом.

Вижу в документации пример записи:
2071;81;9981
1083;81;Покупка холодильника Samsung

Запись сохраняется в log файл в папку sync_in.


Я правильно понимаю, что каждая новая заявка сайта должна идти отдельным log файлом?
Или же можно все заявки записывать в 1 файл?
Если да, то какой формат файла должен быть? Какие в таком случае особенности синхронизации?



#38388 Ошибки в доп. действии

Отправлено от TelecomMedia в 18 Январь 2018 - 16:07 in Как это сделать

Подставил константу, значение все равно не записывается

if (isset($_REQUEST["emails"]))
   { // код ниже выполняется только при получении результата формы
        
         //$line['E-mail'] = implode(",",$_REQUEST['emails']);
         $line['E-mail'] = "test@test.ru"; 
.....



#38377 Ошибки в доп. действии

Отправлено от TelecomMedia в 16 Январь 2018 - 17:24 in Как это сделать

Понял.
Подставил f851
После сохранения и обновления, поле поменялось:
 $line['E-mail'] = implode(",",$_REQUEST['emails']);
Т.е. насколько я понимаю, ошибки в имени поля не было

Но значение все равно не подставляется.
При отправке формы, ошибки нет.



#38374 Ошибки в доп. действии

Отправлено от TelecomMedia в 16 Январь 2018 - 16:28 in Как это сделать

1.
$upd_data['f851'] = implode(",",$_REQUEST['emails']); // f851 - поле E-mail т. Счета
         update_query($upd_data,"Счета","id=$ID");

При таком раскладе выдает ошибку
Ошибка SQL запроса:
UPDATE f_data43 SE WHERE id=1755

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id=1755' at line 1


Поле f851 при этом есть - https://yadi.sk/i/IcoEfXKN3RWCjx

3. Спасибо, получилось.



#38372 Ошибки в доп. действии

Отправлено от TelecomMedia в 16 Январь 2018 - 15:47 in Как это сделать

1. Странно, конечно. Как бы я не пробовал, все равно не записывается. Есть еще какой-нибудь вариант? Отправка ведь происходит на выбранную почту.


2. Спасибо, получилось.


3. Вот что получилось:

$result6 = data_select(42, "f439=",$line['На кого']['ID']); //42 - т. Контрагенты. 439 - поле "Юридическое название" в т. "Контрагенты"
Мне кажется в верхней строчке и есть ошибка
$row6 = sql_fetch_array($result6);
{
echo "<b>Из т. Контрагенты:</b>";
echo "<br/>";
echo "<input type='checkbox' name='emails[]' value='".$row6['f442']."'>".$row6['f442']."<br>"; // 442 - поле "E-mail" в т. "Контрагенты"
}



#38369 Ошибки в доп. действии

Отправлено от TelecomMedia в 16 Январь 2018 - 11:52 in Как это сделать

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

1. Данные в поле E-mail не обновляются

2. Не работает конструкция с условием $line['Проект'] == 'WEBCOM MOBI' AND $line['Наша компания'] == '2')
Т.е. сейчас этот кусок закомментирован и в условиях стоит только $line['Проект'] == 'WEBCOM MOBI'

3. В коде сейчас этого нет, но не пойму как подтянуть почту из поля E-mail Таблицы Контагенты


if (isset($_REQUEST["emails"]))
   { // код ниже выполняется только при получении результата формы
         $upd_data['E-mail'] = implode(",",$_REQUEST['emails']); // разворачиваем массив выделенных емейлов в строку через запятую
         //$line['E-mail']=$_REQUEST["emails"];
         //$upd_data['E-mail'] = $_REQUEST["emails"];
         update_query($upd_data,"Счета","id=$ID");
  
         // если проект WEBCOM MOBI
        if ($line['Проект'] == 'WEBCOM MOBI' AND $line['Наша компания'] == '2')
         { 
       send_template(671,"id=$ID"); 
         }
   elseif ($line['Проект'] == 'WEBCOM MOBI' AND $line['Наша компания'] == '3') 
{
       send_template(661,"id=$ID"); 
         }

         echo "<script>";
         echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно
         echo "window.close()"; // Закрываем текущее
         echo "</script>";
   }
echo "<form method='get'>";
echo "<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value='$ID'>";  // Значение строки

// ИЗ ДОГОВОРОВ
$result1 = data_select(78, "f849=",$line['На кого']['ID']);
$row1 = sql_fetch_array($result1);
{
echo "<b>Из т. Договора:</b>";
echo "<br/>";
 echo "<input type='checkbox' name='emails[]' value='".$row1['f9931']."'>".$row1['f9931']."<br>";
}
echo "<br/>";

// ИЗ ХОЛОДНЫХ ЗВОНКОВ
$result2 = data_select(350, "f6850=",$line['На кого']['ID']);
$row2 = sql_fetch_array($result2);
{
echo "<b>Из т. Холодные звонки:</b>";
echo "<br/>";
  echo "<input type='checkbox' name='emails[]' value='".$row2['f6480']."'>".$row2['f6480']." (".$row2['f6490'].")"; echo " - Email ЛПР<br>";
  echo "<input type='checkbox' name='emails[]' value='".$row2['f6470']."'>".$row2['f6470']."<br>";
}
echo "<br/>";


// ИЗ СОТРУДНИКОВ В КОНТРАГЕНТАХ
$result5 = data_select(51, "f545=",$line['На кого']['ID']);
while ($row5 = sql_fetch_array($result5))
{
echo "<b>Из т. Сотрудники:</b>";
echo "<br/>";
  echo "<input type='checkbox' name='emails[]' value='".$row5['f549']."'>".$row5['f549']." (".$row5['f546']." / ".$row5['f547'].")<br>";
}



echo "<input type='submit' value='Отправить'>";
echo "</form>";



#38350 Список во всплывающем окне

Отправлено от TelecomMedia в 31 Декабрь 2017 - 14:09 in Как это сделать

Вообщем получилось сделать рабочий вариант, вопрос остался только 1:
Перед отправкой шаблона мне нужно записать в поле E-mail выбранные значения из формы.
В моем коде почему то не записываются

if (isset($_REQUEST["emails"]))
   { // код ниже выполняется только при получении результата формы
         //$line['E-mail'] = implode(",",$_REQUEST['emails']); // разворачиваем массив выделенных емейлов в строку через запятую
         //$line['E-mail']=$_REQUEST["emails"];
         $upd_data['E-mail'] = $_REQUEST["emails"]; // записываем значения из формы в поле E-mail
         update_query($upd_data, "Счета", "id=$ID");
         // если счет агентский
         if ($line['На кого']['Агент']  != '')
         { 
         send_template(23,"id=$ID");
         }
         // если проект WEBCOM MOBI
         if ($line['Проект'] == 'WEBCOM MOBI')
         { 
         //if ($line['Наша компания'] == '2') // ВЕБКОМ
         send_template(661,"id=$ID");
        // if ($line['Наша компания'] == '3') // ЛИДЕР-Н
         //send_template(661,"id=$ID");
         }
         echo "<script>";
         echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно
         echo "window.close()"; // Закрываем текущее
         echo "</script>";
   }
echo "<form method='get'>";
echo "<input type='hidden' name='id' value='$button_id'>"; // Передаем значение кнопки
echo "<input type='hidden' name='line_id' value='$ID'>";  // Значение строки

// ИЗ ДОГОВОРОВ
$result1 = data_select(78, "f849=",$line['На кого']['ID']);
$row1 = sql_fetch_array($result1);
{
echo "<b>Из т. Договора:</b>";
echo "<br/>";
 echo "<input type='checkbox' name='emails[]' value='".$row1['f9931']."'>".$row1['f9931']."<br>";
}
echo "<br/>";

// ИЗ ХОЛОДНЫХ ЗВОНКОВ
$result2 = data_select(350, "f6850=",$line['На кого']['ID']);
$row2 = sql_fetch_array($result2);
{
echo "<b>Из т. Холодные звонки:</b>";
echo "<br/>";
  echo "<input type='checkbox' name='emails[]' value='".$row2['f6480']."'>".$row2['f6480']." (".$row2['f6490'].")"; echo " - Email ЛПР<br>";
  echo "<input type='checkbox' name='emails[]' value='".$row2['f6470']."'>".$row2['f6470']."<br>";
}
echo "<br/>";


echo "<input type='submit' value='Отправить'>";
echo "</form>";



#38345 Список во всплывающем окне

Отправлено от TelecomMedia в 28 Декабрь 2017 - 21:50 in Как это сделать

Добрый вечер!

Подскажите пожалуйста пример реализации следующей задачи:

В таблице "Счета" необходимо во всплывающем окне отобразить выпадающий список (со множественным выбором), в котором должны быть значения:
- Поле E-mail таблицы "Договора" (связанной с т. "Счета" по полю связи "По договору")
- Поле E-mail таблицы "Контрагенты" (связанной с т. "Счета" по полю связи "На кого")

Ну и соответственно кнопка "Отправить".

Покопался в старых вычислениях, кое что нашел, но явно не рабочий вариант:

if (isset($_REQUEST["schet"]))
{
$line['По договору']['E-mail']=$_REQUEST["email"];
$line['На кого']['E-mail']=$_REQUEST["email"];
echo "<script>";
echo "window.opener.location.reload(1);"; // Перезагружаем родительское окно
echo "window.close()"; // Закрываем текущее
echo "</script>";
}

echo "<form method='get'>";

echo "<input type='hidden' name='id' value='$button_id'>";
echo "<input type='hidden' name='line_id' value='$ID'>";
echo "Отправить счет на почту";
echo "<select name='email'>";
$row = sql_select_array(FIELDS_TABLE, "id=851"); // 851 - поле E-mail
$type_values = explode("\r\n",$row['type_value']);
foreach ($type_values as $one_value)
{
echo "<option value='$one_value'>$one_value</option>";
}
$upd_data['E-mail'] = $_REQUEST["email"];
update_query($upd_data, "Счета", "id=$ID");
send_template(2200, "id=$ID"); // 2200 - id шаблона
echo "</select>";
echo "<br/>";
echo "<br/>";

echo "<input type='submit' value='Отправить'>";
echo "</form>";



#38319 Автонумерация в текстовом поле

Отправлено от TelecomMedia в 19 Декабрь 2017 - 09:49 in Как это сделать

Спасибо за подсказку, Александр!

Просмотр сообщенияАлександр Jet (18 Декабрь 2017 - 23:34) писал:

Можно сделать нумерацию в отдельном числовом поле (например Автоматический номер) с автонумерацией, а в ваше текстовое поле Номер добавить вычисление:

$line['Номер'] = $line['Автоматический номер']



#38312 Автонумерация в текстовом поле

Отправлено от TelecomMedia в 18 Декабрь 2017 - 16:47 in Как это сделать

Здравствуйте.

В стандартной конфигурации поле "Номер" таблицы "Акт" - числовое поле
У нас оно текстовое.

Как можно при добавлении нового акта использовать автонумерацию для текстового поля (в этом текстовом поле исключительно циферные значения)?



#37985 Вычисление: запрос с выборкой по полю связи

Отправлено от TelecomMedia в 22 Сентябрь 2017 - 11:25 in Как это сделать

Спасибо большое!