- 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С), мешает носителям замечательного языка (русского) всецело погрузится.
Эээ... а функции Строка(), Формат() и Число() что тогда делают?
Вот эта ужасная конструкция как раз и служит для такого преобразования в запросе. Выглядит ужасно, но работает.
Практическая необходимость порой возникает, но лично я обычно иду другим путем - преобразования вне запросов, так читабельность итогового запроса намного выше.
Мда, весело у вас там ;)
Это ещё не все веселые моменты ;)