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


составление отчетов

set_filter отчет

Сообщений в теме: 11

#1 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 22 Июль 2014 - 08:49

Добрый день. Привожу часть кода подготовки данных представления отчета.

	   set_filter(9332, "=", 'в работе', "", "or");
	   set_filter(9332, "=", 'пауза', "", "or");
	   set_filter(9332, "=", 'продолжено');
Данный формат записи правильный?

Также имеется проблема с определением пользователя, при переходе к таблице пишется правильная выборка но при нажатии на текст появляется условия вывода и поле исполнитель в нем пустое и поэтому отчет не формируется.

Вот код где формируется условие:

if ($_REQUEST['_type']||$_REQUEST['_manager']||$_REQUEST['_done'])
	{
	  reset_filters(47);
	  if ($_REQUEST['_type']=="Выбор") set_filter(922, "period", $date1." 00:00", $date2." 23:59");
	  if ($_REQUEST['_manager']) set_filter(492, "=", form_input($_REQUEST['_manager']));
	
	  if ($_REQUEST['_done']=='1') set_filter(9332, "=", 'выполнено');// замена Like на =
	  elseif ($_REQUEST['_done']=='2')//изменения
	  {
	   set_filter(9332, "=", 'в работе', "", "or");
	   set_filter(9332, "=", 'пауза', "", "or");
	   set_filter(9332, "=", 'продолжено');
	  }
	  elseif ($_REQUEST['_done']=='3') set_filter(9332, "=", 'новый');
	
	  header("Location: ".$config["site_root"]."/fields.php?table=47");
	}


Ниже скриншот, показывающий вывод расширенного поиска

Прикрепленные изображения

  • Прикрепленное изображение: скрин1.jpg

Сообщение отредактировал aleks.goodcolor: 22 Июль 2014 - 08:50


#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2014 - 09:53

В $_REQUEST['_manager'] что лежит? ID пользователя, надеюсь? Если там к примеру передается ФИО - естественно что работать не будет.

#3 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 22 Июль 2014 - 10:17

$_REQUEST['_manager'] - это взято из стандартной конфигурации составления отчетов - берется id пользователя.

Вот строка выше этого кода:

if ($_REQUEST['manager']) $manager = form_input($_REQUEST['manager']); elseif ($user['group_id']!=1) $manager = $user['id'];

Сообщение отредактировал aleks.goodcolor: 22 Июль 2014 - 10:18


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2014 - 10:23

Эта строка не имеет отношения, тут 'manager' без подчеркивания. Значение имеет что передается переменной $_REQUEST['_manager'] из отображения отчета. Проверьте, т.к. выглядит все так, как будто там ФИО, а не id юзера.

#5 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 22 Июль 2014 - 10:29

function go_table(manager, type, done)
{
    document.getElementById('_manager').value = manager;
    document.getElementById('_type').value = type;
    document.getElementById('_done').value = done;
    document.getElementById('report_form').submit();
}


#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2014 - 10:46

И? Проверять нужно места, где собственно передаются значения в эту функцию. Тут нет значений, только переменные.

#7 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 22 Июль 2014 - 10:54

точно как вы и сказали - стоит $data.fio_id везде - нужно поменять на $data.id?

#8 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2014 - 10:57

А вот уже смотря что у вас в этом $data.id. Скорее всего там id записи, а не юзера. Ищите теперь, что передается в $data из подготовки данных (да, вот такой квест получается).

#9 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 22 Июль 2014 - 11:00

Опять не понятно - все таки $data['fio_id'] - это id, судя по коду ниже:
$sqlQuery = "SELECT `user`.`id`, `user`.`fio` FROM ".USERS_TABLE." AS `user`$sqlGroups WHERE $sqlCond";
  $result = sql_query($sqlQuery);
  while ($row = sql_fetch_assoc($result))
    {
	  $data['fio'] = $row['fio'];
	  $data['fio_id'] = $row['id'];
	 
	  $result2 = sql_select_field(DATA_TABLE."47","count(*) as cn","f9332='выполнено' AND f492='",$data['fio_id'],"' AND add_time>='",$date1_fet,"' AND add_time<='",$date2_fet,"' AND status=0");
	  $row2 = sql_fetch_assoc($result2);
	  $data['done'] = $row2['cn'];
	 
	  $result2 = sql_select_field(DATA_TABLE."47","count(*) as cn","(f9332='в работе' OR f9332='пауза' OR f9332='в рабoте') AND f492='",$data['fio_id'],"' AND add_time>='",$date1_fet,"' AND add_time<='",$date2_fet,"' AND status=0");
	  $row2 = sql_fetch_assoc($result2);
	  $data['recd'] = $row2['cn'];
	 
	  $result2 = sql_select_field(DATA_TABLE."47","count(*) as cn","f9332='новый' AND `f492`='",$data['fio_id'],"' AND `add_time`>='",$date1_fet,"' AND `add_time`<='",$date2_fet,"' AND status=0");
	  $row2 = sql_fetch_assoc($result2);
	  $data['inline'] = $row2['cn'];
	 
	  $sum_done+=$data['done'];
	  $sum_recd+=$data['recd'];
	  $sum_inline+=$data['inline'];
	 
	  $lines[] = $data;
    }


#10 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2014 - 11:07

Судя по коду, да, похоже что id, хотя обозвано крайне странно, по логике должно быть "user_id".

Тогда честно говоря затрудняюсь сказать, что у вас там не так с поиском по таблице. Нужна отладка, например проверить через echo что там передается в $_REQUEST['_manager'] и если id - найти такого пользователя в Настройках. Если он есть - то значит скорее баг движка, а не ваш, т.е. -> заявка в техподдержку.

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 22 Июль 2014 - 11:12

А, кстати, еще есть подозрение что данный пользователь в архиве, потому собственно и не виден в форме поиска. Хотя это думаю баг, не должно такого быть (в отличии от формы редактирования записи, в форме поиска должны быть архивные пользователи). Если это так - то заявка.

#12 aleks.goodcolor

    Активный участник

  • Пользователи
  • PipPipPip
  • 198 сообщений
  • Пол:Мужчина
  • Город:Йошкар-ола

Отправлено 24 Июль 2014 - 09:24

Данная проблема решена: в условии выборки было поле с множественным выбором и поэтому при сравнении его через = получался такой вывод, Стоило только поменять = на LIKE

`f492` LIKE '%-",$data['fio_id'],"-%'






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных