• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Задачка для начинающих

  • Автор темы vbs
  • Дата начала
V

vbs

На базе 1с7.7 нужно вывести произвольное число, представляющее собой массу,
в виде, например, "Двадцать две тонны триста сорок пять килограммов семьсот один грамм".
Исходное число дробное, масса представлена в килограммах (22345,701).
Ваши предложения ?
 
G

gorlanovmax

А если, посмотреть документ Расходная Накладная? Там же есть пропись суммы накладной.
 
K

KiR

Да нет - в реальной жизни потребовалось при печати ТТН
Я чего спросил - очень сомневаюсь в том что автор не может данную задачу решить самостоятельно. В приныпе в теме написано для новичков, а отвечают далеко не новечки)
 
P

puh14

Я чего спросил - очень сомневаюсь в том что автор не может данную задачу решить самостоятельно. В приныпе в теме написано для новичков, а отвечают далеко не новечки)

Ник не посмотрел и не подумал :)

А что - каким-то особо забористым образом решили?
 
K

KiR

vbs ну уж пошла такая пьянка и нет новечков - рассказывайте что за камушки, авось кто-то прочитает и ему энто поможет
 
V

vbs

vbs ну уж пошла такая пьянка и нет новечков - рассказывайте что за камушки, авось кто-то прочитает и ему энто поможет
Первая мысль - взять файл прописи (например, USD.spl) и заменить в нем тысячи на тонны, доллары на килограммы, а центы на граммы.
Беда в том, что дробная часть валюты содержит два знака, а у килограммов - три...
 
P

puh14

Гм - про spl только щас узнал. Валютных счетов не выписывали пока. Пригодится.

без заморочи на суффиксы -а, -ов и без spl (но опять же с двумя знаками)
именно это я и имел в виду под забористым способом.

ПечМасса = Прав(Формат(Сумма,"ЧПДС"),Найти(Формат(Сумма,"ЧПДС"),"руб")-1) + " килограммов " + Сред(Формат(Сумма,"ЧПДС"),Найти(Формат(Сумма,"ЧПДС"),"руб")+4,4) + "грамм"
 
V

vbs

ПечМасса = Прав(Формат(Сумма,"ЧПДС"),Найти(Формат(Сумма,"ЧПДС"),"руб")-1) + " килограммов " + Сред(Формат(Сумма,"ЧПДС"),Найти(Формат(Сумма,"ЧПДС"),"руб")+4,4) + "грамм"
Понятно, что торопился и не все правильно выделил, но вот что получится для моего примера (22345.701) :
ячи триста сорок пять рублей 70 копеек килограммов ей 7грамм
И опять же проблема с граммами и при таком подходе решена НЕ БУДЕТ (701 грамм, как ни крути, превратится в прописи в 70 !)
 
P

puh14

Я за рулем право-лево тоже бывает путаю ;-)

По идее одними ЧП всё прекрасно разруливается, только с суффиксами надо помучится.
 
K

kaa

ПечСумма = Формат(Сумма,"ЧПДС");
ПечСумма = ?(Найти(ПечСумма,"тысяч")>0,СтрЗаменить(ПечСумма,"тысяч","тонн"),ПечСумма);
ПечСумма = ?(Найти(ПечСумма,"тысячи")>0,СтрЗаменить(ПечСумма,"тысячи","тонн"),ПечСумма);
ПечСумма = ?(Найти(ПечСумма,"рубль")>0,СтрЗаменить(ПечСумма,"рубль","киллограм"),ПечСумма);
ПечСумма = ?(Найти(ПечСумма,"рублей")>0,СтрЗаменить(ПечСумма,"рублей","киллограм"),ПечСумма);
ПечСумма = ?(Найти(ПечСумма,"копейка")>0,СтрЗаменить(ПечСумма,"копейка","грамм"),ПечСумма);
ПечСумма = ?(Найти(ПечСумма,"копеек")>0,СтрЗаменить(ПечСумма,"копеек","грамм"),ПечСумма);

может так?
 
K

kaa

нет ну можно завести переменную список значений напихать туда нужные значения со строковым представлениям и в цикле менять при нахождении в строке значения на представление :D
 
T

tanat

И опять же проблема с граммами и при таком подходе решена НЕ БУДЕТ (701 грамм, как ни крути, превратится в прописи в 70 !)


Незнаю, как в 7.7, а в 8ке у функции ЧислоПрописью(<Число>, <Форматная строка>, <Параметры предмета исчисления>) в параметрах предмета исчисления можно задать разрядность (кол-во знаков после запятой). Ну а дальше уже преобразовывать тыщи в тонны).
 
V

vbs

ПечСумма = ?(Найти(ПечСумма,"копейка")>0,СтрЗаменить(ПечСумма,"копейка","грамм"),ПечСумма);
ПечСумма = ?(Найти(ПечСумма,"копеек")>0,СтрЗаменить(ПечСумма,"копеек","грамм"),ПечСумма);
Для граммов все равно придется написать свою обработку
 
K

kaa

граммы = Цел((Сумма-Цел(Сумма))*1000);

и т.д.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!