Строковые фунции в запросе

1. chmv 03.08.16 16:29 Сейчас в теме
Как в запросе разделить поля
Типа марина;173311;
На два поля Марина 173311
Очень не хочется писать отчет
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. herfis 499 03.08.16 16:56 Сейчас в теме
(1) chmv, В запросе, если заложиться на два поля и максимальный размер поля, то можно написать выражение, перебирающее все варианты местонахождения разделителя. Но я такие извращения не признаю.
В СКД - можно задействовать фукнции общих модулей.
А в нормальной архитектуре - в базу должна записываться уже разложенная по полочкам информация.
aka Любитель XML; klinval; alex-l19041; +3 Ответить
6. vovan_victory 63 03.08.16 16:56 Сейчас в теме
(1) chmv, (1) chmv, текст запроса перенести в макет обработки(тип макета СКД). Там можно через вычисляемые поля -- выражение--
СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)  
8. herfis 499 03.08.16 17:01 Сейчас в теме
(6) vovan_victory, Воу, воу! Помедленнее и поподробнее!
Что это еще за "макет обработки", который является "типом макета СКД"? А если речь о вычисляемых полях схемы, то с каких пор там можно использовать что-то, кроме языка выражений СКД?
10. bmk74 234 03.08.16 17:05 Сейчас в теме
(8) herfis, Всегда можно было и функции общих модулей тоже можно, кстати как вариант
11. herfis 499 03.08.16 17:06 Сейчас в теме
(10) bmk74, Про функции общих модулей - да, можно. Я это уже предлагал даже (но эту возможность надо специально активировать). А вот чтобы любые функции языка там можно было напрямую вызывать - первый раз слышу. Если это так, то я буду как та девочка из анекдота - "А шо - можно было???"
12. bmk74 234 03.08.16 17:08 Сейчас в теме
(11) herfis, Не все, но например текущаяДата() там точно работает на последних релизах
13. herfis 499 03.08.16 17:19 Сейчас в теме
(12) bmk74, Офигеть! И что, весь набор строковых функций языка - тоже? Включая СтрРазделить()? А на последних релизах - это с какого? А в документации про это где-то можно почитать?
15. bmk74 234 03.08.16 17:24 Сейчас в теме
(13) herfis, (14) klinval, Я сам был удивлен этим, на работе коллега просто попробовал и у него заработало, хотя я ему тоже говорил что типа не будет работать...
С какой версии они это включили не могу сказать так как пробовали на этой "8.3.8.1784"
14. klinval 338 03.08.16 17:21 Сейчас в теме
(12) bmk74, я удивлён... Проверил - и правда работает (ТекущаяДата(), СтрНайти, СтрРАзделить)! А когда это заработало? Может все методы глобального контекста доступны?
34. vovan_victory 63 03.08.16 21:05 Сейчас в теме
(8) herfis,
Помедленнее и поподробнее!

Пожалуйста...
Создаем макет, и обрабатываем кодом
Прикрепленные файлы:
35. herfis 499 04.08.16 10:03 Сейчас в теме
(34) vovan_victory, Понятно. Непонятно только, почему вы решили что задача решается в контексте обработки. А так - да. Макет для схемы СКД куда угодно воткнуть можно. А можно и вообще без макета.
36. vovan_victory 63 04.08.16 10:19 Сейчас в теме
(35) herfis, из поста автора
Очень не хочется писать отчет

Если не хочется писать отчет и уже есть какой то код, то как еще можно реализовать доработку?
Но это не так важно, что это, отчет или обработка.
7. Boneman 298 03.08.16 16:56 Сейчас в теме
(1) chmv, можно, но мучительно больно и выглядит это, мягко говоря, нечитабельно.

Курите статьи Ильдаровича, по обрезке строк в запросе.
Смысл в посимвольной разбивке строки, и набивке новой строки до нужного символа.
9. bmk74 234 03.08.16 17:02 Сейчас в теме
(1) chmv,
Только через кучу КОГДА ТОГДА ТИПА ВЫБОР КОГДА ПОДСТРОКА(ИмяПоля,1,1) = ";" ТОГДА
1
КОГДА КОГДА ПОДСТРОКА(ИмяПоля,2,1) = ";" ТОГДА
2
... КАК РАЗДЕЛИТЕЛЬ

Потом ВТ
И уже потом
ПОДСТРОКА(ИмяПоля,1,РАЗДЕЛИТЕЛЬ-1) КАК Первое,
ПОДСТРОКА(ИмяПоля,РАЗДЕЛИТЕЛЬ+1) КАК Второе

Хотя я не уверен что так Функция Сможет съесть РАЗДЕЛИТЕЛЬ, не пробовал
2. aka Любитель XML 03.08.16 16:41 Сейчас в теме
пример:
   ВЫБОР
           КОГДА ПОДСТРОКА(СотрудникиОрганизаций.Состояние, 1, 6) = "Уволен"
               ТОГДА "Уволен"
           КОГДА ПОДСТРОКА(СотрудникиОрганизаций.Состояние, 1, 7) = "Штатный"
               ТОГДА "Работает"
       КОНЕЦ
3. herfis 499 03.08.16 16:46 Сейчас в теме
(2) aka Любитель XML, очевидно же, что речь о парсинге по разделителям, а не о полях фиксированной ширины.
4. aka Любитель XML 03.08.16 16:55 Сейчас в теме
(3) herfis, ну я предложил костыль, а дальше автор пусть сам думает - сможет он его прикрутить или нет, все зависит от возможной длины строки, которую парсить
16. herfis 499 03.08.16 17:25 Сейчас в теме
Так! Стоп! Мухи отдельно, котлеты - отдельно.
ТекущаяДата() таки есть в доке по языку выражений СКД в 8.3.8 - видать добавили.
А вот никаких СтрНайти и СтрРазделить я там не вижу! Недокументированная возможность, выходит?
23. bmk74 234 03.08.16 17:39 Сейчас в теме
(16) herfis, Во встроенной справке и ТекущаяДата() нету, скорее всего добавили но пока еще не задокументировали нормально, ну и навряд ли накроется...
29. herfis 499 03.08.16 17:46 Сейчас в теме
(23) bmk74, Да тоже думаю, что вряд ли накроется, но все равно опаска есть.
А с ТекущаяДата() - интересная ситуация. Во встроенной справке ее нет, а вот в руководстве разработчика она присутствует и в доке по 8.3.6 и в доке по 8.3.8
27. klinval 338 03.08.16 17:45 Сейчас в теме
(16) herfis, Где нашли про текущую дату в СКД? Я в справке ищу не могу найти, что на СКД они это добавили. Платформа 8.3.8.1652
Кстати СокрЛП не работает...
31. herfis 499 03.08.16 17:49 Сейчас в теме
(27) klinval, Оно, судя по всему, давно есть. Просто встроенную справку не обновили. В руководстве разработчика на ИТС ТекущаяДата() присутствует в языке выражений СКД.
33. klinval 338 03.08.16 17:57 Сейчас в теме
(31) herfis, действительно на ИТС "Главная Разработка и администрирование 1С:Предприятие 8.3.7. Документация" нашёл про ТекущаяДата() между РазностьДат и Подстрока (в справке между ними ничего нет).
Бывало, что опишут в справке, а оно не работает, а чтобы не описать, а оно работает - не было такого )))

(28) chmv,
Вопрос был вообще про 8.1
Тут другая тема уже поднялась...
17. herfis 499 03.08.16 17:27 Сейчас в теме
Если недокументированная - то нет никаких гарантий, что вся эта ляпота в очередном релизе не накроется торбой.
18. chmv 03.08.16 17:28 Сейчас в теме
Первые символы не фиксированной ширины. Не ПРОВЕРИТЬ
19. chmv 03.08.16 17:31 Сейчас в теме
в скд Я И ТАК ЗНАЮ, ВОПРОС ПРО КОНСОЛЬ ОТЧЕТОВ.
вЫШЛИ ИЗ ПОЛОЖЕНИЯ, СОХРАНЛИ В TXT А ПОТОМ ОТКРЫЛИ С ПОМОЩЬЮ EXCEL
20. chmv 03.08.16 17:33 Сейчас в теме
21. PetroP 03.08.16 17:35 Сейчас в теме
Блестяще!
p.s.: Именно по-этому я молчу и жую поп-корн...
22. chmv 03.08.16 17:37 Сейчас в теме
Не хотелось писать отчет
24. herfis 499 03.08.16 17:42 Сейчас в теме
На 8.3.6 интересные результаты.
ТекущаяДата() - работает, СтрНайти() - нет.
25. chmv 03.08.16 17:43 Сейчас в теме
Так что теперь в СКД можно использовать строковые функции
8.3.6 Нельзя было
26. chmv 03.08.16 17:44 Сейчас в теме
ТекущаяДата( не проверяла
СОКРЛП не работтал
28. chmv 03.08.16 17:46 Сейчас в теме
Вопрос был вообще про 8.1
30. chmv 03.08.16 17:47 Сейчас в теме
в 8.3.6 На СКД я дописывала общий модуль с функцией СОкРЛП. Смешно, но работает
32. herfis 499 03.08.16 17:52 Сейчас в теме
А вот если СтрНайти и СтрРазделить реально работает на 8.3.8 - то это открывает новые горизонты!
aka Любитель XML; +1 Ответить
40. klinval 338 05.08.16 11:38 Сейчас в теме
(32) herfis,
Там теперь не только СтрНайти и СтрРазделить работают, но и многие другие. Из полезных, например ЧислоПрописью. Написал по этой теме статью:
Использование методов глобального контекста в системе компоновки данных или недокументированные возможности СКД
37. chmv 04.08.16 10:30 Сейчас в теме
38. aka Любитель XML 04.08.16 11:25 Сейчас в теме
(37) chmv, к чему в итоге пришел? Писать отчет? ))
39. chmv 04.08.16 11:40 Сейчас в теме
Я уже писала. Сохранила в txt. А потом открыла в excel. Это была разовая задача, а так бы написала отчет.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот