![]() |
![]() |
![]() |
|
Ошибка в соединении строк в запросе Волшебник, GreenDay1986, orakool, arsik, Timon1405, Garykom, АгентБезопаснойНацио, timurhv, Ботаник Гарден Меран, Мультук, ig0z, shuhard, Fish, МаленькийВопросик, youalex, ildary, RomanYS, Галахад, mmg, program345, JohnGilbert, okmail, DiMel_77, viraboy, craxx, Franchiser, Дмитрий, Ёпрст, Vstur, piter3, Dedal, Ненавижу 1С, X Leshiy, reg0303, H A D G E H O G s, Shnicks, alexshape, maxab72, hiddi, alexis_nov, ldo6, butterbean, RVN, yurikmellon2, formista2000, phabeZ, Кукуев, Builder, PR, VaganovSP, strange2007
| ☑ | ||
---|---|---|---|---|
0
program345
04.06.25
✎
12:30
|
привет!
Есть вычисляемое поле: "КПП" + ПОДСТРОКА(Контрагенты.ИННиКПП, СТРНАЙТИ(Контрагенты.ИННиКПП, "/") + 1, ДЛИНАСТРОКИ(Контрагенты.ИННиКПП)) реквизит Контрагенты.ИННиКПП текстовый,20 вычленяю КПП и добавляю имя, но выходит ошибка, как победить?
|
|||
1
Fish
гуру
04.06.25
✎
12:30
|
А подстрока точно что-то возвращает? Null там может быть?
|
|||
2
program345
04.06.25
✎
12:36
|
(1)
|
|||
3
alexshape
04.06.25
✎
12:43
|
Попробуй:
"КПП" + ЕСЛИ(СТРНАЙТИ(Контрагенты.ИННиКПП, "/") > 0, ПОДСТРОКА(Контрагенты.ИННиКПП, СТРНАЙТИ(Контрагенты.ИННиКПП, "/") + 1), "" ) |
|||
4
program345
04.06.25
✎
12:52
|
(3)
|
|||
5
program345
04.06.25
✎
13:11
|
Причем странно если делаю поле:
"КПП " + ПОДСТРОКА(Контрагенты.ИННиКПП, СТРНАЙТИ(Контрагенты.ИННиКПП, "/") + 1, 9) то все работает походу я третим параметром передаю значение 20, что больше длины строки, т.к. начинаю вырезать строку не с 1. Хотя так тоже не прокатывает : "243"+ПОДСТРОКА(Контрагенты.ИННиКПП, 1, ДЛИНАСТРОКИ(Контрагенты.ИННиКПП)) - та же ошибка. (3) Спасибо, но я работаю в синтаксисе Языка запросов, а не в синтаксисе встроенного языка. |
|||
6
Волшебник
04.06.25
✎
13:13
|
Надо разделить ИНН и КПП на 2 поля.
|
|||
7
arsik
гуру
04.06.25
✎
13:17
|
(7) это похоже на наследие 77
|
|||
8
Мультук
гуру
04.06.25
✎
13:20
|
(5)
>>Спасибо, но я работаю в синтаксисе Языка запросов, а не в >>синтаксисе встроенного языка. Говорят в 1С, в языке запросов, ЕСЛИ КОНЕЦ называется ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ Наверное, п@здят ВЫБОР КОГДА СТРНАЙТИ(Контрагенты.ИННиКПП, "/") > 0 ТОГДА ПОДСТРОКА(Контрагенты.ИННиКПП, СТРНАЙТИ(Контрагенты.ИННиКПП, "/") + 1, 50) ИНАЧЕ "" КОНЕЦ P.S. Для экспериментов, если кому интересно. Возвращается строка, но "какая-то не такая строка", наверное ВЫБРАТЬ ПЕРВЫЕ 1 Контрагенты.ИНН КАК ИНН, Подстрока(Контрагенты.ИНН, 0, ДлинаСтроки(Контрагенты.ИНН)), ТипЗначения(Подстрока(Контрагенты.ИНН, 0, ДлинаСтроки(Контрагенты.ИНН))), ДлинаСтроки(Контрагенты.ИНН), ВЫБОР КОГДА СТРНАЙТИ(Контрагенты.ИНН, "0") > 0 ТОГДА ПОДСТРОКА(Контрагенты.ИНН, СТРНАЙТИ(Контрагенты.ИНН, "0") + 1, 50) ИНАЧЕ "" КОНЕЦ ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИНН <> "" |
|||
9
program345
04.06.25
✎
13:22
|
(6) это учебный пример
|
|||
10
program345
04.06.25
✎
13:28
|
(8) так если возвращается типЗнч строка, почему не работает конкатенация?
|
|||
11
Ёпрст
гуру
04.06.25
✎
13:35
|
(10) потому, что там нет явного каст или конверт. Оберни своё г в подзапрос или времянку и снаружи уже добавь че те ннадо.
|
|||
12
program345
04.06.25
✎
13:45
|
(11) беру
ПОДСТРОКА(Контрагенты.ИННиКПП, СТРНАЙТИ(Контрагенты.ИННиКПП, "/") + 1, ДЛИНАСТРОКИ(Контрагенты.ИННиКПП)) кидаю в ВТ, В ВТ делаю поле "КПП " + ВТ.это выходит опять неверные параметры "+". Походу баг 1с. |
|||
13
Маленький Вопросик
04.06.25
✎
13:47
|
попробуй через выразить
|
|||
14
Мультук
гуру
04.06.25
✎
13:51
|
(12)
В (3) тебе дали конкретный ответ. В (5) я превратил этот ответ в работающий код Даже жевать не нужно. Что еще не так то? |
|||
15
arsik
гуру
04.06.25
✎
13:53
|
(12) У тебя скорее всего поле неограниченной длины
|
|||
16
Мультук
гуру
04.06.25
✎
13:59
|
(15)
Всё это чудесно воспроизводится на УТ/ЕРП, где ИНН строка конечной длины Запрос в (5) Работает "ЛЯЛЯ" + Подстрока(Контрагенты.ИНН, 1, ДлинаСтроки(Контрагенты.ИНН)) Не работает "ЛЯЛЯ" + Подстрока(Контрагенты.ИНН, 0, ДлинаСтроки(Контрагенты.ИНН)) |
|||
17
arsik
гуру
04.06.25
✎
14:15
|
(16) Так у тебя длина строки скорее всего 0. Ну точнее пустая строка там хранится.
|
|||
18
program345
04.06.25
✎
14:24
|
(16) а так работает?
"ЛЯЛЯ" + Подстрока(Контрагенты.ИНН, 3, ДлинаСтроки(Контрагенты.ИНН)) ___________________________________________________________________ не знаю как у тебя работает код "ЛЯЛЯ" + Подстрока(Контрагенты.ИНН, 1, ДлинаСтроки(Контрагенты.ИНН)) у меня такой код не работает: "ЛЯЛЯ" + Подстрока(Контрагенты.Наименование, 1, ДлинаСтроки(Контрагенты.Наименование)) 8.3.27.1508 |
|||
19
Ботаник Гарден Меран
04.06.25
✎
15:11
|
ТС нашел видимо ошибку в платформе.
Выбрать ЛЕВ(КПП, 3) КАК Поле1, ПОДСТРОКА(КПП, 1, 9) КАК Поле2 ИЗ Справочник.Контрагенты работает. А Выбрать ЛЕВ(КПП, 3) + ПОДСТРОКА(КПП, 1, 9) КАК ПолеИОшибка ИЗ Справочник.Контрагенты Выдает аналогичную ТС ошибку. В 8.2 была ошибка с функцией ПОДСТРОКА, когда возвращался Null. |
|||
20
Мультук
гуру
04.06.25
✎
15:21
|
(18)
8.3.25.1546 Наименование контрагента в примере - 13 символов ВЫБРАТЬ ПЕРВЫЕ 1 Контрагенты.ИНН КАК ИНН, Контрагенты.Наименование, ДлинаСтроки(Контрагенты.Наименование), ДлинаСтроки(Контрагенты.Наименование) -10, "КАК " + Подстрока(Контрагенты.Наименование, 10, ДлинаСтроки("123") ) КАК ТакМожно, "КАК " + Подстрока(Контрагенты.Наименование, 10, 3) КАК иТакМожно, "КАК " + Подстрока(Контрагенты.Наименование, 10, 10000) КАК ТакТожеМожно, //"КАК " + Подстрока(Контрагенты.Наименование, 10, ДлинаСтроки(Контрагенты.Наименование) -10) КАК АТакНельзя, "КАК " + ВЫРАЗИТЬ(Подстрока(Контрагенты.Наименование, 10, ДлинаСтроки(Контрагенты.Наименование) -10) КАК Строка(100)) КАК НоВотТакУжеМожно ИЗ Справочник.Контрагенты КАК Контрагенты |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |