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


Публикации aleks.goodcolor

13 публикаций создано aleks.goodcolor (учитываются публикации только с 29-Март 23)


#31710 Сделать два новых отчета

Отправлено от aleks.goodcolor в 30 Июнь 2016 - 17:10 in Как это сделать

Просмотр сообщенияJordj (16 Июнь 2016 - 00:15) писал:

Ваши коллеги озвучивали мне цену в 8-10 тыс. руб. за одни отчет. Хотелось бы найти менее затратное решение..
Если еще актуально пишите в скайп aleks_ter_mw



#31367 Настройка чата КБ

Отправлено от aleks.goodcolor в 27 Апрель 2016 - 16:24 in Как это сделать

Сейчас на ум приходит только внешний js скрипт, который будет делать запрос по ajax и получать список пользователей, которые не должны отображаться в чате, но может есть решение по проще?



#31363 Настройка чата КБ

Отправлено от aleks.goodcolor в 27 Апрель 2016 - 12:37 in Как это сделать

Добрый день. подскажите пожалуйста относительно настройки чата в Кб. Как можно убрать лишних пользователей из списка в чате? Можно ли с помощью вычисления подключиться к чату и произвести какие-либо настройки?



#31296 Форма подписки

Отправлено от aleks.goodcolor в 20 Апрель 2016 - 15:51 in Как это сделать

Просмотр сообщенияTimur (19 Апрель 2016 - 17:37) писал:

Описанный Вами функционал возможно реализовать только огранизовав доступ в программу пользователям, заполняющим свои данные во внешней форме.
Имеется ввиду клиентский доступ в программу?



#31239 Форма подписки

Отправлено от aleks.goodcolor в 18 Апрель 2016 - 10:41 in Как это сделать

Добрый день. подскажите пожалуйста относительно формы рассылки в КБ. есть ли какой-нибудь готовый функционал для создания такой формы?
Создать внешнюю форму не проблема, но как сделать чтобы если e-mail уже есть в базе то его не добавлять по новой?
Как сделать страницу управления - например чтобы пользователь сам мог обновить свой e-mail или тематику рассылки? Видел что для обновления записи нужно использовать хеш но можно ли его получать в автоматическом режиме?



#31100 доп действие добавление в подтаблицу

Отправлено от aleks.goodcolor в 06 Апрель 2016 - 09:42 in Как это сделать

Нужно вместо $line['ФИО'] написать $line['ID'] либо $ID
Только нужно понимать где поле связи таблицы с подтаблицей? Это поле сотрудник?



#31073 Срабатывание вычисления после удаления записи

Отправлено от aleks.goodcolor в 31 Март 2016 - 15:26 in Как это сделать

Спасибо разобрался с этим вычислением.
Но сейчас столкнулся еще с одной проблемой.
Есть таблица Расход и подтаблица позиции расхода. В табл. Расход стоит вычисление:
if ($event['type']=='delete')
{
  if ($line['Статус записи']==2) data_delete(90, EVENTS_ENABLE, 'f1146=',$line['ID']); // delete all subrecords
}
else
{
  if ($line['Статус записи']==2) data_delete(90, EVENTS_ENABLE, 'status=2 and f1146=',$line['ID']); // delete old trash subrecords
  data_update(90, EVENTS_ENABLE, array('status'=>$line['Статус записи']), 'status=',$event['changed'][1126]['old'],' and f1146=',$line['ID']);
  record_sublines_status_log(90, 1146, $line);
}
Оно удаляет из подтаблицы все записи при удалении основной записи. Но почему-то при этом $event[type] пустой. Подскажите пожалуйста что не так с этим вычислением? Почему событие может не срабатывать?



#31067 Срабатывание вычисления после удаления записи

Отправлено от aleks.goodcolor в 31 Март 2016 - 09:57 in Как это сделать

Подскажите пожалуйста как проверить переменную $event при действиях в режиме подтаблицы? У меня echo не выводится.



#31061 Срабатывание вычисления после удаления записи

Отправлено от aleks.goodcolor в 30 Март 2016 - 13:20 in Как это сделать

Насколько я знаю событие удаление записи срабатывает перед удалением записи и вычисление не понимает, что происходит удаление если $event не заполняется. Для этого в вычислении используется $event и если в event удаление, то добавляется доп. фильтр в запрос, который как регулирует то, что конкретная позиция была удалена.

if($line['Основание']['raw']!=NULL && $line['Основание']['Тип'])
{
    $type_action = $line['Основание']['Тип']; # тип приход или расход
    $line['Сумма'] = $line['Цена'] * $line['Кол-во']; # подсчет суммы расхода
    $line['Ед. изм.'] = $line['Наименование']['raw']; # подстановка ед.изм
    # Поиск позиций расхода
    $sqlQuery = "SELECT SUM(`f1151`) AS `amount` FROM `".DATA_TABLE."90` WHERE `status`<>'2' AND `f1146`='".$line['Основание']['raw']."'";
    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
    $row = sql_fetch_assoc($result);   
    $line['Основание']['Сумма'] = $row['amount']; # установка суммы расхода  
    if (!$line['Наименование']['raw']) return; # проверка на пустое поле связи
    # Доп. инфо в партии
    if($type_action=='Расход')  
    {
	    if(!$line['Основание']['Путь']) $osnovanie = $line['Основание']['Основание расхода']." по счету <a href=\"/view_line2.php?table=43&line=".$line['Основание']['№ счёта']['ID']."\">№".$line['Основание']['№ счёта']['Номер']."</a> (<a href=\"/view_line2.php?table=42&line=".$line['Основание']['Покупатель']['ID']."\">".$line['Основание']['Покупатель']['Название']."</a>) <br><a href=\"/view_line2.php?table=88&line=".$line['Основание']['ID']."\"> Расход №".$line['Основание']['Номер']."</a>";
	    else $osnovanie =  $line['Основание']['Основание расхода'];   
    }
    elseif($type_action=='Приход')
    {
	    if(!$line['Основание']['Путь']) $osnovanie = $line['Основание']['Основание расхода']." от поставщика <a href=\"/view_line2.php?table=351&line=".$line['Основание']['Поставщик']['ID']."\">".$line['Основание']['Поставщик']['Наименование']."</a><br><a href=\"/view_line2.php?table=87&line=".$line['Основание']['ID']."\">Приход №".$line['Основание']['Номер']."</a>";
	    else $osnovanie =  $line['Основание']['Основание расхода'];
    }
    # Поиск позиции на складе
    $sqlQuery = "SELECT `id` FROM `".DATA_TABLE."85` WHERE `status`=0 AND `f1096`='".$line['Наименование']['raw']."' AND `f10420`='".$line['Основание']['Тип расхода']."' AND `f10510`='".$line['Основание']['Место']['ID']."'";//выборка на складе
    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);   
    if($row = sql_fetch_assoc($result))
    {
	    # поиск партии
	    $sqlQuery = "SELECT COUNT(*) AS `cnt` FROM `".DATA_TABLE."86` WHERE `status`='0' AND `f12290`='".$ID."'";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $subrow = sql_fetch_assoc($result);	  
	    if($subrow['cnt']) # обновляем партию если надо
	    {
		    $sqlQuery = "UPDATE `".DATA_TABLE."86`
						 SET `f1109`='".$line['Цена']."', `f1110`='".$line['Кол-во']."',`f12000`='".$line['Основание']['Путь']."',`f12320`='".$osnovanie."'
						 WHERE `f12290`='".$ID."' ";
		    sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    }
	    else # добавляем партию
	    {
		    $sqlQuery = "INSERT INTO `".DATA_TABLE."86` (`user_id`, `add_time`, `status`, `f1106`, `f1108`, `f1109`, `f1110`, `f11990`,`f12290`, `f1111`,`f12000`,`f12320`)
						 VALUES ('".$user['id']."', '".date("Y-m-d H:i:s")."', '0', '".$row['id']."', '".date("Y-m-d 00:00:00")."', '".$line['Цена']."', '".$line['Кол-во']."','".$type_action."', $ID, '".$line['Основание']['Номер']."','".$line['Основание']['Путь']."','".$osnovanie."')";
		    sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    }
	    if ($event['type']=='delete') $deleteCond = " AND `pos_rash`.`id`<>".intval($ID); # условие при удалении позиции
	    # выборка и подсчет нужных позиций прихода
	    $sqlQuery = "SELECT SUM(`f1150`) AS `d_balance`, SUM(`f1151`) AS `d_amount`
					 FROM `".DATA_TABLE."90` AS `pos_rash`, `".DATA_TABLE."88` AS `rash`
					 WHERE `pos_rash`.`status`='0' AND `rash`.`status`<>'2' AND
					 `f1147`='".$line['Наименование']['raw']."' AND
					 `rash`.`id` = `f1146` AND
					 `f12260` = '".$line['Основание']['Тип расхода']."' AND
					 `f12270` = '".$line['Основание']['Место']['ID']."' AND
					 `f18740` = 'Приход' $deleteCond";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $p_row = sql_fetch_assoc($result);
	    if ($p_row['p_balance'] == NULL) $p_balance = 0; # получили кол-во прихода (общее)
	    else $p_balance = $p_row['p_balance'];
	    if ($p_row['p_amount'] == NULL) $p_amount = 0; # получили сумму прихода (общее)
	    else $p_amount = $p_row['p_amount'];
	    # поиск позиций расхода
	    $sqlQuery = "SELECT SUM(`f1150`) AS `d_balance`, SUM(`f1151`) AS `d_amount`
					 FROM `".DATA_TABLE."90` AS `pos_rash`, `".DATA_TABLE."88` AS `rash`
					 WHERE `pos_rash`.`status`='0' AND `rash`.`status`<>'2' AND
				    `f1147`='".$line['Наименование']['raw']."' AND
				    `rash`.`id` = `f1146` AND
				    `f12260` = '".$line['Основание']['Тип расхода']."' AND
				    `f12270` = '".$line['Основание']['Место']['ID']."'
				    `f18740` = 'Расход' $deleteCond";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $d_row = sql_fetch_assoc($result);
	    if ($d_row['d_balance'] == NULL) $d_balance = 0;
	    else $d_balance = $d_row['d_balance'];
	    if ($d_row['d_amount'] == NULL) $d_amount = 0;
	    else $d_amount = $d_row['d_amount'];   
	    $w_balance = $p_balance - $d_balance; # остаток из разницы
	    $w_amount = $p_amount - $d_amount; # сумма из разницы
	    # поиск позиций прихода
	    $sqlQuery = "SELECT `f1140`, `f1139`
					 FROM `".DATA_TABLE."89` AS `pos_pr`, `".DATA_TABLE."87` AS `pr`  
					 WHERE `pr`.`status`<>'2' AND `pos_pr`.`status`<>'2' AND
				    `f1137`='".$line['Наименование']['raw']."' AND
				    `pr`.`id`= `f1136` AND
				    `f10580` = '".$line['Основание']['Тип расхода']."' AND
				    `f12280` = '".$line['Основание']['Место']['ID']."' AND
				    `f18740` = 'Расход'
					 ORDER BY `pos_pr`.`id` DESC";	   
	    $s_res = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);   
	    $prices = array();   
	    while ($s_row = sql_fetch_assoc($s_res))
	    {
		    $prices[$s_row['f1149']] += $s_row['f1150'];   
		    if (array_sum($prices) >= $w_balance)
		    {
			    $prices[$s_row['f1149']] = $prices[$s_row['f1149']] - (array_sum($prices) - $w_balance);
			    break;
		    }
	    }   
	    foreach ($prices AS $one_price => $one_quant)
	    {
		    $price_list .= form_local_number($one_price, "10/2");
		    if (count($prices) > 1) $price_list .= " - $one_quant ".$line['Наименование']['Ед. изм.']."\r\n";
		    $last_amount += $one_price * $one_quant;
	    }
	    if (!array_sum($prices)) $price_list = '';   
	    $sqlQuery = "UPDATE `".DATA_TABLE."85` SET `f4181`='".$line['Наименование']['raw']."', `f1096`='".$line['Наименование']['raw']."', `f1097`='".$line['Наименование']['raw']."', `f1101`='$last_amount', `f1100`='$w_balance', `f1098`='$price_list' WHERE `id`='".$row['id']."' AND `f10420`='".$line['Основание']['Тип расхода']."' AND `f10510`='".$line['Основание']['Место']['ID']."'";
	    sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
    }
}



#31056 Срабатывание вычисления после удаления записи

Отправлено от aleks.goodcolor в 30 Март 2016 - 11:51 in Как это сделать

событие удаления записи не работает в КБ или работает не так как мне нужно - вычисление не срабатывает. переменная event как будто не заполняется при ручном удалении из подтаблицы.



#31050 Срабатывание вычисления после удаления записи

Отправлено от aleks.goodcolor в 30 Март 2016 - 11:20 in Как это сделать

Удаление происходит и вручную и через код. После удаления необходимо запустить вычисление по удаленной записи. Это относится к приходам и расходам. Сейчас приходится каждый раз после удаления позиции переходить к удаленной записи, чтобы обновить кол-во на складе.



#31047 Срабатывание вычисления после удаления записи

Отправлено от aleks.goodcolor в 30 Март 2016 - 11:01 in Как это сделать

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



#28669 Добавить собственную маску ввода на поле при добавлении в таблицу

Отправлено от aleks.goodcolor в 03 Июль 2015 - 09:29 in Как это сделать

1. Встроенные маски не устраивают
2. Файл js c описанием к какому полю будет применена маска
3. Чтобы подключить файл на все страницы кб прийдется переделывать template? То есть при каждом обновлении ревизии нужно будет обновлять файл.