|
v7: Римские цифры | ☑ | ||
---|---|---|---|---|
0
Erhov_egor
07.11.12
✎
11:33
|
Пишу запрос,возможно ли как то в запросе преобразовать римские в арабские?
|
|||
1
ДенисЧ
07.11.12
✎
11:34
|
А зачем это делать в запросе?
|
|||
2
syktyk
07.11.12
✎
11:34
|
Будь мужиком - напиши функцию!
|
|||
3
Erhov_egor
07.11.12
✎
11:34
|
(1)Хотелось чтоб отчет работал быстрее
|
|||
4
Erhov_egor
07.11.12
✎
11:35
|
(2)Написал функцию дальше что?
|
|||
5
Erhov_egor
07.11.12
✎
11:37
|
Как совместить функцию и запрос тогда?
|
|||
6
Erhov_egor
07.11.12
✎
11:41
|
Никак не прокатит да?
|
|||
7
Erhov_egor
07.11.12
✎
11:42
|
аууууууууууууууууууу
|
|||
8
syktyk
07.11.12
✎
11:45
|
Чего хоть твой запрос должен делать? И что хочешь в результате получить? Тебе ведь могут посоветовать здесь такое...
|
|||
9
Wobland
07.11.12
✎
11:46
|
гугл говорит, что
eligere exprimitur(ТвоёЧисло sicut numerus) sicut romanus |
|||
10
andrewalexk
07.11.12
✎
11:47
|
:) ГарриПоттер.АрабикусРомус(ВашеЧисло)
|
|||
11
Erhov_egor
07.11.12
✎
11:48
|
(8)Мне надо сумму найти (римское число *количество)
|
|||
12
Erhov_egor
07.11.12
✎
11:48
|
(10)Ну это по любому прокатит
|
|||
13
Wobland
07.11.12
✎
11:50
|
(11) откуда такие изощрения у тебя в голове?
|
|||
14
syktyk
07.11.12
✎
11:51
|
(13)Мсье Erhov_egor знает толк в извращениях
|
|||
15
Erhov_egor
07.11.12
✎
11:52
|
(14)с детства начал
|
|||
16
Wobland
07.11.12
✎
11:53
|
кстати, почему б не попросить запрос сразу формировать нужный ТабДокумент? быстрее ж будет
|
|||
17
Базис
naïve
07.11.12
✎
11:54
|
Правильно, если 70-й счёт вести латынью и римскими цифрами - мало кто поймёт, где деньги.
|
|||
18
1Сергей
07.11.12
✎
11:55
|
Развод?
|
|||
19
Erhov_egor
07.11.12
✎
11:57
|
(16)Попросил сделал,но еще чтоб лишнее не делать хочу с цифрами римскими поработать в запросе а он не хочет гад
|
|||
20
Wobland
07.11.12
✎
11:58
|
(19) ТабДок в запросе сделал?
|
|||
21
Wobland
07.11.12
✎
11:59
|
>а он не хочет гад
он просто в школе не учился |
|||
22
Базис
naïve
07.11.12
✎
11:59
|
Двоичные попробуй.
|
|||
23
Erhov_egor
07.11.12
✎
12:00
|
(20)Да, а дальше что?
|
|||
24
dedmoroz777
07.11.12
✎
12:01
|
(0) если речь о типовых, то там в глобальнике есть Функция ПреобразоватьЧислоВАрабскуюНотацию(РимскоеЧисло)
|
|||
25
Erhov_egor
07.11.12
✎
12:01
|
(24)Дальше что?
|
|||
26
ЧеловекДуши
07.11.12
✎
12:01
|
Будь мужиком, пиши в Бинарном исчислении :)
|
|||
27
dedmoroz777
07.11.12
✎
12:02
|
(25) дальше вставляй её в запрос)
|
|||
28
ЧеловекДуши
07.11.12
✎
12:02
|
(25)Встречный вопрос: По твоему, Что такое Римское Число?
|
|||
29
ЧеловекДуши
07.11.12
✎
12:03
|
(27)Думаешь, там у него реальные римские цыфры и нет типо символа "Х" (не как Икс, а как буква Ха, из латиницы) :)
|
|||
30
Erhov_egor
07.11.12
✎
12:03
|
(27)Юморист
|
|||
31
Wobland
07.11.12
✎
12:04
|
(30) и он ещё нас обзывает!
|
|||
32
ЧеловекДуши
07.11.12
✎
12:05
|
(17)>> Правильно, если 70-й счёт вести латынью и римскими цифрами - мало кто поймёт, где деньги.
Если бы Налоговая смотрела в БД, то все бы так и шифровались :) Но им побоку, что и как в электронном виде, их будут интересовать бумажные копии из архивов с печатями ;) |
|||
33
dedmoroz777
07.11.12
✎
12:05
|
(30) ты хоть запрос покажи)
|
|||
34
GANR
07.11.12
✎
12:06
|
1. число в строку
2. строку - в массив символов 3. каждому символу в соответствие - римскую цифру 4. п.3 в строку |
|||
35
ЧеловекДуши
07.11.12
✎
12:08
|
(34)Бу га га... тут без функции не взлетит, тут нужен тупой пересчет римского бреда в 10-тичную и надеяться, что все символы написаны латиницей :)
|
|||
36
GANR
07.11.12
✎
12:11
|
(35) На платформе 8.x ещё можно запросом отделаться, хотя... Там же нет преобразования числа в строку - отстой (((.
|
|||
37
Erhov_egor
07.11.12
✎
12:18
|
|ОбрабатыватьДокументы Проведенные;
|Период с НачДата по КонДата; |ТТНМолоко = Документ.ТТНМолоко.ТекущийДокумент; |МестаХранения = Документ.ТТНМолоко.МестаХранения; |Контрагент = Документ.ТТНМолоко.Контрагент; |Населе = Документ.ТТНМолоко.Население; |Сорт = Документ.ТТНМолоко.Сорт; |КоличествоУчетное = Документ.ТТНМолоко.Количество; |Количество = Документ.ТТНМолоко.КоличествоПриход; |Жир = Документ.ТТНМолоко.Жирность; |Белок = Документ.ТТНМолоко.Белок; |СОМО = Документ.ТТНМолоко.СОМО; |Кислотность = Документ.ТТНМолоко.Кислотность; |ГруппаЧистоты = Документ.ТТНМолоко.ГруппаЧистоты; |Плотность = Документ.ТТНМолоко.Плотность; |Термоустойчивость = Документ.ТТНМолоко.Термоустойчивость; |Редуктаза = Документ.ТТНМолоко.Редуктаза; |СомКлетки = Документ.ТТНМолоко.СомКлетки; |Температура = Документ.ТТНМолоко.Температура; |Функция СумЖир = Сумма(Жир*Количество); |Функция СумБелок = Сумма(Белок*Количество); |Функция СумСОМО = Сумма(СОМО*Количество); |Функция СумПлотность = Сумма(Плотность*Количество); |Функция СумСомКлетки = Сумма(СомКлетки*Количество); |Функция СумСомТемпература = Сумма(Температура*Количество); |Функция СумГруппаЧистоты = Сумма(ПреобразоватьЧислоВАрабскуюНотацию(ГруппаЧистоты)*Количество); |Функция КолПФ = Сумма(Количество); |Функция КолиС = Сумма(КоличествоУчетное); |Функция КолПВ = Сумма(Количество) когда (Сорт = СортВ); |Функция КолПС = Сумма(Количество) когда (Сорт = СортС); |Функция КолП1 = Сумма(Количество) когда (Сорт = Сорт1); |Функция КолП2 = Сумма(Количество) когда (Сорт = Сорт2); |Функция КолПН = Сумма(Количество) когда ((Сорт<>СортВ)и(Сорт<>СортС)и(Сорт<>Сорт1)и(Сорт<>Сорт2)); |
|||
38
1Сергей
07.11.12
✎
12:20
|
(37) ГруппаЧистоты вообще какие значения может принимать? от I до IV?
|
|||
39
Erhov_egor
07.11.12
✎
12:20
|
(38)ага
|
|||
40
Erhov_egor
07.11.12
✎
12:21
|
Через когда можно как нить?
|
|||
41
dedmoroz777
07.11.12
✎
12:21
|
(37) ты уверен что ГруппуЧистоты нужно умножать на количество?
|
|||
42
1Сергей
07.11.12
✎
12:22
|
(40) нет. Либо через внешнюю функцию, либо считай после запроса при выводе
|
|||
43
Erhov_egor
07.11.12
✎
12:24
|
(41)уверен
|
|||
44
Erhov_egor
07.11.12
✎
12:24
|
Внешняя функция это как?
|
|||
45
1Сергей
07.11.12
✎
12:26
|
(44)
Функция ПреобразоватьЧислоВАрабскуюНотацию(ЧислоРимское) Экспорт ... |
|||
46
syktyk
07.11.12
✎
12:30
|
(45)А где ты в глобальнике такую функцию нашел?
|
|||
47
syktyk
07.11.12
✎
12:33
|
(46) к (24)
|
|||
48
Erhov_egor
07.11.12
✎
12:34
|
А почему через внешнюю то прокатит че то догнать не могу?
|
|||
49
ЧеловекДуши
07.11.12
✎
12:36
|
Казалось бы, а причем тут вообще 1С 7.7 ;)
|
|||
50
dedmoroz777
07.11.12
✎
12:38
|
(47) в типовой бухии
(48) не работает или что? |
|||
51
ЧеловекДуши
07.11.12
✎
12:38
|
(48)Потому, что будет медленно, но прокатит.
Функция может быть в глобальнике, а может и в модуле запроса. Это как хочешь. Функцию ты должен найти или написать сам. И вообще, какой это умник хранит числовое значение в абы каком представлении :) И если ты точно уверен в цифрах, то там можно и без пересчета все упростить через "Если <Условие цифры ХХ> Тогда" |
|||
52
dedmoroz777
07.11.12
✎
12:39
|
//*****************************************************************************
// ПреобразоватьЧислоВАрабскуюНотацию(РимскоеЧисло) // // Параметры // РимскоеЧисло - строка, число, записанное римскими цифрами // // Возвращаемое значение // число // // Описание // преобразует число, записанное римскими цифрами, в "обычное" число, // например: // ПреобразоватьЧислоВАрабскуюНотацию("ХVII") = 17 // Функция ПреобразоватьЧислоВАрабскуюНотацию(РимскоеЧисло) АрабскоеЧисло=0; c1 = "1";c5 = "У";c10 = "Х";c50 = "Л";c100 ="С";c500 = "М";c1000 = "Д"; РимскоеЧисло = СокрЛП(РимскоеЧисло); ЧислоСимволов = СтрДлина(РимскоеЧисло); Для Сч=1 По ЧислоСимволов Цикл Если Сред(РимскоеЧисло,Сч,1) = c1000 Тогда АрабскоеЧисло = АрабскоеЧисло+1000; ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c500 Тогда АрабскоеЧисло = АрабскоеЧисло+500; ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c100 Тогда Если (Сч < ЧислоСимволов) И ((Сред(РимскоеЧисло,Сч+1,1) = c500) ИЛИ (Сред(РимскоеЧисло,Сч+1,1) = c1000)) Тогда АрабскоеЧисло = АрабскоеЧисло-100; Иначе АрабскоеЧисло = АрабскоеЧисло+100; КонецЕсли; ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c50 Тогда АрабскоеЧисло = АрабскоеЧисло+50; ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c10 Тогда Если (Сч < ЧислоСимволов) И ((Сред(РимскоеЧисло,Сч+1,1) = c50) ИЛИ (Сред(РимскоеЧисло,Сч+1,1) = c100)) Тогда АрабскоеЧисло = АрабскоеЧисло-10; Иначе АрабскоеЧисло = АрабскоеЧисло+10; КонецЕсли; ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c5 Тогда АрабскоеЧисло = АрабскоеЧисло+5; ИначеЕсли Сред(РимскоеЧисло,Сч,1) = c1 Тогда Если (Сч < ЧислоСимволов) И ((Сред(РимскоеЧисло,Сч+1,1) = c5) ИЛИ (Сред(РимскоеЧисло,Сч+1,1) = c10)) Тогда АрабскоеЧисло = АрабскоеЧисло-1; Иначе АрабскоеЧисло = АрабскоеЧисло+1; КонецЕсли; КонецЕсли; КонецЦикла; Возврат АрабскоеЧисло; КонецФункции //ПреобразоватьЧислоВАрабскуюНотацию |
|||
53
Erhov_egor
07.11.12
✎
12:40
|
(52)Эта функция есть
|
|||
54
ЧеловекДуши
07.11.12
✎
12:41
|
(53)Уже одно есть, а как записаны сами Римские цифры?
В функции они написаны кирилицей, а у вас? |
|||
55
Erhov_egor
07.11.12
✎
12:42
|
(51)через если писать,то получится надо выгружать в тз а дальше выводить на печать
|
|||
56
dedmoroz777
07.11.12
✎
12:43
|
(53) добавь в неё СтрЗаменить(РимскоеЧисло, "1", "I")
|
|||
57
Erhov_egor
07.11.12
✎
12:45
|
(56)Это понятно, там когда возврат идет из функции пишет что невозможно присвоить значение группечистоты
|
|||
58
dedmoroz777
07.11.12
✎
12:50
|
(57) наоборот, кстати: СтрЗаменить(РимскоеЧисло, "I", "1")
|
|||
59
Erhov_egor
07.11.12
✎
13:09
|
все решено спасибо всем
|
|||
60
1Сергей
07.11.12
✎
13:14
|
(55)>>через если писать,то получится надо выгружать в тз а дальше выводить на печать
С чего это? |
|||
61
Erhov_egor
07.11.12
✎
13:24
|
(60)Ну если не поставишь в запросе,значит вывести сразу не получится,или я не так понял просто
|
|||
62
1Сергей
07.11.12
✎
13:26
|
(61) что значит вывести сразу? давно запросы можно сразу выводить на экран?
|
|||
63
Erhov_egor
07.11.12
✎
13:29
|
(62)ну группировка и вывести
|
|||
64
Wobland
07.11.12
✎
13:29
|
(62) как только консоль изобрели. я могу
|
|||
65
1Сергей
07.11.12
✎
13:30
|
(63) макет поправь и даже код менять не придётся
|
|||
66
Erhov_egor
07.11.12
✎
13:31
|
(65)там же накопление нужно мне по всем строкам документов, где группа чистоты * количество
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |