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


Вопрос по вычислениям


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

#221 adminTF

    Участник

  • Пользователи
  • PipPip
  • 18 сообщений
  • Пол:Мужчина
  • Город:Москва

Отправлено 01 Ноябрь 2013 - 15:30

Просмотр сообщенияCbCoder (01 Ноябрь 2013 - 15:21) писал:

Ну, ок. Вычисление здесь элементарное:

if ($line['Архив']=="архив")
	$line['Статус записи'] = 1;
else if ($line['Архив']=="удаленное")
	$line['Статус записи'] = 2;
else
	$line['Статус записи'] = 0; // активное
Спасибо огромное ))) для меня и это было не под силу!

#222 L-evgenia

    Участник

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

Отправлено 14 Ноябрь 2013 - 16:05

Добрый день! необходима помощь в прописывании условия в вычислении:
мне надо, чтобы номер акта присваивался по другому, если в номере договора есть "/13".
Вот Все, что я осилила, подскажите, как условие прописать:
if (!$line['Номер'])
{
if $line['Договор №']) «надо чтобы было условие содержит «/13»;
$line['Номер'] = $line['Договор']['Номер']
}

#223 CbCoder

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

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

Отправлено 14 Ноябрь 2013 - 16:33

if (strpos($line['Договор №'],"/13")!==false) ....

Подробнее

#224 L-evgenia

    Участник

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

Отправлено 14 Ноябрь 2013 - 16:36

Спасибо!

#225 L-evgenia

    Участник

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

Отправлено 14 Ноябрь 2013 - 16:47

ну, вот, а теперь я зашла в базу и увидела. что до меня гигант php именно для номера акта написал вот это:
if (!$line['Номер'])
{
$sqlQuery = "SELECT MAX(`f869`) AS `last_num` FROM `".DATA_TABLE."81`";
$result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$row = mysql_fetch_assoc($result);

$new_num = $row['last_num'] + 1;

if ($new_num < 231) $new_num = 231;

$line['Номер'] = $new_num;
}

Как правильно интегрировать в это вычисление новое условие?

#226 CbCoder

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

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

Отправлено 14 Ноябрь 2013 - 17:10

if (!$line['Номер'])
{
    if (strpos($line['Договор №'],"/13")!==false)
    {
	   
	    // здесь код если найдено "/13"
	   
	    $line['Номер'] = $line['Договор']['Номер'];
	   
    }
    else
    {
	   
	    // здесь старый код (если не найдено "/13")
	   
	    $sqlQuery = "SELECT MAX(`f869`) AS `last_num` FROM `".DATA_TABLE."81`";
	    $result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
	    $row = mysql_fetch_assoc($result);
	   
	    $new_num = $row['last_num'] + 1;
	   
	    if ($new_num < 231) $new_num = 231;
	   
	    $line['Номер'] = $new_num;
	   
    }
}


#227 f-jeka

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

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

Отправлено 12 Апрель 2015 - 04:03

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

#228 f-jeka

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

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

Отправлено 11 Июль 2015 - 15:39

Заметил, что неправильно срабатыват вычисление "Вычисление остатков" в таблице "Позиции расхода". Например, если ввести в наименование Товар1, то он уменьшится на складе на то количество, которое прописано. Но если сменить наименование на Товар2, то Товар2 уменьшится на складе, а Товар1 при этом не увеличится. Пробовал запретить редактирование Наименования, чтоб его можно было задать только при добавлении и дальше уже не было возможности изменять. Но если не обновить страничку то все равно есть возможность измнить Наименование.
Можно ли как то исправить это вычисление? Можно ли как то запретить редактирование даже если страничка не перезагружена?
Версия 2.0.4

#229 CbCoder

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

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

Отправлено 13 Июль 2015 - 09:29

Цитата

Можно ли как то исправить это вычисление?

Отправьте заявку в техподдержку, это баг/недоделка стандартной конфигурации.

Цитата

Можно ли как то запретить редактирование даже если страничка не перезагружена?

Нет. Но в данном случае это нужно исправлять вычислением, а не запретом редактирования.

#230 f-jeka

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

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

Отправлено 03 Февраль 2016 - 23:42

Можно ли сделать вычисление с поиском по таблице?
Например у меня есть таблица Контрагенты в которой два поля "телефон 1" и "номер заявки 1"
И вторая таблица Номера с полями "телефон 2" и "номер заявки 2"
Поле "номер заявки 2" заведено как поле связи с полем "номер заявки 1"
Как сделать, чтобы если в поле "телефон 2" был введен номер который уже есть в поле "телефон 1", то в поле "номер заявки 2" автоматически прописывалась связь на поле "номер заявки 1" ?

#231 CbCoder

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

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

Отправлено 04 Февраль 2016 - 11:32

Можно конечно, то что вы называете "поиском", называется запросом к таблице с соответствующим условием отбора.

#232 f-jeka

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

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

Отправлено 04 Февраль 2016 - 13:34

Напишите примерчик, пожалуйста. Для меня слишком сложно такое вычисление сделать.

#233 CbCoder

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

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

Отправлено 04 Февраль 2016 - 23:36

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

#234 f-jeka

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

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

Отправлено 19 Февраль 2016 - 02:16

Пока умею только очень простые вычисления делать. С запросами все совсем не так просто. Вот попытался сделать такой вариант по аналогии с уже существующими:

$sqlQuery = "SELECT `f1961` FROM `".DATA_TABLE."42` WHERE `f5950`='$ID' AND `status`<>'2'";
$result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$row = sql_fetch_assoc($result);
$line['Заявка'].= $row['f1961'].", ";
Здесь таблица 42 - это таблица Контрагенты в которой в строке f5950 содержатся значения "телефон 1". Из этой таблица выбираем ту строчку в которой f5950 равно значению "телефон 2" из второй таблицы.
f1961 - это поле "номер заявки 1" в той же таблице Контрагенты.
По идее в поле 'Заявка' должно прописаться значение из f1961. Но вычисление не работает.

#235 CbCoder

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

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

Отправлено 19 Февраль 2016 - 09:38

А поле f5950 - это поле связи что ли? Почему вы подставляете у него ID, а не значение из поля телефон2?

#236 f-jeka

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

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

Отправлено 19 Февраль 2016 - 11:03

f5950 это не поле связи. Это поле в котором происходит поиск значения.
$sqlQuery = "SELECT `f1961` FROM `".DATA_TABLE."42` WHERE `f5950`='$line['Входящий номер']' AND `status`<>'2'";

Если так записать то выходит ошибка
syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING


#237 CbCoder

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

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

Отправлено 19 Февраль 2016 - 11:21

Потому что неправильно работаете со строками. Нельзя таким образом вставлять переменную в строку (в данном случае - строку запроса). Правильные варианты:

$sqlQuery = "SELECT `f1961` FROM `".DATA_TABLE."42` WHERE `f5950`='".$line['Входящий номер']."' AND `status`<>'2'";

или

$sqlQuery = "SELECT `f1961` FROM `".DATA_TABLE."42` WHERE `f5950`='{$line['Входящий номер']}' AND `status`<>'2'";

http://php.net/manua...parsing.complex


#238 f-jeka

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

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

Отправлено 19 Февраль 2016 - 12:16

Попробовал оба варианта. Ошибка не выходит, но и запись в поле $line['Заявка'] не появляется.

#239 CbCoder

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

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

Отправлено 19 Февраль 2016 - 12:37

Цитата

Поле "номер заявки 2" заведено как поле связи с полем "номер заявки 1"

А вот тут как раз и поле связи, в которое нужно помещать ID, а не значение поля "номер заявки 1":

$line['Заявка'] = $row['id'];


#240 f-jeka

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

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

Отправлено 19 Февраль 2016 - 13:11

При таком коде тоже запись не происходит. Все вычисление получилось такое
$sqlQuery = "SELECT `f1961` FROM `".DATA_TABLE."42` WHERE `f5950`='{$line['Входящий номер']}' AND `status`<>'2'";
$result = sql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$row = sql_fetch_assoc($result);
$line['Заявка'] = $row['id'];
Может неправильно делается select f1961 ? Это поле называется "Номер заявки" и по нему идет связь с полем "Заявка"





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

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