Мне нужно вывести в печатной форме "Инв-8а" содержание драгметаллов прописью.А они имеют 12 знаков после запятой. Подскажите как это правильно хоть должно быть по-русски?
1С:Предприятие 8.2, Управление производственным предприятием, редакция 1.3 (1.3.27.2) (http://v8.1c.ru/enterprise/) Copyright (С) ООО "1C", 2009-2012. Все права защищены
(http://www.1c.ru/)
Глобальный контекст (Global context)
ЧислоПрописью (NumberInWords)
Синтаксис:
ЧислоПрописью(<Число>, <ФорматнаяСтрока>, <ПараметрыПредметаИсчисления>)
Параметры:
<Число> (обязательный)
Тип: Число.
Число, которое необходимо преобразовать в строку прописью.
<ФорматнаяСтрока> (необязательный)
Тип: Строка.
Форматная строка представляет собой строковое значение, включающее параметры форматирования. Параметры форматирования перечисляются через символ ";" (точка с запятой). Если параметр не указывается, используется значение параметра по умолчанию.
Каждый параметр задается именем параметра, символом "=" (равно) и значением параметра. Значение параметра может указываться в одинарных или двойных кавычках. Это необходимо, если значение параметра содержит символы, используемые в синтаксисе форматной строки.
Л (L) - Код локализации. По умолчанию используется код локализации, установленный в операционной системе. Примеры кодов локализации: ru_RU - Русский (Россия); en_US - Английский (США).
НП (SN) - Включать/не включать название предмета исчисления (Булево), по умолчанию - Истина.
НД (FN) - Включать/не включать название десятичных частей предмета исчисления (Булево), по умолчанию - Истина.
ДП (FS) - Дробную часть выводить прописью/числом (Булево), по умолчанию - Ложь.
<ПараметрыПредметаИсчисления> (необязательный)
Тип: Строка.
Представляет собой строковое значение, определяющее параметры предмета исчисления. Параметры предмета исчисления перечисляются через "," (запятая). Формат строки зависит от кода локализации.
Для русского и белорусского языков (ru_RU, be_BY)
"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2", где:
"рубль, рубля, рублей, м" – предмет исчисления:
рубль – единственное число именительный падеж,
рубля – единственное число родительный падеж,
рублей – множественное число родительный падеж,
м – мужской род (ж – женский род, с - средний род);
"копейка, копейки, копеек, ж" – дробная часть, аналогично предмету исчисления (может отсутствовать);
"2" – количество разрядов дробной части (может отсутствовать, по умолчанию равно 2).
Возвращаемое значение:
Тип: Строка.
Представление числа прописью.
Описание:
Формирует представление числа прописью в соответствии с заданными форматной строкой и параметрами предмета исчисления.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
Примечание:
Если задан режим совместимости НеИспользовать, то по умолчанию использует код локализации, заданный для сеанса (параметром VL), аналогично форматированию числа и даты.
Пример:
// Пример форматной строки для вывода числа прописью на русском
// языке, с выводом целой и дробной части прописью и выводом
// предмета исчисления.
ФормСтрока = "Л = ru_RU; ДП = Истина";
ПарПредмета="доллар,доллара,долларов,м,цент,цента,центов,м,2";
ПрописьЧисла = ЧислоПрописью(2341.56, ФормСтрока, ПарПредмета);
// Результат вычисления:
// "Две тысячи триста сорок один доллар пятьдесят шесть центов"
Стандартно 1с выводит всякую ерунду - Двадцать шесть целых четыреста двадцать два миллиарда пятьсот пятьдесят семь миллионов семьсот тридцать восемь тысяч девятьсот семь трилионных)
(11) Михайловна, напишите как вам надо чтобы выводилось..что не так в этов варианте
<quote>
Двадцать шесть целых четыреста двадцать два миллиарда пятьсот пятьдесят семь миллионов семьсот тридцать восемь тысяч девятьсот семь трилионных)
</quote>
26,422557738907 - Двадцать шесть целых четыре двадцать две тысячных пятьсот пятьдесят семь стотысячных 738 миллионных 907 трилионных (плюс цифры должны быть словами)
(14) Михайловна, если вам надо так писать то формируйте строку самостоятельно. то есть берете дробную часть, переводите в строку, от нее берет левые три символа и удаляете их, три символа переводите в число и для этого числа пишете форматную строку..ну и т.д.
Хотя, ИМХО, то что вы написали это бред и так быть не должно
26,422557738907 - Двадцать шесть целых четыре двадцать две тысячных пятьсот пятьдесят семь стотысячных 738 миллионных 907 трилионных (плюс цифры должны быть словами)
//для начала разберите число на знаки до запятой и после
ПозицияРазделителя = Найти(Строка(ВашеЧисло),".");
ЦелаяЧасть = Лев(Строка(ВашеЧисло),ПозицияРазделителя-1);
ДробнаяЧасть = Прав(Строка(ВашеЧисло),СтрДлина(Строка(ВашеЧисло))-ПозицияРазделителя);
//затем разделите дробную часть на сотые, стотысячные и т.д.
СотаяЧасть = Лев(ДробнаяЧасть,2);
СтотысячнаяЧасть = Сред(ДробнаяЧасть,3,3);
//ну и вывод в пф
Блаблабламакетобласть.параметры.ЦелаяЧасть = ЧислоПрописью(Число(ЦелаяЧасть))+" целых";
Если СотаяЧасть <> "" Тогда
Блаблабламакетобласть.параметры.СотаяЧасть = ЧислоПрописью(Число(СотаяЧасть))+" сотых";
КонецЕсли;
Если СтотысячнаяЧасть <> "" Тогда
Блаблабламакетобласть.параметры.СотаяЧасть = ЧислоПрописью(Число(СтотысячнаяЧасть ))+" стотысячных";//что за слово вообще такое? )
КонецЕсли;
//и т.д.
Показать
ясно дело, что еще надо добавить проверки на длину числа при вычислении кусков дробной части и т.п., можно проанализировать количество знаков после запятой и выводить не стотысячные, например, а десятитысячные доли,но это уже мелочи.
<quote>
В русском языке десятичные дроби читаются так: сначала произносится целая часть, потом слово «целых» («целая»), потом дробная часть так, как если бы всё число состояло только из этой части, то есть числитель дроби — количественное числительное женского рода (одна, две, восемь и т. д.), а знаменатель — порядковое числительное (седьмая, сотая, двести тридцатая и т. д.).
</quote>