Имя: Пароль:
1C
1С v8
Как наложить отбор на код в номенклатуре?
0 bebibo
 
27.01.20
12:22
Здравствуйте!
Вопрос такой, хочу запросом вытащить ту номенклатуру, у которой код находится в конкретном промежутке.
Например мин: 0, макс: 90
То есть у меня должны выгрузится позиции номенклатуры, у которой  код от 0 до 90.
Делаю запрос:
ВЫБРАТЬ
    Номенклатура.Наименование КАК Наименование
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Код МЕЖДУ &Мин И &Макс
Ошибка: индекс находится за границами массива
Код у номенклатуры вот такой: 00-00000015
1 RomaH
 
naïve
27.01.20
12:26
а какое ТО?
2 Fish
 
27.01.20
12:28
(0) У тебя код - это строка.
3 ДенисЧ
 
27.01.20
12:31
у которой  код от 0 до 90

Код у номенклатуры вот такой: 00-00000015

Вы уж определитесь... Или крестик, или...
4 bebibo
 
27.01.20
12:39
(3) в чем моя неопределенность?
5 Sasha_H
 
27.01.20
12:39
(0) Код это строка. Но в СКД есть новые возможности НачинаетсяС или ЗаканчиваетсяНа и там можно шаблоны разные накладывать вот так можно ограничивать.
6 bebibo
 
27.01.20
12:39
(2) ну вот например я отброшу лидирующие нули, и дальше как быть? чтобы номенклатура выгрузилась только в заданном мною диапазоне?
7 Sasha_H
 
27.01.20
12:41
(4) неопределенность в несоответсвии постановки задачи. Вы ставите задачу от 0-90 (это число) хотя может быть и строка, но со строкой МЕЖДУ не применить никак. А в пример вставили 00-00000015 это что 0 или 90
8 Sasha_H
 
27.01.20
12:41
(6) Используйте СКД НЕ НачинаетсяС 00-00000 и будет отброс
9 bebibo
 
27.01.20
12:43
(7)  
Номенклатура с кодом 00-00000015 попадает в диапазон 0 или 90. (ну если отбросить нули и всё прочее, то 15 находится между 0 и 90).
Но вы сказали главное "со строкой МЕЖДУ не применить никак" - это плохо((
10 bebibo
 
27.01.20
12:45
(8) Кроме СКД никак больше?
11 Fish
 
27.01.20
12:45
(8) И как это поможет отобрать номера между 0 и 90?
12 bebibo
 
27.01.20
12:46
(11) это типа нули отбросятся просто
13 bebibo
 
27.01.20
12:47
а отобрать номера от 0 до 90 - не понятно(
14 Fish
 
27.01.20
12:47
(10) Можно сделать у номенклатуры реквизит типа число "ЧисловойНомер". И тогда отбирать по нему. Но если номера повторяются с разными префиксами - то этот вариант не подойдёт.
15 eTmy
 
27.01.20
12:51
Для извращенцев заполонить массив допустимыми значениями и использовать в списке трололо
16 eTmy
 
27.01.20
12:53
А если серьезно, подумайте в сторону выразить
17 Sasha_H
 
27.01.20
13:09
ВЫРАЗИТЬ здесь также не поможет нельзя строку выразить КАК число
18 Sasha_H
 
27.01.20
13:12
делайте задачу от обратного. Сформируйте список кодов от 0 - 90 и передайте его в качестве Код В (СписокКодов)
19 Sasha_H
 
27.01.20
13:12
тоесть в списоке у вас должны быть следующие коды:
20 Sasha_H
 
27.01.20
13:13
00-00000001
00-00000002
00-00000003
..........
00-00000090
21 Sasha_H
 
27.01.20
13:15
можно еще как вариант использовать ПОДСТРОКА
22 eTmy
 
27.01.20
13:16
(17) я не предлагал выражать строку как число
23 eTmy
 
27.01.20
13:23
Вообще хватит извращений, используйте ПОДОБНО... дальше уже думаю сможете додумать как)
24 RomaH
 
naïve
27.01.20
13:39
а про "зачем" так и не ответит ТС?
что-то миста уже не та - а как же объяснить автору, что это ему не нужно?
25 bolobol
 
27.01.20
13:59
00-00000000 < Номенклатура.Код И Номенклатура.Код < 00-00000090

а в чём вопрос-то?
26 bolobol
 
27.01.20
14:04
в какой момент возникает "Ошибка: индекс находится за границами массива"?
27 bebibo
 
27.01.20
15:13
(26) когда в консоли запроса нажимаю: заполнить параметры
28 bebibo
 
27.01.20
15:24
Попробовала как изначально хотела:
"ГДЕ
    Номенклатура.Код МЕЖДУ &Мин И &Макс"
Всё работает!
просто консолька какая то плохая))
29 bebibo
 
27.01.20
15:24
в другой попробовала и работает
30 Fish
 
27.01.20
15:33
(29) И отбирает то, что нужно?
31 eTmy
 
27.01.20
15:39
Думаю если добавить букву в начало кода номенклатуры, то все сломается)
32 bebibo
 
27.01.20
15:43
(30) да
33 bebibo
 
27.01.20
15:43
(31) да)), но  думаю букв там не будет
34 Fish
 
27.01.20
15:48
(33) Замечательно, когда есть такая уверенность в будущем :))
35 Мимохожий Однако
 
27.01.20
15:49
(33) ОФФ: Заявление дамское, я бы сказал.
36 bebibo
 
27.01.20
15:50
(34) )))
37 bebibo
 
27.01.20
15:50
нули теперь отбросить, думаю так:
ВЫБОР
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 1, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 1, 10)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 2, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 2, 9)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 3, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 3, 8)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 4, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 4, 7)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 5, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 5, 6)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 6, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 6, 5)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 7, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 7, 4)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 8, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 8, 3)
    КОГДА НЕ ПОДСТРОКА(Номенклатура.Код, 9, 1) = "0"
        ТОГДА ПОДСТРОКА(Номенклатура.Код, 9, 2)
    ИНАЧЕ ПОДСТРОКА(Номенклатура.Код, 10, 1)
КОНЕЦ
38 Мимохожий Однако
 
27.01.20
15:59
(37) обрати внимание на (8)
39 eTmy
 
27.01.20
16:00
(37) Эх, по рукам линейкой!)
40 bebibo
 
27.01.20
16:02
(37) хаха. это в интернете так было, я не виновата))
41 pechkin
 
27.01.20
16:03
(0) ошибка явно не при выполнении запроса
42 bebibo
 
27.01.20
16:12
(41) Ну вот нажимаю "Параметры" и ошибка
https://wdho.ru/lPiP
43 bebibo
 
27.01.20
16:14
44 hhhh
 
27.01.20
16:23
(43) ну задайте ей параметр "Мин", чего вы жадничаете?
45 pechkin
 
27.01.20
16:24
это консоль глюкавая.
возьми нормальную
46 bebibo
 
27.01.20
16:37
(44) так я нажимаю чтобы задать параметры и эта ошибка появляется. Из -за нее не могу задать параметры то)) Консоль просто какая то плохая
47 bebibo
 
27.01.20
16:37
(45) Да, взяла, всё нормально теперь))
48 eTmy
 
27.01.20
16:48
Инструменты разработчика поставьте от Tormozit