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


Вычисление в зависимости от выбранного значения справочника


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

#1 rdyu

    Участник

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

Отправлено 26 Январь 2016 - 03:35

Здравствуйте!
Возможно ли такое..
Нужно рассчитать выручку в зависимости от выбранного в справочнике значения.
В этом значении указана станция метро либо МО-Город
Нужно чтобы было
Если значение поля метро = МО-*
то
Выручка=сумма - процент мастера для МО
иначе
выручка=сумма - процент мастера для Москвы

Пробовал делать так
if ($line['Метро']=="МО") {
$line['Выручка'] = $line['сумма'] * $line['Мастер']['МО'];
}
else
{
$line['Выручка'] = $line['сумма'] * $line['Мастер']['Москва'];}
Но он считает только то что после else
Возможно не реагирует на значение поля "Метро"
Еще не понятно как сделать маску МО-* чтоб он отрабатывал все поля где указано МО-*

#2 CbCoder

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

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

Отправлено 26 Январь 2016 - 09:11

Цитата

Еще не понятно как сделать маску МО-* чтоб он отрабатывал все поля где указано МО-*

if (substr($line['Метро'],0,2)=="МО") {

http://php.net/manua...tion.substr.php

#3 rdyu

    Участник

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

Отправлено 26 Январь 2016 - 15:42

Просмотр сообщенияCbCoder (26 Январь 2016 - 09:11) писал:

if (substr($line['Метро'],0,2)=="МО") {

http://php.net/manua...tion.substr.php

Спасибо за наводку но почему то не отрабатывает первую часть кода
if (substr($line['Метро'],0,2)=="МО") {
$line['Выручка'] = $line['сумма'] * $line['Мастер']['МО'];
}
Выдает значение только после else.

Даже если жестко прописать
if ($line['Метро']=="МО-Люберцы") {
И в таблице выбрать указанный пункт (МО-Люберцы), все равно выручку считает по
else
{
$line['Выручка'] = $line['сумма'] * $line['Мастер']['Москва'];}

Сообщение отредактировал rdyu: 26 Январь 2016 - 15:43


#4 CbCoder

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

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

Отправлено 26 Январь 2016 - 16:54

Тип поля "Метро" какой? Если это поле связи, то немудрено, что работать не будет. Пример кода был рассчитан на поле с типом "текст" или "список". В случае поля связи нужно обратится к подмассиву полей, как это к примеру сделано у вас для поля "Мастер".

#5 rdyu

    Участник

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

Отправлено 26 Январь 2016 - 17:30

Просмотр сообщенияCbCoder (26 Январь 2016 - 16:54) писал:

Тип поля "Метро" какой? Если это поле связи, то немудрено, что работать не будет. Пример кода был рассчитан на поле с типом "текст" или "список". В случае поля связи нужно обратится к подмассиву полей, как это к примеру сделано у вас для поля "Мастер".
В первом сообщении писал что обращаюсь к справочнику.
Тип поля "Метро" - связь со справочником
Подскажите как обратиться к подмассиву.
Спасибо!

#6 CbCoder

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

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

Отправлено 26 Январь 2016 - 17:44

Так я же написал - у вас в коде уже есть подобное обращение на примере поля "Мастер": $line['Мастер']['Москва']. Аналогично и тут: $line['Метро']['Поле из справочника'].

#7 rdyu

    Участник

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

Отправлено 27 Январь 2016 - 00:08

Просмотр сообщенияCbCoder (26 Январь 2016 - 17:44) писал:

Так я же написал - у вас в коде уже есть подобное обращение на примере поля "Мастер": $line['Мастер']['Москва']. Аналогично и тут: $line['Метро']['Поле из справочника'].
Спасибо разобрался! Почти(
Последний вопрос..

if (substr($line['Метро']['Станция'],0,2)=="МО") {
Этот блок работает толко если МО написано английскими буквами, если по русски то не работает.
Может с кодировкой что-то?

#8 CbCoder

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

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

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

Цитата

Может с кодировкой что-то?

Да, я забыл что с кодировкой юникод нужен другой вариант данной функции:

if (mb_substr($line['Метро']['Станция'],0,2)=="МО") {

http://php.net/manua...n.mb-substr.php

#9 rdyu

    Участник

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

Отправлено 27 Январь 2016 - 22:45

Спасибо! Все работает!





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

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