Источник: КОНВЕРТАЦИЯ В РИМСКИЕ ЦИФРЫ И ОБРАТНО В 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)];
КонецЕсли;
КонецЦикла;
Возврат тАрабскоеЧисло;
КонецФункции