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

Тема в разделе "1C и всё что с ней связано", создана пользователем vbs, 22 апр 2009.

  1. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    На базе 1с7.7 нужно вывести произвольное число, представляющее собой массу,
    в виде, например, "Двадцать две тонны триста сорок пять килограммов семьсот один грамм".
    Исходное число дробное, масса представлена в килограммах (22345,701).
    Ваши предложения ?
     
  2. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    это прикол?
     
  3. gorlanovmax

    gorlanovmax Well-Known Member
    1C Team

    Регистрация:
    19 июн 2008
    Сообщения:
    286
    Симпатии:
    0
    А если, посмотреть документ Расходная Накладная? Там же есть пропись суммы накладной.
     
  4. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    В правильном направлении мыслите :)

    Да нет - в реальной жизни потребовалось при печати ТТН
     
  5. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
  6. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Я чего спросил - очень сомневаюсь в том что автор не может данную задачу решить самостоятельно. В приныпе в теме написано для новичков, а отвечают далеко не новечки)
     
  7. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Ник не посмотрел и не подумал :)

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Не очень сложно, если как верно заметил Макс, использовать пропись по аналогии с валютами, но камушки попадаются...
     
  9. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    vbs ну уж пошла такая пьянка и нет новечков - рассказывайте что за камушки, авось кто-то прочитает и ему энто поможет
     
  10. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Первая мысль - взять файл прописи (например, USD.spl) и заменить в нем тысячи на тонны, доллары на килограммы, а центы на граммы.
    Беда в том, что дробная часть валюты содержит два знака, а у килограммов - три...
     
  11. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Гм - про spl только щас узнал. Валютных счетов не выписывали пока. Пригодится.

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

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Понятно, что торопился и не все правильно выделил, но вот что получится для моего примера (22345.701) :
    ячи триста сорок пять рублей 70 копеек килограммов ей 7грамм
    И опять же проблема с граммами и при таком подходе решена НЕ БУДЕТ (701 грамм, как ни крути, превратится в прописи в 70 !)
     
  13. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Я за рулем право-лево тоже бывает путаю ;-)

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

    kaa Гость

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

    может так?
     
  15. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Месье знает толк в извращенях! :D
     
  16. kaa

    kaa Гость

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

    tanat Well-Known Member

    Регистрация:
    2 мар 2007
    Сообщения:
    265
    Симпатии:
    0

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Для граммов все равно придется написать свою обработку
     
  19. kaa

    kaa Гость

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

    и т.д.
     
  20. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    да это понятно. Я просто хотел подчеркнуть, что тупое использование ЧПДС не прокатит, кое-что придется поменять
     
Загрузка...
Похожие Темы - Задачка для начинающих
  1. Hehabr
    Ответов:
    1
    Просмотров:
    485
  2. dmalsh
    Ответов:
    1
    Просмотров:
    1.005
  3. varenbko
    Ответов:
    0
    Просмотров:
    1.040
  4. Fillya
    Ответов:
    0
    Просмотров:
    1.091
  5. ferrum
    Ответов:
    1
    Просмотров:
    1.119

Поделиться этой страницей