- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 
                        Функция ТекстЗапросаИзСтрокиВЧисло(пИмяПоля, пДлинаСтроки, пСимволРазделителя=".")
    лТекст="ВЫБОР ";
    Для лДлинаЦелойЧасти=0 По пДлинаСтроки Цикл
        Если лДлинаЦелойЧасти=пДлинаСтроки Тогда 
            лТекст=лТекст+"ИНАЧЕ"+Символы.ПС;
        Иначе
            лТекст=лТекст+"КОГДА ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""+пСимволРазделителя+""" ИЛИ ПОДСТРОКА("+пИмяПоля+", "+(лДлинаЦелойЧасти+1)+", 1)="""" ТОГДА "+Символы.ПС;
        КонецЕсли; 
        Если лДлинаЦелойЧасти=0 Тогда лТекст=лТекст+"    0"+Символы.ПС; КонецЕсли; 
        Для лИнд=1 По лДлинаЦелойЧасти Цикл
           лТекст=лТекст+"    ВЫБОР "+Символы.ПС;
            Для лЦифра=0 По 9 Цикл
                лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
            КонецЦикла;
            лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "*"+Формат(Pow(10, лДлинаЦелойЧасти-лИнд), "ЧРД=.; ЧГ=0")+"+")+Символы.ПС;
        КонецЦикла;
        Для лИнд=лДлинаЦелойЧасти+2 По пДлинаСтроки Цикл
            лТекст=лТекст+"+ ВЫБОР";
            Для лЦифра=0 По 9 Цикл
                лТекст=лТекст+"    КОГДА ПОДСТРОКА("+пИмяПоля+", "+лИнд+", 1)="""+лЦифра+""" ТОГДА "+лЦифра+Символы.ПС;
            КонецЦикла;
            лТекст=лТекст+"    ИНАЧЕ 0 КОНЕЦ"+?(лИнд=лДлинаЦелойЧасти, "", "/"+Формат(Pow(10, лИнд-лДлинаЦелойЧасти-1), "ЧРД=.; ЧГ=0"))+Символы.ПС;
        КонецЦикла;
    КонецЦикла;
    лТекст=лТекст+"КОНЕЦ";
    Возврат лТекст;
КонецФункции
                                 
        
но особо поразил CamelStyle переменных
Обычный аналог скуельного CASE WHEN THEN ELSE END.
> К слову, в 1С есть достаточно развитые
Убогие "я-тыкаю-мышкой-смотрите-как-я-могу" средства, в которых многое можно сделать, но ничего интересного нельзя сделать легко.
> системы компоновки данных
Ололо, не все запросы сводятся к отчётикам. Как я уже рассказывал однажды прохладный сказ, на запросах делали поиск существующих документов, и он бы выглядел раза в два-три проще, понятнее и короче, если бы его генерировали по метаданным.
Нет, я не одобряю такой говномешанины, но иногда только хардкор.
guest
> Ты такой. Т.е. обычный одинесный дятел, и SQL если и видел, то только издалека.
Я общался однажды с одним дядькой, руководителем конторы шарашкины рога-копыта. Мы обсуждали разные вещи, в контексте баз данных и SQL, на его лице я прочитал удивление, после того, как заявил, что любой запрос можно быстрее (и эффективнее) написать руками, нежели построителем одноэса (благо местный язык запросов - унылое подмножество обычного).
Потом я ради интереса на работе занял комп с одноэсом и битый час пытался понять, как работает этот высер мышекликаньясовершенный артефакт инопланетного разума.
Если скд позволяет делать что-то, кроме отчётов, то это плюс.
Но это не исправит говняности конструктора.
Заценю как-нибудь в свободное время, попытаю коллег, авось где-нибудь можно будет найти вне отчётов.
Вообще, как когда-то говорил один мой знакомый редактор спортивных новостей: пока в русском тексте нету мата, он будет вызывать интуитивное отторжение у русскоязычного читателя. Я думаю, что отсутствие жизненной правды в этом замечательном языке (1С), мешает носителям замечательного языка (русского) всецело погрузится.
Эээ... а функции Строка(), Формат() и Число() что тогда делают?
Вот эта ужасная конструкция как раз и служит для такого преобразования в запросе. Выглядит ужасно, но работает.
Практическая необходимость порой возникает, но лично я обычно иду другим путем - преобразования вне запросов, так читабельность итогового запроса намного выше.
Мда, весело у вас там ;)
Это ещё не все веселые моменты ;)