Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Можно ли запросом получить Артикул и строковую функцию СтрДлина(Артикул)?

Можно ли запросом получить Артикул и строковую функцию СтрДлина(Артикул)?
Я
   МимохожийОднако
 
08.01.13 - 14:49
Если сделать выборку, то можно получить строковой функцией СтрДлина(). Однако есть ли возможность получить список Артикулов и их строковую длину?
 
 
   МимохожийОднако
 
2 - 08.01.13 - 15:19
.
   PR
 
3 - 08.01.13 - 15:20
Нет
   palpetrovich
 
4 - 08.01.13 - 15:28
(3) чего это, заводи отдельный ревизит СтрДлинаАртикул зависимый от  Артикул - и вуаля :)
   МимохожийОднако
 
5 - 08.01.13 - 15:54
(4)"Вуаля" ...)) У клиентов в базе артикул является началом наименования и надо проверить соответствие начала наименования и артикула. Сделал в выборке.
   palpetrovich
 
6 - 08.01.13 - 16:30
(5) а ПОДОБНО не спасает? у Артикул-а длина-же переменная наверное
   МимохожийОднако
 
7 - 08.01.13 - 16:37
(6)Пробовал
ВЫБРАТЬ
   Номенклатура.Ссылка,
    Номенклатура.Наименование,
   Номенклатура.Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Наименование ПОДОБНО Номенклатура.Артикул
...
Даёт пустой список
..
ВЫБРАТЬ
   Номенклатура.Ссылка,
    Номенклатура.Наименование,
   Номенклатура.Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Наименование НЕ ПОДОБНО Номенклатура.Артикул
..
Даёт весь список товара
   palpetrovich
 
8 - 08.01.13 - 16:44
(7) а артикулы разной длины? ...както так напрашивется:
ГДЕ
Номенклатура.Артикул ПОДОБНО ВЫРАЗИТЬ(Номенклатура.Наименование КАК Строка (5))
   МимохожийОднако
 
9 - 08.01.13 - 17:06
Артикулы к сожалению разной длины от 5 до 25 символов с черточками и точками.
   МимохожийОднако
 
10 - 08.01.13 - 17:07
Честно говоря, мой пост скорее теоретический. В данному случае, рулит только выборка и обработка каждой строки.
 
 Рекламное место пустует
   hhhh
 
11 - 08.01.13 - 17:08
(7) как-то так
ВЫБОР КОГДА ПОДСТРОКА(Артикул,1,1) = Артикул ТОГДА 1
КОГДА ПОДСТРОКА(Артикул,1,2) = Артикул ТОГДА 2
КОГДА ПОДСТРОКА(Артикул,1,3) = Артикул ТОГДА 3
КОГДА ПОДСТРОКА(Артикул,1,4) = Артикул ТОГДА 4
КОГДА ПОДСТРОКА(Артикул,1,5) = Артикул ТОГДА 5
КОГДА ПОДСТРОКА(Артикул,1,6) = Артикул ТОГДА 6
КОГДА ПОДСТРОКА(Артикул,1,7) = Артикул ТОГДА 7
КОГДА ПОДСТРОКА(Артикул,1,8) = Артикул ТОГДА 8
КОГДА ПОДСТРОКА(Артикул,1,9) = Артикул ТОГДА 9
КОГДА ПОДСТРОКА(Артикул,1,10) = Артикул ТОГДА 10
КОНЕЦ КАК ДлинаАртикула
   palpetrovich
 
12 - 08.01.13 - 17:14
о, так работает кажись
ГДЕ
    НЕ Номенклатура.Артикул="" И
    Номенклатура.Наименование ПОДОБНО Номенклатура.Артикул+"%"
   Mafoni
 
13 - 08.01.13 - 17:19
(12) +100500
вот полный текст запроса 
у меня работает 

ВЫБРАТЬ
   Тест1.Код,
    Тест1.Наименование,
    ВЫБОР КОГДА Тест1.Наименование ПОДОБНО  Тест1.Код + "%" ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК Подобие
ИЗ
    Справочник.Тест1 КАК Тест1

в справочнике "Тест1" ввел три элемента вот такие - 
1. Код = 000000001 Наименование = 000000001 лабуда
2. Код = 000000002 Наименование = 000000002 - лабуда 2
3. Код = 000000003 Наименование = 000000002 - лабуда 3

результат запроса вот такой 
Код            Наименование            Подобие
000000001    000000001 лабуда    Да
000000002    000000002 - лабуда 2    Да
000000003    000000002 - лабуда 3    Нет
   Mafoni
 
14 - 08.01.13 - 17:19
(0) думаю эт то что требовалось !
   palpetrovich
 
15 - 08.01.13 - 17:21
(13) все с назаполненным Код-ом - будут в выборке, так что (12) всетаки получше  :)
   Mafoni
 
16 - 08.01.13 - 17:23
(15) спорить не буду - вы правы на все 100% но отборы то уж пущай ТС добавляет.
   МимохожийОднако
 
17 - 08.01.13 - 17:27
(12)Попробовал. У меня не работает. Результат как в (8). Появляется весь список номенклатуры.
(13)Мне кажется с кодом пример неудачный, т.к. там фиксированная строка.
(11)Пока не опробовал, но посмотрю.
   palpetrovich
 
18 - 08.01.13 - 17:30
(17) точно точно? у меня нижеследующее работает как надо
ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Наименование,
    Номенклатура.Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.Артикул="" И
    Номенклатура.Наименование ПОДОБНО Номенклатура.Артикул+"%"
   palpetrovich
 
19 - 08.01.13 - 17:30
+18 "+"%" - точно не забыл? :)
   hhhh
 
20 - 08.01.13 - 17:31
(14) не прокатит. Например, такое

код "1", наименование "11 лабуда"
   palpetrovich
 
21 - 08.01.13 - 17:35
(20) "11 лабуда" в (18) прокатывает :)
   Fragster
 
22 - 08.01.13 - 17:35
автор уже 100500 раз проверил бы в постобработке запроса. правда наверняка пропустил бы (20)
   Mafoni
 
23 - 08.01.13 - 17:38
(20) согласен
   Mafoni
 
24 - 08.01.13 - 17:39
(21) а у вас коллега какой результат получился
в моем случае код = 1 подобно наименование = "11 лабуда" ?
   palpetrovich
 
25 - 08.01.13 - 17:41
(24) попадает в результат. Только у меня Артикул = 1
   Mafoni
 
26 - 08.01.13 - 17:44
(0) ТС - а чего не используеш постобработку запроса ? в этом какие то трудности ? или принципиально хочется сделать запросом ?
   palpetrovich
 
27 - 08.01.13 - 17:52
короче, немоного тероии
"Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
• % (процент): последовательность, содержащая любое количество произвольных символов..." ну и т.д.

т.е. ГДЕ ПРОВЕРЯЕМОЕ ПОДОБНО ШАБЛОН+"%"
ИСТИНА при, кпримеру, ПРОВЕРЯЕМОЕ = "Впкплплдоуд" и ШАБЛОН = "Впкп"  и т.д.
   Mafoni
 
28 - 08.01.13 - 17:53
(27) да не старайсы ты так - ТС - то слился уже поди!
   palpetrovich
 
29 - 08.01.13 - 17:54
(28) ну и ладненько, мне тоже пора :)
   МимохожийОднако
 
30 - 08.01.13 - 17:59
(19)Код скопировал один в один
(22)Постообработка - это фактически обыкновенная выборка.
(28) не надо нервничать )) Я здесь. Немножко работаю, немножко на форум смотрю.
Твой код еще не проверил.
   МимохожийОднако
 
31 - 08.01.13 - 18:00
(22) Уточню. Делать обработку после получения результатов запроса то же самое, что просто запустить выборку по справочнику. Этот вариант я уже сделал в самом начале еще до того как открыл ветку.
   Mafoni
 
32 - 08.01.13 - 18:04
(30) да я спокоен как удав. :) 
проверь - интересно что у тя получится ! :)
   МимохожийОднако
 
33 - 08.01.13 - 18:35
ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Наименование,
    Номенклатура.Артикул,
    ВЫБОР
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 1) = Номенклатура.Артикул
            ТОГДА 1
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 2) = Номенклатура.Артикул
            ТОГДА 2
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 3) = Номенклатура.Артикул
            ТОГДА 3
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 4) = Номенклатура.Артикул
            ТОГДА 4
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 5) = Номенклатура.Артикул
            ТОГДА 5
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 6) = Номенклатура.Артикул
            ТОГДА 6
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 7) = Номенклатура.Артикул
            ТОГДА 7
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 8) = Номенклатура.Артикул
            ТОГДА 8
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 9) = Номенклатура.Артикул
            ТОГДА 9
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 10) = Номенклатура.Артикул
            ТОГДА 10
    КОНЕЦ КАК ДлинаАртикула
ПОМЕСТИТЬ Временная
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    НЕ Номенклатура.Артикул = ""

СГРУППИРОВАТЬ ПО
    ВЫБОР
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 1) = Номенклатура.Артикул
            ТОГДА 1
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 2) = Номенклатура.Артикул
            ТОГДА 2
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 3) = Номенклатура.Артикул
            ТОГДА 3
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 4) = Номенклатура.Артикул
            ТОГДА 4
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 5) = Номенклатура.Артикул
            ТОГДА 5
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 6) = Номенклатура.Артикул
            ТОГДА 6
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 7) = Номенклатура.Артикул
            ТОГДА 7
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 8) = Номенклатура.Артикул
            ТОГДА 8
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 9) = Номенклатура.Артикул
            ТОГДА 9
        КОГДА ПОДСТРОКА(Номенклатура.Артикул, 1, 10) = Номенклатура.Артикул
            ТОГДА 10
    КОНЕЦ,
    Номенклатура.Ссылка,
    Номенклатура.Наименование,
    Номенклатура.Артикул
;

 ////////////////////////////////////////////////////////////////////////////////
 
ВЫБРАТЬ
   Временная.Ссылка,
    Временная.Наименование,
    ПОДСТРОКА(Временная.Артикул, 1, Временная.ДлинаАртикула) КАК АртикулПодстрокой,
    ПОДСТРОКА(Временная.Наименование, 1, Временная.ДлинаАртикула) КАК НачалоНаименования
ПОМЕСТИТЬ ВтораяВремянка
ИЗ
    Временная КАК Временная
;

 ////////////////////////////////////////////////////////////////////////////////
 
ВЫБРАТЬ
    ВтораяВремянка.Ссылка,
    ВтораяВремянка.Наименование,
    ВтораяВремянка.АртикулПодстрокой,
   ВтораяВремянка.НачалоНаименования
ИЗ
    ВтораяВремянка КАК ВтораяВремянка
ГДЕ
    НЕ ВтораяВремянка.АртикулПодстрокой ПОДОБНО ВтораяВремянка.НачалоНаименования
 
 
   МимохожийОднако
 
34 - 08.01.13 - 18:38
Остаётся придумать цикличную функцию по формированию текста запроса для произвольной длины сравниваемых реквизитов.))
   palpetrovich
 
35 - 09.01.13 - 13:16
(34) а че тут думать? просто все:
ТекстВЫБОР = \"ВЫБОР\"
 
Для Инд По ТекДлинаАртикула Цикл
   ТекстВЫБОР = ТекстВЫБОР + \" КОГДА ПОДСТРОКА(Номенклатура.Артикул,1,\"+Инд+\") = Номенклатура.Артикул ТОГДА \"+Инд;
КонецЦикла;
ТекстВЫБОР = ТекстВЫБОР + \" КОНЕЦ КАК ДлинаАртикула\";

а насчет (18) - мне даже интересно, почему у меня работает, а у тебя нет
http://4put.ru/pictures/max/501/1540226.jpg
   МимохожийОднако
 
36 - 09.01.13 - 20:23
(35) Работает вот такой запрос
ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Наименование,
    Номенклатура.Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Артикул <> ""
    И НЕ Номенклатура.Наименование ПОДОБНО Номенклатура.Артикул + "%"
   МимохожийОднако
 
37 - 09.01.13 - 20:24
а (18) не работает.
   МихаилМ
 
38 - 09.01.13 - 21:33
   palpetrovich
 
39 - 09.01.13 - 22:48
(36) (18) работает, выводит ИМЕННО совпадающие!
...короче, ворос формулировать надо поточне, что-бы не было недопонимания ;)


Список тем форума
Рекламное место пустует  Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует