Вопрос

Цифра на украинском, не деньги.

Добрый день!

Для русской версии есть [#NumberRU#], а как для укр?

Хочу в печатную форму добавить цифру прописью, не деньги (просто цифра)

Нравится

2 комментария

Добрый день.

Скорее всего готового решения нет, но Вы можете написать свой макрос, который будет переводить цифры в слова.

В интернете масса примеров, в которых описывается данный алгоритм.

Интерфейс этого макроса реализован в схеме NumberRUExpressionConverter, который, в свою очередь, вызывает схему NumberInWords, где и реализовано само превращение в текст. Можно попробовать сделать аналогичный NumberUKExpressionConverter и к нему переведенную копию NumberInWords.

Первая из схем совсем короткая:

namespace Terrasoft.Configuration
{
	using System;
	using System.Text;
 
	#region Class: NumberRUExpressionConverter
 
	/// <summary>
	/// Number to string (russian) expression converter class.
	/// </summary>
	[ExpressionConverterAttribute("NumberRU")]
	public class NumberRUExpressionConverter : IExpressionConverter 
	{
 
		#region Methods: Public
 
		/// <summary>
		/// Converts number value.
		/// </summary>
		/// <param name="value">Number value.</param>
		/// <param name="arguments"> Additional arguments.</param>
		/// <returns>Converted number to string value.</returns>
		public string Evaluate(object value, string arguments = "") {
			decimal dec;
			if (!decimal.TryParse((string)value, out dec)) {
				return string.Empty;
			}
			switch (arguments) {
				case "Cent": 
					decimal cent = decimal.Floor(dec * 100) % 100;
					return cent.ToString("00");
				case "Decimal": 
					StringBuilder sb = new StringBuilder();
					NumberInWords.ConstractDblValueString((double)dec, ref sb);
					return sb.ToString();
				default: 
					return NumberInWords.ConvertAmountToMaleStr(Math.Truncate(dec));
				break;
			}
			return string.Empty;
		}
 
		#endregion
 
	}
 
	#endregion
 
}

Вторая намного больше и понравится любителям 1С.wink

Показать все комментарии