Число прописью (текстом) в 1С

Просмотров:
Число прописью (текстом) в 1С

Друзья, приветствую Вас в очередной статье на моем блоге.

Иногда бывают ситуации, когда просто необходимо написать в документе какое-то число прописью, т.е. текстом.

Сегодня мы попробуем рассмотреть интересную функцию 1С ЧислоПрописью().

Она, как правило, обычно применяется в товарных накладных, и в других бухгалтерских документах.

Но, если фантазия работает как надо, можно применять ее и в собственных обработках и документах.

Итак… Поехали!

Процедура ЧислоАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
 
	//ЧислоПрописью(Число,ФорматнаяСтрока,ПараметрыПредметаИсчисления)
	//Если не использовать форматную строку и параметры предмета исчисления, а просто указать число,
	//то получим следующее: 
	Число = 123.45;
	ЧислоТекстом = ЧислоПрописью(Число);
	//Результат: "Сто двадцать три  45 "
 
		//ФорматнаяСтрока - тут можно указать следующие параметры форматирования:
 
			//Л - Локализация, код языка, для нас самое актуальное ru_RU (Можно использовать
			//и en_US, что бы все писалось на английском и даже kk_KZ для казахского)
 
		ФорматнаяСтрока = "Л = ru_RU"; //Русская раскладка	
		Число = 123.45;
		ЧислоТекстом = ЧислоПрописью(Число,ФорматнаяСтрока);
		//Результат: "Сто двадцать три  45 "		
 
 
		ФорматнаяСтрока = "Л = en_US"; //Английская раскладка	
		Число = 123.45;
		ЧислоТекстом = ЧислоПрописью(Число,ФорматнаяСтрока);
		//Результат: "One hundred twenty three  45 "		
 
 
			//ДП - Дробная Прописью. Отвечает за то, будет ли переводиться часть числа после
			//запятой в текст или нет.
			//По умолчанию принимает значение ЛОЖЬ
 
		ФорматнаяСтрока = "Л = ru_RU; ДП = ИСТИНА"; //Русская раскладка, дробная часть прописью
		Число = 123.45;
		ЧислоТекстом = ЧислоПрописью(Число,ФорматнаяСтрока);
		//Результат: "Сто двадцать три  сорок пять "
 
 
			//НП - Название Предмета. Отвечает за написание названия предмета исчисления, 
			//т.е слов "рублей", "копеек" и тд.
			//По умолчанию принимает значение Истина
 
		ФорматнаяСтрока = "Л = ru_RU; ДП = ИСТИНА; НП=ИСТИНА"; 
		//Русская раскладка, дробная часть прописью, показывать название предмета/валюты.	
		Число = 123.45;
		Параметры = "рубль,рубля,рублей,м,копейка,копейки,копеек,ж";
		ЧислоТекстом = ЧислоПрописью(Число,ФорматнаяСтрока,Параметры); 
		//Более подробно про третий параметр ниже.
		//Результат: "Сто двадцать три рубля сорок пять копеек"
 
		    //НД - Название Десятичных. Отвечает за написание названия числа после запятой,
			//т.е. будет ли отображаться слово "копейка"
			//По умолчанию принимает значение Истина
 
		ФорматнаяСтрока = "Л = ru_RU; ДП = ИСТИНА; НП=ИСТИНА"; 
		//Русская раскладка, дробная часть прописью, показывать название предмета/валюты.	
		Число = 123.45;
		Параметры = "рубль,рубля,рублей,м,копейка,копейки,копеек,ж";
		ЧислоТекстом = ЧислоПрописью(Число,ФорматнаяСтрока,Параметры); 
		//Более подробно про третий параметр ниже.
		//Результат: "Сто двадцать три рубля сорок пять копеек"
 
		    //ИИ - Использовать "И". Применяется для английской раскладки, для общего развития 
			//разберем как это работает.
		    //По умолчанию принимает значение НеИспользовать
 
		ФорматнаяСтрока = "Л = en_US; ДП = ИСТИНА; НП=ИСТИНА; ИИ=Использовать"; 
		//Английская раскладка, дробная часть прописью, показывать название предмета/валюты, 
		//использовать "И" ("and").	
		Число = 123.45;
		Параметры = "dollar,dollars,cent,cents,2";
		ЧислоТекстом = ЧислоПрописью(Число,ФорматнаяСтрока,Параметры);
		//Результат: "One hundred and twenty three dollars forty five cents"
 
		//ПараметрыПредмета - тут описываем программе, что мы хотим перевести в текст. 
		//Это могут быть не только валюты, но и любые единицы измерения, предметы и тд.
		//Для разных языков имеет разные настройки, мы рассмотрим Русский и Английский варианты.
 
		//Русский вариант:
			//Первый параметр - "рубль" - название целой части исчисления в 
			//единственном числе и в иминительном падеже
			//Второй параметр - "рубля" - название целой части исчисления в 
			//единственном числе и в родительном падеже
			//Третий параметр - "рублей" - название целой части исчисления во 
			//множественном числе и в родительном падеже
			//Четвертый параметр - "м" - указывает на род целой части исчисления, 
			//в нашем случае "рубль" - мужской = м (может быть средний = с и женский = ж)
			//Пятый параметр - "копейка" - название дробной части исчисления в 
			//единственном числе и в иминительном падеже
			//Шестой параметр - "копейки" - название дробной части исчисления в 
			//единственном числе и в родительном падеже
			//Седьмой параметр - "копеек" - название дробной части исчисления во 
			//множественном числе и в родительном падеже
			//Восьмой параметр - "ж" - указывает на род дробной части исчисления, 
			//в нашем случае "копейка" - женский = ж (может быть средний = с и мужской = м)
			//Девятый параметр - "2" - отвечает за количество разрядов после запятой.
 
		//Английский вариант:
			//Первый параметр - "dollar" - название целой части исчисления в 
			//единственном числе.
			//Второй параметр - "dollars" - название целой части исчисления во 
			//множественном числе.
			//Третий параметр - "cent" - название дробной части исчисления в 
			//единственном числе.
			//Четвертый параметр - "cents" - название дробной части исчисления во 
			//множественном числе.
			//Пятый параметр - "2" - отвечает за количество разрядов после запятой.
 
 
		//К примеру мы хотим посчитать и вывести текстом сколько сталеваров работает 
		//на заводе "Сталь и рюшечки"
		СталеваровВПервомЦехе = 15;
		СталеваровВоВторомЦехе = 13;
		СталеваровНаВторомЭтаже = 28;
 
		//Используем русский язык, название исчисления - ИСТИНА 
		ФорматнаяСтрока = "Л = ru_RU; НП=ИСТИНА"; 
 
		//В данном случае нам не нужно, что бы показывалась дробная часть, 
		//используем конструкцию:
		Параметры = "сталевар,сталевара,сталеваров,м,,,,,0";
	    //Посчитаем сколько у нас всего сталеваров
		ОбщееЧислоСталеваров = СталеваровВПервомЦехе + СталеваровВоВторомЦехе 
                + СталеваровНаВторомЭтаже;
		//И выводим полученное число
		ЧислоТекстом = ЧислоПрописью(ОбщееЧислоСталеваров,ФорматнаяСтрока,Параметры); 
		//Результат: "Пятьдесят шесть сталеваров"			
 
КонецПроцедуры;

Вот таким стандартным методом 1С можно преобразовывать числа в текст, ну или написать число прописью в 1С, кому как больше нравится, с названием исчисления в различных вариациях.

Надеюсь, эта статья хоть немного помогла вам разобраться в с этим хитрым механизмом 1С.

Администратор

2 комментария к “Число прописью (текстом) в 1С

  1. А есть функция обратная, т.е. из суммы прописью сделать сумму цифрами? Встретилась задача при обработке пдф-файлов.

    1. Честно, стандартную функцию такую не встречал… Только если пробовать как то самостоятельно придумывать…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *