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