Сумма прописью, рубли копейки в разных полях.

Статус
Закрыто для дальнейших ответов.

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Привет форумчане. Проблема в следующем. В форме есть три поля: руб, коп, сумма прописью.
Надо чтобы, после потери фокуса полем коп сумма отображалась прописью. Функция, перевода числового значения в текст в прилагаемой форме есть, решение если вся сумма в одном поле, тоже имеется, а вот если руб и коп в разных полях то решение мной не найдено. Может кто поможет новичку ? Всем заранее спасибо.
 

Вложения

  • Сумма прописью.pdf
    269.7 КБ · Просм.: 504
Последнее редактирование:

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Взяв чужую функцию перевода числа в пропись из инета, вы, до кучи, хотите, чтобы вам её перепрограммировали?
В вашем случае, нужно писать отдельно функцию для копеек, отдельно для рублей. А потом все это вешать на каждый свой TextField.
Сейчас у вас рубли и копейки расшифровываются в пропись одной функцией, которая определяет число таким образом: если написано число без точек - это будут рубли, а если написано, например так : "12.1", то расшифруются и копейки. Плюс, до кучи в конце добавляется точка, которая нафиг не нужна, если нужно расшифровка рублей с копейками вместе.
Сидеть переколбашивать чужой код, отделять рубли от копеек - радости мало. Если вы умеет программить решение вашей задачи вполне реализуемо, но сдается мне, это не ваш конёк. Дак, зачем же этим заниматься?
В аттаче, пример того как работает код в вашем пдф, чутка поправленный мной. Чтобы смотрелось красиво копейки нужно писать начиная с точки. Ну, а чтобы все прекрасно было, код, конечно же нужно переписывать вообще.
ЗЫ. И, да! Чтобы вывести 4 копейки, например, нужно будет писать ".04" - вообще не комильфо.
 

Вложения

  • Сумма прописью.pdf
    294.7 КБ · Просм.: 479
Последнее редактирование:

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
не прокатит. Функция перевода там переводит всё сразу, суммируй не суммируй. копейки расшифровываются только когда написано, например, так: "12.1" не будет точки - не будет копеек
 

kstati

иɯɐɯɔʞ
10 лет на форуме
Сообщения
1 138
Реакции
512
Думаю, разберетесь где править:
Код:
this.getField("Сумма_прописью").value = money2string(this.getField("Руб").value)+" "+money2string(0 +this.getField("Коп").value/100);

//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>Руб:Annot1:OnBlur:Action1</ACRO_source>
//<ACRO_script>
this.getField("Сумма_прописью").value = money2string(this.getField("Руб").value)+" "+money2string(0 +this.getField("Коп").value/100);
//</ACRO_script>
//</AcroForm>

//<AcroForm>
Обращаю ваше внимание на саму правку.
money2string(0 +this.getField("Коп").value/100);
Ну и длину поля с копейками логично ограничить двумя символами.

не прокатит. Функция перевода там переводит всё сразу, суммируй не суммируй. копейки расшифровываются только когда написано, например, так: "12.1" не будет точки - не будет копеек
Прокатит. Просто надо посылать не копейки, а сотые рублей.
 
  • Спасибо
Реакции: bsi

qsedftghk

фея
15 лет на форуме
Сообщения
2 032
Реакции
1 198
Так прокатит, конечно же, не додумал жешь.
 
Последнее редактирование:

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Я не претендую на авторство функции, написано же "Может кто поможет новичку ? ", вариантов подобных функций в сети множество. Зачем изобретать велосипед ? Не все должны быть программистами, но иногда для выполнения (точнее ускорения выполнения) своей повседневной работы нужна помощь того или иного специалиста. Подобную проблему в LiveCycle Designer я решил простым добавлением к данной функции
var Itogo
Itogo=Rub.rawValue+Kop.rawValue/100
и конце функции
this.resolveNode("Propis").rawValue = SumProp(parseFloat(Itogo));
но это в LiveCycle Designer, там несколько другой вариант с полями.
В Акробате это не прошло.
Да я и не прошу в коде ковыряться, может у кого есть готовый вариант или ссылка на готовый вариант в сети.
Если кому надо, предлагаю вариант решения проблемы в форме сделанной в LiveCycle Designer. Файл в приложении. Всем наилучших пожеланий.
 

Вложения

  • Сумма прописью Руб Коп.pdf
    79.5 КБ · Просм.: 356

imma

15 лет на форуме
Сообщения
3 089
Реакции
2 185

Вложения

  • Сумма прописью++.pdf
    202.6 КБ · Просм.: 773
Последнее редактирование:
  • Спасибо
Реакции: bsi

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Всем спасибо. Тему закрываем.
 

imma

15 лет на форуме
Сообщения
3 089
Реакции
2 185
а вот пришла мысль сделать еще чуток проще и отказаться от поля "множитель"

рубли-копейки.png
 
  • Спасибо
Реакции: bsi

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Все хорошо. Но ведь как-то можно здесь обойтись и без промежуточных полей ? Так чтобы при потери фокуса полями Руб и Коп, в самой функции или перед выполнением функции, поля Руб и Коп складывались и далее уже проходила обработка получившегося числа функцией и вывод текстом. В моем втором сообщении в приложенном файле так и сделано. Функция выполняется при потери фокуса полями Руб и Коп (так как смена значения в этих полях может меняться только в одном из них) и вывод результата функции вот таким образом
this.resolveNode("СумПроп").rawValue =SumProp (parseFloat(Руб.rawValue+Коп.rawValue/100)); .
 

bsi

Участник
Топикстартер
Сообщения
60
Реакции
6
Идея у rstati самая лучшая, без всяких промежуточных полей, но его код у меня работает неправильно. Я написал вот так
//<AcroForm>
//<ACRO_source>Коп:Annot1:OnBlur:Action1</ACRO_source>
//<ACRO_script>
/*********** принадлежит к: AcroForm:Коп:Annot1:OnBlur:Action1 ***********/
this.getField("Сумма_пр").value = SumProp(this.getField("Руб").value+this.getField("Коп").value/100);

//</ACRO_script>
//</AcroForm>

//<AcroForm>
//<ACRO_source>Руб:Annot1:OnBlur:Action1</ACRO_source>
//<ACRO_script>
/*********** принадлежит к: AcroForm:Руб:Annot1:OnBlur:Action1 ***********/
this.getField("Сумма_пр").value = SumProp(this.getField("Руб").value+this.getField("Коп").value/100);

//</ACRO_script>
//</AcroForm>
и все прекрасно работает.
Файл в приложении.
 

Вложения

  • СумПропРубКоп 1.pdf
    208.7 КБ · Просм.: 769
Статус
Закрыто для дальнейших ответов.