Две функции печати: вес прописью "в тоннах", а "кг" числом и объем в кубах с округлением до четвертей и третей :-)
Делал для себя (основываясь на примере автора), но зато проще, и можно вызывать в формах ТТН или ТОРГ-12:
//******************************************************************************
Функция глВесВТоннахПрописьюКгЧислом(Сумма) Экспорт
КоличествоТонн = Цел(Сумма);
КоличествоКг = Цел((Сумма - КоличествоТонн)*1000);
Правило=СоздатьОбъект("СписокЗначений");
Правило.ДобавитьЗначение("тонна");
Правило.ДобавитьЗначение("тонны");
Правило.ДобавитьЗначение("тонн");
Правило.ДобавитьЗначение("");
Правило.ДобавитьЗначение("");
Правило.ДобавитьЗначение("");
Правило.ДобавитьЗначение("F"); //Женский род "F" (Мужской род "M")
СПЛ=СоздатьОбъект("СписокЗначений");
СПЛ.ДобавитьЗначение(Правило);
Пропись(СПЛ);
Стр=Формат(КоличествоТонн,"ЧПД");
Пропись("");
Если КоличествоКг<>0 Тогда
Стр=Стр+" "+Строка(КоличествоКг)+" кг";
КонецЕсли;
Возврат Стр;
КонецФункции
//******************************************************************************
Функция глОбъемВКубахПрописью(Сумма) Экспорт
КоличествоКубМ = Цел(Сумма);
КоличествоКубДоля = Сумма - КоличествоКубМ;
Если (КоличествоКубДоля>=0) И(КоличествоКубДоля<0.1458) Тогда
СтрД=""; //Ноль
СтрН="Ноль куб.метров";
ИначеЕсли (КоличествоКубДоля>=0.1458)И(КоличествоКубДоля<0.2917) Тогда
СтрД=" с четвертью";
СтрН="Четверть куб.метра";
ИначеЕсли (КоличествоКубДоля>=0.2917)И(КоличествоКубДоля<0.3542) Тогда
СтрД=" с третью";
СтрН="Треть куб.метра";
ИначеЕсли (КоличествоКубДоля>=0.3542)И(КоличествоКубДоля<0.6458) Тогда
СтрД=" с половиной";
СтрН="Половина куб.метра";
ИначеЕсли (КоличествоКубДоля>=0.6458)И(КоличествоКубДоля<0.7083) Тогда
СтрД=" с двумя третью";
СтрН="Две третих куб.метра";
ИначеЕсли (КоличествоКубДоля>=0.7083)И(КоличествоКубДоля<0.8542) Тогда
СтрД=" с тремя четвертями";
СтрН="Три четверти куб.метра";
ИначеЕсли (КоличествоКубДоля>=0.8542)И(КоличествоКубДоля<1) Тогда
СтрД=""; //Единица
СтрН="";
КоличествоКубМ = КоличествоКубМ + 1;
КонецЕсли;
Если КоличествоКубМ>0 Тогда
Правило=СоздатьОбъект("СписокЗначений");
Правило.ДобавитьЗначение("куб.метр");
Правило.ДобавитьЗначение("куб.метра");
Правило.ДобавитьЗначение("куб.метров");
Правило.ДобавитьЗначение("");
Правило.ДобавитьЗначение("");
Правило.ДобавитьЗначение("");
Правило.ДобавитьЗначение("M"); //Женский род "F" (Мужской род "M")
СПЛ=СоздатьОбъект("СписокЗначений");
СПЛ.ДобавитьЗначение(Правило);
Пропись(СПЛ);
Стр=Формат(КоличествоКубМ,"ЧПД");
Пропись("");
Поз = Найти(Стр,"куб.");
Если (СтрД<>"")И(Поз>1) Тогда
Стр = Сред(Стр,1,Поз-2)+СтрД+Сред(Стр,Поз-1,СтрДлина(Стр)-Поз+2);
КонецЕсли;
Иначе
Стр = СтрН;
КонецЕсли;
Возврат Стр;
КонецФункции
Показать