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


Сумма прописью без рублей и копеек


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

#21 Alej

    Новичок

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

Отправлено 09 Июнь 2011 - 14:33

Просмотр сообщенияРазработчик (9.6.2011, 14:23) писал:

С этого и надо было начинать. В 1.8.5 пробелов вообще нет, непонятно что Вас смущает тогда. SumFormat там есть, но используется исключительно для вывода десятичных нулей после запятой.
:)
Тогда меня весьма смущает то, что арифметические выражения считаются не правильно. Причем как-то странно и выборочно.
Например в одном цикле 100*122=12200 и тут же следом 1.5*1000=1000. Деление странно начинает подвирать после 3-4 знака после запятой.
Поиски по форуму и привели меня в эту ветку, я и подумал (особенно после 1.5*1000=1000) что там пробелы где-то затесались!

#22 CbCoder

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

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

Отправлено 09 Июнь 2011 - 14:39

Вы пробовали выводить числовые поля в шаблоне? Видели там пробелы? Опять же, номер версии нужно сообщать в теме обязательно и сразу же, т.к. программа меняется постоянно, даже внутри одной версии, что уж говорить о таких древних "мамонтах" как 1.8.5.

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

#23 Alej

    Новичок

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

Отправлено 09 Июнь 2011 - 14:50

Просмотр сообщенияРазработчик (9.6.2011, 14:39) писал:

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

#24 arsenal

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

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

Отправлено 04 Ноябрь 2011 - 01:48

Просмотр сообщенияmak (23.3.2011, 22:08) писал:

И еще: как smarty (печатной форме) можно изменить формат переменной? Дело в том, что из базы числа передаются разделенные пробелом - 1 115 454,12. арифметические действия с ними не работают, т.к. простые действия в скобках берут часть до пробела, а функция math фыдает ошибку. пробовал удалять пробелы и указывать формат функциями string_format и textformat. не получается :rolleyes:
Аналогичная проблема, только в JS. Нужно взять сумму из определенного поля и поделить ее на 100.
var summa = document.getElementById('value930').value / 100;
Но вместо результата получаем "NaN". Поле 930 - числовое. Но JS понимает его как строку. Пробовал преобразовывать его к числовому формату при помощи "parseFloat", но получаем число только до пробела, остальное отбрасывается. Как быть?
версия 1.9.4.

#25 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 356 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 04 Ноябрь 2011 - 03:35

Просмотр сообщенияarsenal (4.11.2011, 1:48) писал:

Аналогичная проблема, только в JS. Нужно взять сумму из определенного поля и поделить ее на 100.
var summa = document.getElementById('value930').value / 100;
Но вместо результата получаем "NaN". Поле 930 - числовое. Но JS понимает его как строку. Пробовал преобразовывать его к числовому формату при помощи "parseFloat", но получаем число только до пробела, остальное отбрасывается. Как быть?
версия 1.9.4.
удалите пробелы

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#26 arsenal

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

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

Отправлено 07 Ноябрь 2011 - 23:58

Просмотр сообщенияandibrag (4.11.2011, 3:35) писал:

удалите пробелы
Как удалить пробелы? Покопался в JS, придумал только следующее
var summa = document.getElementById('value921').value + ""; //Преобразовываем число в строку
document.getElementById('value1412').value = summa.replace(" ", "") / 100 * document.getElementById('value930').value;
replace должна заменять пробел " " на пустую строку"". Но в результате все равно получаю NaN.
Подскажите кто знает, какой еще может быть вариант?

Понял, надо summa.replace(" ", "") преобразовать обратно в число, тогда все работает.

Сообщение отредактировал arsenal: 08 Ноябрь 2011 - 08:14


#27 Екатерина

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений
  • Пол:Женщина
  • Интересы:Клиентская база

Отправлено 19 Июнь 2012 - 11:19

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

#28 CbCoder

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

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

Отправлено 19 Июнь 2012 - 11:52

Конечно можно, в чем проблема? Если я конечно правильно вас понял. Внутрь функции можно вставлять любую переменную, будь то переменная поля или его итогов.

#29 Екатерина

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений
  • Пол:Женщина
  • Интересы:Клиентская база

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

Видимо у меня возникла проблема именно с именем поля, которое я пытаюсь подставить, так как несмотря на то что я поменяла с

$data = data_table("Договор", "id={ID}");
return num2str($data['Сумма'], "", "", 1);
на

$data = data_table("Договор", "id={ID}");
return num2str($data['Позиции договора.Сумма'], "", "", 1);
изменений не произошло..
Подскажите, пожалуйста, в чем проблема

#30 CbCoder

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

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

Отправлено 19 Июнь 2012 - 13:54

Прошу прощения, а где именно вы прописываете это вычисление, и какая у вас версия КБ?

#31 Екатерина

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений
  • Пол:Женщина
  • Интересы:Клиентская база

Отправлено 19 Июнь 2012 - 14:05

вычисление я прописываю в таблице "Договоры", в режиме редактирования шаблона, "добавить вычисляемую переменную" и в окошке для переменной. Версия 1.9.5

#32 CbCoder

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

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

Отправлено 19 Июнь 2012 - 14:20

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

#33 Екатерина

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений
  • Пол:Женщина
  • Интересы:Клиентская база

Отправлено 19 Июнь 2012 - 14:57

В первом случае вычисление работает корректно, во втором пишет информацию из первого вычисления.
А, тогда я поняла свою ошибку.
Только все дело в том, что как раз сумму из подтаблицы мне хотелось бы увидеть прописью.
С этим к вам, собсно, и обращаюсь)

#34 CbCoder

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

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

Отправлено 19 Июнь 2012 - 15:44

Не совсем честно говоря понял, как второе вычисление может возвращать информацию из первого (разве что вы их слили в одно, и у вас 2 команды "return" одновременно), но если по сути, то что именно вы хотите получить из второго вычисления? Какую именно сумму из подтаблицы? Одно дело, если вы хотите получить итоговую сумму по всем позициям договора (хотя думаю это вряд ли, т.к. судя по первому примеру она уже есть в виде отдельного поля в таблице "Договор", или нет?), и другое - если вы хотите получить список всех сумм из позиций, или скажем только сумму из первой/последней позиции.

#35 Екатерина

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений
  • Пол:Женщина
  • Интересы:Клиентская база

Отправлено 19 Июнь 2012 - 15:46

Хотелось бы получить сумму из первой позиции

#36 CbCoder

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

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

Отправлено 19 Июнь 2012 - 16:05

Ок, тогда, код будет примерно таким:

$data = data_table("Позиции договора", "`Договор`={ID}");
return num2str($data['Сумма'], "", "", 1);

Поясняю: через функцию data_table идет обращение к первой записи в таблице "Позиции договора", через поле связи `Договор` (возможно у вас оно зовется по другому), и только затем уже используется поле "Сумма" из этой таблицы.

#37 Екатерина

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений
  • Пол:Женщина
  • Интересы:Клиентская база

Отправлено 19 Июнь 2012 - 16:39

Спасибо, буду пробовать :)

#38 Екатерина

    Участник

  • Пользователи
  • PipPip
  • 14 сообщений
  • Пол:Женщина
  • Интересы:Клиентская база

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

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

#39 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Август 2013 - 09:00

Доброго дня))
До этого в документе html была следующая функция
{$Summa} ({SumPropis value="{$Summa}" caps=1})
Необходимо, чтобы проставлялись только рубли без указания копеек,переделала под
SumPropis(field=$Summa, currency="рублей", cents="none", caps=1)
Выдает ошибку на шаблон((

#40 Dinara

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

  • Пользователи
  • PipPipPip
  • 527 сообщений
  • Пол:Женщина
  • Город:Уфа

Отправлено 23 Август 2013 - 09:02

+ в шаблоне RTF такое вычисление
$cur_rec = data_table("Договор","id={ID}"); return num2str($cur_rec['Сумма'],"","",0);
Также нужно,чтобы не было копеек..в ТП посоветовали
return str_replace(" 00", "", num2str(($cur_rec['Сумма'], ""," ", 0));
Выдало ошибку http://take.ms/pN5h91

Сообщение отредактировал Dinara: 23 Август 2013 - 09:04






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

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