|
Как удалить часть наименования элемента справочника в запросе? | ☑ | ||
---|---|---|---|---|
0
Dotoshin
06.02.18
✎
16:17
|
Коллеги, подскажите пожалуйста, может есть какое-то простое решение этого вопроса?
Понимаю, что тема истоптанная вдоль и поперек, понимаю, что все это должно делаться при обработке результатов запроса, но уж больно не хочется лезть по локоть в чужой код и там исправлять. Есть один отчет (древний как г@в№0 мамонта), написанный врукопашную без применения СКД и прочих построителей. Вот в нем запрос тянет наименование из справочника, а в этом наименовании в скобочках написано что-то типа комментария, который нужен для удобства пользователей, но нафих не нужен при печати. Может есть какой-то хитрый ход с помощью которого можно прямо запросом вырезать лишнюю часть из наименования или все же придется "грызть кактус"? |
|||
1
Быдло замкадное
06.02.18
✎
16:21
|
можно добавить реквизит Наименование для печати, его программно в подписке заполнять обрезанным и в отчете выводить.
Но это извращенство похуже лезть по локоть в чужой код. |
|||
2
Dotoshin
06.02.18
✎
16:26
|
(1) Мысль конечно интересная, но огород на пустом месте тоже неохота городить...
|
|||
3
Вафель
06.02.18
✎
16:28
|
можно функцию добавить, но возможно все будет тормозить
|
|||
4
drcrasher
06.02.18
✎
16:34
|
(0) в запросе обрезать можно только по длине. у тебя ж программно формируется печатная форма? вот при заполнении параметров и обрезай
|
|||
5
Dotoshin
06.02.18
✎
16:44
|
(4) >>в запросе обрезать можно только по длине.
Ну собсно в этом и есть засада, знал бы с какой позиции начать обрезку, проблем бы не было... Да, наверно придется программно обрезать. |
|||
6
Sapiens_bru
06.02.18
✎
20:48
|
(0) Чисто теоретический интерес может представлять подобное решение:
ВЫБРАТЬ 0 КАК Поле ПОМЕСТИТЬ Цифры ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 ; ВЫБРАТЬ ПЕРВЫЕ 100 Числа1.Поле + 10 * Числа2.Поле КАК ПОЛЕ ПОМЕСТИТЬ втСотня ИЗ Цифры КАК Числа1,Цифры КАК Числа2 УПОРЯДОЧИТЬ ПО ПОЛЕ ; ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка, МИНИМУМ(втСотня.ПОЛЕ) КАК Номер ПОМЕСТИТЬ НомераСкобок ИЗ Справочник.Номенклатура КАК Номенклатура, втСотня КАК втСотня ГДЕ ПОДСТРОКА(Номенклатура.Наименование, втСотня.ПОЛЕ, 1) = "(" СГРУППИРОВАТЬ ПО Номенклатура.Ссылка ; ВЫБРАТЬ ВЫБОР КОГДА ЕСТЬNULL(НомераСкобок.Номер, 0) = 0 ТОГДА Номенклатура.Наименование ИНАЧЕ ПОДСТРОКА(Номенклатура.Наименование, 1, НомераСкобок.Номер-1) КОНЕЦ КАК Наименование ИЗ Справочник.Номенклатура КАК Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ НомераСкобок КАК НомераСкобок ПО Номенклатура.Ссылка = НомераСкобок.Ссылка |
|||
7
Sapiens_bru
06.02.18
✎
20:55
|
+(6)
Предложенный вариант делает именно то что просили, вырезает из строки первую скобку и всё что за ней. Но если я такой код увижу в реальной базе, первым кину камень в кодера. Хотя бы из-за резкой просадке в производительности при выполнении этого монстра. По сути что происходит в запросе: Первая ВТ состоит тупо из 10 цифр по порядку. Вторая ВТ получается перемножением двух первых на себя. Так происходит, если не указана связь между таблицами. Результат - сто упорядоченных чисел. Чтобы получить тысячу - нужно перемножить три первые таблицы Третья ВТ перемножает вторую и справочник номенклатуры, нарезая по 1 символу и сразу отбирает те строки, где содержится искомая скобка, причём только первая из них. за это отвечает функция МИНМУМ Ну и собственно сам запрос склеивает полученную таблицу номеров скобок со справочником номенклатуры. Код рабочий, собран консолью |
|||
8
catena
07.02.18
✎
05:26
|
(6)Что-то подобное ради интереса городила(обработка строк напрямую в запросе) и в итоге получился запроса, гарантированно роняющий серверную базу)) Так что осторожнее.
+++(1), часто в справочниках бывает "Наименование" и "Полное наименование", вот их и надо задействовать. Лучше день потерять, потом за пять минут долететь. |
|||
9
VladZ
07.02.18
✎
06:00
|
(0) " а в этом наименовании в скобочках написано что-то типа комментария, который нужен для удобства пользователей, но нафих не нужен при печати. " - разделяйте реквизиты для печати и для пользователя. См. (8).
"Может есть какой-то хитрый ход с помощью которого можно прямо запросом вырезать лишнюю часть из наименования" - нет никакого хитрого хода. Все просто: есть данные - выводишь их. Нужны данные в другом виде: хранишь в нужном виде и выводишь их там где нужно. |
|||
10
Dotoshin
07.02.18
✎
08:32
|
(8) (9) Спасибо, понял. Так и сделаю, это самый универсальный путь.
|
|||
11
lodger
07.02.18
✎
10:30
|
(10) потом, когда вынесешь лишнее из печатного наименования, можно покурить ОбработкаПолученияПредставления() и выбирать куда какие наименования показывать. в списках\выборах одно - в отчетах другое.
|
|||
12
Timon1405
07.02.18
✎
10:50
|
(11) Есть один отчет (древний как г@в№0 мамонта) не коррелирует с ОбработкаПолученияПредставления()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |