| 
    
        
     
     | 
    
  | 
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)там же накопление нужно мне по всем строкам документов, где группа чистоты * количество     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |