Источник: КОНВЕРТАЦИЯ В РИМСКИЕ ЦИФРЫ И ОБРАТНО В 1С
&НаКлиенте Функция РазложитьСтрокуВМассивПодстрок(тСтрока, тРазделитель) мВозврат = Новый Массив; тМнСтрока = СтрЗаменить(тСтрока, тРазделитель,Символы.ПС); Для тСчет = 1 по СтрЧислоСтрок(тМнСтрока) Цикл мВозврат.Добавить(СтрПолучитьСтроку(тМнСтрока, тСчет)); КонецЦикла; Возврат мВозврат; КонецФункции &НаКлиенте Функция ArabicToRoman(Знач тЧисло) мБуквы = РазложитьСтрокуВМассивПодстрок("I,IV,V,IX,X,XL,L,XC,C,CD,D,CM,M", ","); мЦифры = РазложитьСтрокуВМассивПодстрок("1,4,5,9,10,40,50,90,100,400,500,900,1000", ","); тРимскоеЧисло = ""; Для тСчет = 0 По мБуквы.Количество() - 1 Цикл тБуква=мБуквы.Количество() - тСчет - 1; Пока тЧисло >= Число(мЦифры[тБуква]) Цикл тРимскоеЧисло = тРимскоеЧисло + мБуквы[тБуква]; тЧисло = тЧисло - Число(мЦифры[тБуква]); КонецЦикла; КонецЦикла; Возврат тРимскоеЧисло; КонецФункции &НаКлиенте Функция RomanToArabic(тРимскоеЧисло) сРимские = Новый Структура("M, D, C, L, X, V, I", 1000, 500, 100, 50, 10, 5, 1); тЧислоСимволов = СтрДлина(тРимскоеЧисло); тАрабскоеЧисло = 0; Для тСчет=1 По тЧислоСимволов Цикл Если тСчет < тЧислоСимволов И сРимские[Сред(тРимскоеЧисло, тСчет, 1)] < сРимские[Сред(тРимскоеЧисло, тСчет+1, 1)] Тогда тАрабскоеЧисло = тАрабскоеЧисло - сРимские[Сред(тРимскоеЧисло, тСчет, 1)]; Иначе тАрабскоеЧисло = тАрабскоеЧисло + сРимские[Сред(тРимскоеЧисло, тСчет, 1)]; КонецЕсли; КонецЦикла; Возврат тАрабскоеЧисло; КонецФункции