Добрый день.
Есть ли функция бсп которая отображает дробное число не в десятичном виде, а в виде строки через "/" ?
Пример:
0.5 как 1/2
0.25 как 1/4 и т.д.
---
Как вариант попробуйте воспользоваться описание получения обыкновенной дроби из десятичной:
https://www.berdov.com/docs/fraction/kak-perevesti-desyatichnuyu-drob-v-obiknovennuyu/

Набросал код процедуры для перевода:

```1c
    Процедура ПолучитьДробнуюФорму(Команда)

    ЦелаяЧасть = Цел(Объект.ИсходноеЧисло);

    ЗнакиПослеЗапятой = Объект.ИсходноеЧисло - ЦелаяЧасть;

    КоличествоЗнаковПослеЗапятой = СтрДлина(Сред(Строка(ЗнакиПослеЗапятой),СтрНайти(Строка(ЗнакиПослеЗапятой), ",") + 1));

    КоэффициентПриведения = Pow(10,КоличествоЗнаковПослеЗапятой);

    Числитель = ЗнакиПослеЗапятой * КоэффициентПриведения;

    Знаменатель = КоэффициентПриведения;

    НайденНОД = Ложь;

    Для Счетчик = 1 По КоэффициентПриведения Цикл

    НОД = КоэффициентПриведения + 1 - Счетчик;

    Если (Числитель % НОД = 0) И (Знаменатель % НОД = 0) Тогда

    НайденНОД = Истина;

    Прервать;

    КонецЕсли;

    КонецЦикла;

    Если НайденНОД Тогда

    ДробноеПредставление = СтрШаблон("%1/%2", СтрЗаменить(Числитель / НОД, Символы.НПП, "), СтрЗаменить(Знаменатель / НОД, Символы.НПП, "));

    Сообщить(ДробноеПредставление);

    Иначе

    Сообщить("Дробное представление не получено");

    КонецЕсли;

    КонецПроцедуры
```
---
Есть ли функция бсп которая отображает дробное число не в десятичном виде, а в виде строки через "/" ? Уверен, что нет.

Намного интереснее - а вы сами, без БСП, способны написать такую функцию? ;-)
---
Не встречал, но написать самостоятельно такую функцию весьма хорошая задача для взбадривания мозгов, балго что алгоритм несложный для непериодических дробей.
---
Тут скорее нужен фиксированный список значений. Условно говоря, когда можно выбрать половину дюжины, треть дюжины или четверть дюжины.
---
вот такая функция получается

```1c
    Значение = 0.17;

    Функция ПолучитьДробь(Значение)
    //точность до 100
    лкБаза = 1/Значение;
    Если лкБаза <> Цел(лкБаза) Тогда
    лкБаза = Цел(лкБаза * 100)/100; //можно формат использовать
    КонецЕсли;

    Возврат "1/" + лкБаза;

    КонецФункции
```

результат = "1/5.88"
---
С переводом дробей затея несколько посложнее выходит.
---
представляю сидит бухгалтер, формирует оборотку по 60, а ему отчет выдает
Дт 2/6 Кт 1/85
это будет шедевр
---
По-моему, нет и быть не может, т.к. число с плавающей точкой не всегда можно однозначно привести к простой дроби, например, 0.33333..., читайте про бесконечные десятичные дроби, которые записываются как-то так: 1.(3), где (3) означает "три в периоде".
---
Как вариант попробуйте воспользоваться описание получения обыкновенной дроби из десятичной:
https://www.berdov.com/docs/fraction/kak-perevesti-desyatichnuyu-drob-v-obiknovennuyu/

Набросал код процедуры для перевода:

```1c
    Процедура ПолучитьДробнуюФорму(Команда)

    ЦелаяЧасть = Цел(Объект.ИсходноеЧисло);

    ЗнакиПослеЗапятой = Объект.ИсходноеЧисло - ЦелаяЧасть;

    КоличествоЗнаковПослеЗапятой = СтрДлина(Сред(Строка(ЗнакиПослеЗапятой),СтрНайти(Строка(ЗнакиПослеЗапятой), ",") + 1));

    КоэффициентПриведения = Pow(10,КоличествоЗнаковПослеЗапятой);

    Числитель = ЗнакиПослеЗапятой * КоэффициентПриведения;

    Знаменатель = КоэффициентПриведения;

    НайденНОД = Ложь;

    Для Счетчик = 1 По КоэффициентПриведения Цикл

    НОД = КоэффициентПриведения + 1 - Счетчик;

    Если (Числитель % НОД = 0) И (Знаменатель % НОД = 0) Тогда

    НайденНОД = Истина;

    Прервать;

    КонецЕсли;

    КонецЦикла;

    Если НайденНОД Тогда

    ДробноеПредставление = СтрШаблон("%1/%2", СтрЗаменить(Числитель / НОД, Символы.НПП, "), СтрЗаменить(Знаменатель / НОД, Символы.НПП, "));

    Сообщить(ДробноеПредставление);

    Иначе

    Сообщить("Дробное представление не получено");

    КонецЕсли;

    КонецПроцедуры
```
---
Забыл добавить целую часть, если у вас значения с целой частью - добавьте ее обратно в дробном представлении.
---
Хорошая затея, если после запятой немного разрядов и общий делитель найдется быстро.
---
Надеюсь у автора типовая конфигурация и он работает с типом Число(15,2) или подобным.
---
Надеюсь что нет и придется вспоминать признаки делимости натуральных чисел а так же простые числа))

P.S. Хотя в знаменателе число которое делиться только на 2 и 5, что весьма упрощает дело.
---
а 0.17 в дробях это как будет?
---
17/100
---
логично, но не похоже на 1/...
---
Арифметика точна и беспощадна. Что тут поделаешь?))
---
17/100 вполне себе дробь.
---
результат = "1/5.88"
---
Формально в "техзадании" автор речь про правильные дроби прямым текстом, конечно, не вел. Но что-то подсказывает что под формулировкой виде строки через "/" скрывается именно она, а там так нельзя делать.
---
дроби бываю обыкновенными или десятичными. А тут какой-то монстр получился обыкновеннодесятичный :)
---
так для таких значений, функция вернет "правильную" дробь

0.2 1/5
0.25 1/4
0.5 1/2
0.1 1/10
---
Под термином "правильные" вы подразумеваете математический термин или какое-то собственное представление об обыкновенных дробях? К чему тут кавычки?

P.S. 17/100, 3/8 11/123 это тоже все правильные дроби.
---
да, вы правы, это у меня опечатка была