liptonenochek
Новичок
Offline
Пол: 
Расположение: Москва
Сообщений: 3
|
Добрый вечер, перешел на libreoffice. Помогите реализовать макросом пропись по следующему образцу Исходное число: 2222,22 Результат: 2222,22 2 222 (две тысячи двести двадцать два) рубля 22 копейки
:roll:Про надстройку CyrillicTools знаю, но она прописывает не в удобоваримом для меня формате. Может дополнить пару строк этой надстройки, может кто то для себя делал?
|
|
« Последнее редактирование: 20 Март 2021, 20:12 от liptonenochek »
|
Записан
|
|
|
|
rami
|
Про надстройку CyrillicTools знаю, но она прописывает не в удобоваримом для меня формате. Что не подходит? Посмотрите это расширение Numbertext
|
|
|
Записан
|
|
|
|
liptonenochek
Новичок
Offline
Пол: 
Расположение: Москва
Сообщений: 3
|
Что не подходит?
Киррилик делает пропись по следующему виду: 2222,22 ---- Две тысячи двести двадцать два рубля 22 коп___ Numbertext на сайте разработчика сказано: "For Writer usage, see Linux Libertine G with Numbertext support and Typography toolbar." Два расширения установил, не понял как их задействовать, хоть и на тулбар вынес Typography, как написано. Поэтому просто манипуляции с переменной и доп форматами [NatNum12 RUB]0,00 ничего кроме результата как ---- две тысячи двести двадцать два рубля двадцать две копейки. При открытии файла заново на месте поля: Задать переменную = 2222,22 Может подскажите как запустить? libbre 7.1.1.2.
|
|
|
|
liptonenochek
Новичок
Offline
Пол: 
Расположение: Москва
Сообщений: 3
|
Добавить 223 строкой getSumByCurrency Addition = Left(sAddition, Len(sAddition) - 1) & ") " Поменять 195 строкой insertSumWriter sOutText = dInValue & " " & Format(dInValue, "# ##0") & " (" & getSumLiterally (dInValue, sLanguage, sNominativeSingular, iFractionLen, _ sGender, sGenitiveSingular, sGenitivePlural, sFractionName, bFirstUpperCase) P.S. Ребят, если кто то делал пропись копеек, и может поделится кодом, прошу)  Назначить на хоткей: модуль SumLitManage, процедура InsertSumDefault
|
|
« Последнее редактирование: 22 Март 2021, 12:25 от liptonenochek »
|
Записан
|
|
|
|
sokol92
|
Для начала попробуйте так (без надстроек): ' Сумма прописью (для локали по умолчанию ru_RU). Sub TestNativeNumber2 Dim oNatNum, v Dim aLocale As New com.sun.star.lang.Locale oNatNum=CreateUnoService("com.sun.star.i18n.NativeNumberSupplier2") Msgbox oNatNum.getNativeNumberStringParams("371,12", aLocale, 12, "capitalize RUB") End Sub
|
|
|
Записан
|
Владимир.
|
|
|
eeigor
|
@sokol92, даже видя ответ, невозможно (очень трудно) найти, где это написано: "capitalize RUB" Документация оставляет желать лучшего. Но вам ведь это кто-то подсказал? Или вы способ знаете "эффективного изучения LibreOffice"? 
|
|
|
Записан
|
Ubuntu 18.04 LTS • LibreOffice 7.3.2.2 Community
|
|
|
sokol92
|
В LO (как и во многих других предметах) лучший (часто и единственный) инструмент познания - грабли.  Про параметры для Natnum12 написано (как ни странно  ) в документации. Сервис NativeNumberSupplier2 исследовал самостоятельно. Кстати, специфические для русского языка параметры можно получить так (догадаться невозможно): oNatNum.getNativeNumberStringParams("help", aLocale, 12, "") Если есть вероятность, что код Basic будет выполняться в иных локалях, то нужно в примере выше дописать еще строку, определяющую локаль: aLocale.Language="ru" : aLocale.Country="RU" В Calc указанный сервис поддерживается непосредственно на уровне числовых форматов ячеек.
|
|
« Последнее редактирование: 22 Март 2021, 16:47 от sokol92 »
|
Записан
|
Владимир.
|
|
|
eeigor
|
Да-с, весьма забавная ситуация, если не сказать больше… Я здесь не участвовал, но автор темы и все, кто ему помогал, будут чрезвычайно удивлены. А кто писал расширение по этой задаче, интересно, знал ли об этом? "Колесо", как оказалось, было уже изобретено… Ставим лайки
UPD @sokol92, прошёлся ещё раз по ссылке на документацию 7.1, и всё равно: в чистом виде ответа на мой вопрос нет.
Причём в строке "capitalize RUB" следует в точности соблюсти регистр символов, даже первой буквы "c". А так выглядело бы логичнее: "Capitalize". Это список параметров, разделенных пробелом. А почему не запятой? Что ещё туда можно передать?
Равно как и нет описания возможности передать параметр "help" (внимание: регистр символов) вместо первого аргумента функции getNativeNumberStringParams(): NumberString The input string.
Модераторы, вот ещё один приём, требующий помещения в отдельное место (об этом уже писалось).
В отсутствие документации это больше похоже на трюк!
|
|
« Последнее редактирование: 22 Март 2021, 17:27 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LibreOffice 7.3.2.2 Community
|
|
|
sokol92
|
В описании NativeNumberSupplier2 указано, что сервис родился в LO 6.1 (до этого был только NativeNumberSupplier). Указанные выше расширения старше по возрасту.
Очень хорошо, когда базовые конструкции поглощают ранее созданные расширения, поскольку не хотелось бы обусловливать тиражирование своих разработок какими-то дополнительными требованиями по установке расширений, настройке параметров и пр.
Про возможность подсказки я где-то подсмотрел, и, к величайшему сожалению, потерял ссылку на первоисточник. Пришлось открывать заново.
|
|
« Последнее редактирование: 22 Март 2021, 17:29 от sokol92 »
|
Записан
|
Владимир.
|
|
|
eeigor
|
NatNum12Параметры следующие (кроме дат): ordinal ordinal-number capitalize upper ordinal title RUB
|
|
« Последнее редактирование: 22 Март 2021, 18:45 от eeigor »
|
Записан
|
Ubuntu 18.04 LTS • LibreOffice 7.3.2.2 Community
|
|
|
sokol92
|
Плюс из help'a: cardinal-feminine: одна, две, три cardinal-masculine: один, два, три cardinal-neuter: одно, два, три ordinal-feminine: первая, вторая, третья ordinal-masculine: первый, второй, третий ordinal-neuter: первое, второе, третье ordinal-number-feminine: 1-я, 2-я, 3-я ordinal-number-masculine: 1-й, 2-й, 3-й ordinal-number-neuter: 1-е, 2-е, 3-е
|
|
|
Записан
|
Владимир.
|
|
|
|
eeigor
|
Спасибо. Очень интересная информация (вся новая для меня).
|
|
|
Записан
|
Ubuntu 18.04 LTS • LibreOffice 7.3.2.2 Community
|
|
|
sokol92
|
Михаил, спасибо за разъяснения!
|
|
|
Записан
|
Владимир.
|
|
|
|