Имя: Пароль:
1C
1C 7.7
v7: Тонны и килограммы прописью на украинском
,
0 sivsoft
 
04.06.14
12:47
Доброго времени суток!
Перерыл форум нашел несколько тем, но то в одной словарь не выкладывали, в другой чего-то не работает.
Попробовал сделать свой speller
{"Speller",
{"Money",
{"Тонна","Тонни","Тонн","кг","кг","кг","F"}},
{"Numbers",
{"Одна","Дві","Три","Чотири","П'ять","Шість","Сім","Вісім","Дев'ять","Одна","Дві",
"Десять","Одинадцять","Дванадцять","Тринадцять","Чотирнадцять","П'ятнадцять","Шістнадцять","Сімнадцять","Вісімнадцять","Дев'ятнадцять",
"Двадцять","Тридцять","Сорок","П'ятдесят","Шістдесят","Сімдесят","Вісімдесят","Дев'яносто",
"Сто","Двісті","Триста","Чотириста","П'ятсот","Шістсот","Сімсот","Вісімсот","Дев'ятсот",
"Тисяча","Тисячі","Тисяч",
"Мільйон","Мільйона","Мільйонів",
"Мільярд","Мільярда","Мільярдів",
"Трильйон","Трильйона","Трильйонів",
"Нуль"}}
}

Функция глВесПрописью(Сумма) Экспорт
Перем Валюта;
КоличествоТонн = Цел(Сумма);
КоличествоКг = Цел((Сумма - КоличествоТонн)*1000);
ИмяФайлаПрописиТонны = "tonnukr.spl";
//ИмяФайлаПрописиКг = "kilo.spl";

Если ФС.СуществуетФайл(КаталогИБ()+ИмяФайлаПрописиТонны) = 0 Тогда
    Предупреждение("Не найден файл прописи для тонн " + ИмяФайлаПрописиТонны);
    Возврат "";
Иначе
    Пропись(КаталогИБ()+ИмяФайлаПрописиТонны);
КонецЕсли;
СтрокаСуммы = СтрЗаменить(Формат(КоличествоТонн, "ЧПДС")," 00","");
СтрокаСуммы = СтрокаСуммы + " " + КоличествоКг + "кг";
Пропись("");
Возврат СтрокаСуммы;
КонецФункции // глВесВТоннахПрописью()

В итоге выдает какой-то бред вида:
Двадцать кг рублей 0кг
Причем Двадцать откуда берет? В словаря то стоит Двадцять на украинском. Люди помогите, плиз, разобраться.
1 Яйца 1С
 
04.06.14
12:49
(0) Вы уж определитесь: на русском или на американском?
2 sivsoft
 
04.06.14
13:06
(1) на украинском, написал же
а что не так?
3 Duke1C
 
04.06.14
13:09
попробуй "ЧП" вместо "ЧПДС"
4 osa1C
 
04.06.14
13:15
КоличествоТонн = Цел(Сумма);
где замена 20 тонн на его значение в словаре?
5 osa1C
 
04.06.14
13:23
СтрокаСуммы = СтрЗаменить(Формат(КоличествоТонн, "ЧПДС")," 00","");
эта строка вообще даёт ДвацАть прописью, потом ищет в этой строке " 00", и пытается заменить на "" ... само собой не находит и возвращает ДвацАть
6 sivsoft
 
04.06.14
13:40
(5) А как правильно сделать тогда?
7 sivsoft
 
04.06.14
13:42
Я выдрал этот код на одной из веток здесь. Как работают эти прописи не пойму. Точнее я понимаю как стандартно сделать пропись, а вот когда свой файлик(еще и не уверен правильный ли он), то тут вообще плаваю.
8 sivsoft
 
04.06.14
13:43
(5)
Пропись(Файл)
вроде же устанавливает мой файлик в качестве шаблона. Или не?
9 z80a
 
04.06.14
13:44
СтрЗаменить(Сумма, "и", "i") и т.д.
10 osa1C
 
04.06.14
13:50
(7) Попробуй для начала точку останова поставить на строке
Пропись(КаталогИБ()+ИмяФайлаПрописиТонны);
и посмотри приходит туда программа или нет
..потом похоже должно быть так:
Пропись(КаталогИБ()+ "/" + ИмяФайлаПрописиТонны);
11 osa1C
 
04.06.14
13:51
* только "\" вот такой слэш
12 sivsoft
 
04.06.14
13:54
(10) не слешь там не нужен и так в пути есть
и да, пропись выполняется
13 sivsoft
 
04.06.14
14:07
Люди, ну наверняка есть рабочие варианты. Запостите, плиз, сюда спеллер и функцию. Наверняка, многих будет полезно.
14 osa1C
 
04.06.14
14:28
(13) терзают смутные сомнения что  
Типы прописей соответвуют секциям файла SPL:

Money
Numbers
Date
DateRange
WeekDay

http://pro1c7.ru/07/07-07/spelling/

{"Тонна","Тонни","Тонн","кг","кг","кг","F"}},
вот этого не вижу, тебе надо секцию Numbers ввести, а тонны и килограммы уже потом доставлять (т., кг.)
15 sivsoft
 
04.06.14
14:33
Сделал так SPL-файл

{"Speller",
{"Numbers",
{"Тонна","Тонни","Тонн","F"}},
{"Numbers",
{"Одна","Дві","Три","Чотири","П'ять","Шість","Сім","Вісім","Дев'ять","Одна","Дві",
"Десять","Одинадцять","Дванадцять","Тринадцять","Чотирнадцять","П'ятнадцять","Шістнадцять","Сімнадцять","Вісімнадцять","Дев'ятнадцять",
"Двадцять","Тридцять","Сорок","П'ятдесят","Шістдесят","Сімдесят","Вісімдесят","Дев'яносто",
"Сто","Двісті","Триста","Чотириста","П'ятсот","Шістсот","Сімсот","Вісімсот","Дев'ятсот",
"Тисяча","Тисячі","Тисяч",
"Мільйон","Мільйона","Мільйонів",
"Мільярд","Мільярда","Мільярдів",
"Трильйон","Трильйона","Трильйонів",
"Нуль"}}
}


И вот так функцию:
Функция глВесПрописью(Сумма) Экспорт
Перем Валюта;
КоличествоТонн = Цел(Сумма);
КоличествоКг = Цел((Сумма - КоличествоТонн)*1000);
ИмяФайлаПрописиТонны = "tonnukr.spl";
//ИмяФайлаПрописиКг = "kilo.spl";

Если ФС.СуществуетФайл(КаталогИБ()+ИмяФайлаПрописиТонны) = 0 Тогда
    Предупреждение("Не найден файл прописи для тонн " + ИмяФайлаПрописиТонны);
    Возврат "";
Иначе
    Пропись(КаталогИБ()+ИмяФайлаПрописиТонны);
КонецЕсли;
СтрокаСуммы = СтрЗаменить(Формат(КоличествоТонн, "ЧП")," 00","");
СтрокаСуммы = СтрокаСуммы + " " + КоличествоКг + "кг";
Пропись("");
Возврат СтрокаСуммы;
КонецФункции // глВесВТоннахПрописью()

Выдает на 48 тоннах:
Сорок восемь 0кг
Где тонны, и почему на русском? В спелере же на украинском.
16 osa1C
 
04.06.14
14:42
(15) вообще секция должна заканчиваться либо "M" мужской, либо "F" женский род. Я так понимаю, что секция Numbers у тебя в первом случае просто игнорировалась и заменялась по умолчанию, а во втором случае ДВЕ секции Numbers, поэтому берётся за основу вторая, и игнорируюется по той же причине
17 sivsoft
 
04.06.14
15:07
(16) Чего-то совсем запустался. Как правильно тогда написать?
18 an-korot
 
04.06.14
15:25
(17) да найди ты русский файл да перепиши его, что ты мучаешься, сам выдумываешь ;)
19 sivsoft
 
04.06.14
15:29
(18) дык ДАЙТЕ ПРАВИЛЬНЫЙ ФАЙЛ С ТОННАМИ :)
20 sivsoft
 
04.06.14
15:53
(18) нет у меня русского файла с тоннами, а только гривни, рубли, евро. Так и попытался заменить. Но оно работает неправильно.
21 vova4321
 
04.06.14
16:49
Прочти это
Масса брутто прописью в ТОРГ-12. Возможно ли это?
Масса прописью

И возьми то что понравится (без СПЛ)