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


Ошибка в вычислении доп.действие создать счет из КП


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

#1 sar432

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 04 Январь 2015 - 23:30

Здравствуйте, Большая просьба помогите пожалуйста исправить ошибку.

Сделал таблицу "КП" и подтаблицу "позиции КП". Все делал аналогично "счет" и "позиции счета" но не копировал!
Сейчас нужно добавить "доп. действие" кнопку Выставить счет - аналогично кнопке "счет-фактура" в "счете" .

СТАНДАРТНАЯ КОНФИГУРАЦИЯ

Для этого переделал доп.действие из "счета"

Вот что получилось

[i]global $base64_current_url;[/i]
[i]$insertTableID = 43; // Номер таблицы счета
$positionTableId = 290; // Номер таблицы позиций кп
$newPositionTableId = 74; // Номер таблицы позиций счета[/i]
[i]// выбираем из счет записи, которые ссылаются на данное КП
$result = data_select($insertTableID, "status='0' AND f4230=", $ID);
$row = sql_fetch_assoc($result);
// если по данному КП есть запись счета, то выводим предупреждение и переходим в запись
if ($row) {
  echo "<script>
		  if (confirm('Счет по данному КП уже сформирована. Перейти в счет?'))
			location.href='",$config["site_root"],"/view_line.php?table=",$insertTableID,"&line=",$row['id'],"&back_url=",$base64_current_url,"'
		</script>";
}
// если записи не нашлись, то формируем счет
else
{
  // объявляем массив, в который записываем по названию полей счета, значения полей из КП
  $newLine = array();
  $newLine['f4230'] = $line['ID'];
  $newLine['f839'] = $line['На кого']['raw'];
   $newLine['f654'] = $line['Наша компания']['raw'];[/i]
[i]  // последний номер счета
  $result = data_select_field($insertTableID, "MAX(f437) as max","status=0");
  $row = sql_fetch_assoc($result);
  $newLine['437'] = ++$row['max'];[/i]
[i]  // вставляем массив с данными в таблицу счета, создается запись и функция возвращает id новой записи счета
  $inserted_id = data_insert($insertTableID, EVENTS_ENABLE, $newLine);
  $line['Расход']['№ с/ф'] = $inserted_id;[/i]
[i]  if ($inserted_id) {
	// выбираем все позиции КП
	$positions = data_select($positionTableId, "status=0 AND f4110=", $ID);
	// если есть позиции, то проходим по всем позициям
	while ($position = sql_fetch_assoc($positions)) {
	  // на каждой позиции объявляем массив и заносим в номера полей позиции счета, значения из позиции КП
	  $newPosition = array();
	  $newPosition['f807'] = $inserted_id;
	  $newPosition['f2331'] = $position['f4120'];
	  $newPosition['f1440'] = $position['f4130'];
	  $newPosition['f809'] = $position['f4140'];
	  $newPosition['f810'] = $position['f4200']/$position['f4160'];
	  $newPosition['f811'] = $position['f4160'];
	  // вставляем в позиции счета  получившийся массив
	  data_insert($newPositionTableId, EVENTS_ENABLE, $newPosition);
	}
	// в конце переходим по ссылке в новую запись счета
	echo "<script>
			location.href='",$config["site_root"],"/view_line.php?table=",$insertTableID,"&line=",$inserted_id,"&back_url=",$base64_current_url,"'
		  </script>";
  }
}[/i]

При нажатии кнопки "Выставить счет" выдает ошибку:

Ошибка в вычислении.
Подробно

КП.Button 190 :

31: // вставляем массив с данными в таблицу счета, создается запись и функция возвращает id новой записи счета
32: $inserted_id = data_insert($insertTableID, EVENTS_ENABLE, $newLine);
33: $line['Расход']['№ с/ф'] = $inserted_id;

Ошибка SQL запроса:
INSERT INTO f_data43 (f4230, f839, f654, 437, user_id, add_time, f437, f436, f448, f2071, f889, f454, f455, f456, f2061, r) VALUES ('11', '1', '1', '9', '1', '2015-01-04 23:09:51', '9', '2015-01-04 00:00:00', '1', '0.00', '0.00', '0.00', '0', '0.00', '0', '1')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '437, user_id, add_time, f437, f436, f448, f2071, f889, f454, f455, f456, f2061, ' at line 1

Я знаю что строка 33 неправильная, расхода из КП в счет нет, но не знаю как исправить.

Поле F4230 = поле связи КП в таблице счета, также как и в с.ф поле "по счету"

Заранее спасибо за ответы.

#2 CbCoder

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

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

Отправлено 09 Январь 2015 - 15:57

Вы забыли в строке 26 в имени поля букву "f" прописать (f437), в данном случае ошибка именно в этом.

#3 sar432

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 14 Январь 2015 - 19:33

Большое спасибо! Все получилось!

#4 geoglo

    Новичок

  • Пользователи
  • Pip
  • 1 сообщений

Отправлено 29 Январь 2015 - 06:24

Такая же просьба исправить ошибку, видимо с коллегой мыслим шаблонно! Так же сделал таблицу "КП" и подтаблицу "Позиции КП"

Но пошел по пути копирования, т.е скопировал со "Счета" сейчас выдает вот такую ошибку: при нажатии на кнопку "Создать КП" аналогично кнопке "Выставить счет" - Ошибка системы.

Error generated:

/home/********/public_html/view_line2.php(2494) : data_select_field()

Ошибка SQL запроса:
SELECT COUNT(*) AS cnt FROM f_data301 WHERE status=0 and f4421=6 and 1
Table 'c_*********.f_data301' doesn't exist


#5 CbCoder

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

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

Отправлено 29 Январь 2015 - 09:44

Таблицы с id 301 не существует.





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

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