Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как в запросе или в СКД преобразовать число в строку без пробелов

Как в запросе или в СКД преобразовать число в строку без пробелов
Я
   Alive
 
09.08.20 - 09:08
Доброго времени суток!! Суть вопроса: имеется документ с табличной частью с реквизитом ШтрихкодДок (например 200 000 576 241), тип данных Число. И есть Регист сведений,с ресурсами Ссылка (ссылка на нужный нам документ) и Штрихкод ( но тип данных уже Строка без пробелов, тут будет 200000576241). Необходимо выполнить объединение документа с регистром, но в запросе не знаю как выразить ШтрихкодДок как строка и без пробелов, чтобы сделать внутреннее соединение по Документ.ШтрихкодДок  = Регист.Штрихкод . Возможно это можно сделать в СКД, через вычисляемые поля, но тогда тоже вопрос, как сделать соединение по вычисленному полю?Подскажите пожалуйста!!
[url=https://radikal.ru][img]https://c.radikal.ru/c34/2008/f3/04a41334b636.png[/img][/url]
   Timon1405
 
1 - 09.08.20 - 09:12
см. ПОДСТРОКА() в запросе
   Alive
 
2 - 09.08.20 - 09:14
   Alive
 
3 - 09.08.20 - 09:14
(1) ПОДСТРОКА работает только со строками на сколько я знаю. У нужного мне реквизита тип ЧИСЛО.
   ReaLg
 
4 - 09.08.20 - 09:25
(0) "Сконирование" - это пять, конечно. Судя по названию - это все самописное. Почему бы архитектору системы не привести данные к одинаковым типам?
   Voronve
 
5 - 09.08.20 - 09:26
ВЫРАЗИТЬ(_ЗаказыСОШтрихкоды.barcode КАК Строка(13)) КАК Штрихкод


1. Пиши кусок запроса текстом а не картинкой - перебивать приходиться руками
https://pbs.twimg.com/media/D3X2uT3WkAAvhPP.jpg
2. не сконирование пишеться через А. скАнированиея
   ДенисЧ
 
6 - 09.08.20 - 09:36
(5) Это ты число к строке в запросе приводишь? Красава...
   youalex
 
7 - 09.08.20 - 09:42
(0) А числовое поле сделать в регистре - не вариант?

А так, в СКД есть Формат(), т.е, в твоем примере Формат(200000576241, "ЧГ=") = "200000576241". Ну, такое.
Еще можно экспортную функцию общего модуля использовать (не лучше)
   Alive
 
8 - 09.08.20 - 10:43
(4) Это было уже написано до меня и используется во многих местах. Пока руки не дошли до исправления грамматических ошибок.
   Alive
 
9 - 09.08.20 - 10:44
(7) не вариант, в регист идет запись не только числовых значений, но и строковых.
   Alive
 
10 - 09.08.20 - 10:45
(5) Выразить не работает для числового поля. По поводу скАнирования, не моя это доработка. С меня требуется отчет по уже давно дописанному механизму.
   ДенисЧ
 
11 - 09.08.20 - 10:47
(8) Сделай ещё одно поле и в призаписи набора копируй туда значение, преобразовав его в число.. Если уж так очень надо.
   Alive
 
12 - 09.08.20 - 10:49
(7) а как "вариант" тогда? думаю уже перебором результата запроса перевести Число в Строку и потом загнать обратно во врменную таблицу, но тоже так себе вариант мне кажется.
   youalex
 
13 - 09.08.20 - 10:54
(12) Вариант - в (11)
   Alive
 
14 - 09.08.20 - 10:57
(13) тогда надо еще все записи регистра переписывать, неужели нет других способов число в строку преобразовать...
   youalex
 
15 - 09.08.20 - 11:05
(14) Все остальное (Формат(), функция ОМ и твой вариант) - костыли, имхо.  
лучше день потерять потом за пять минут долететь
   Alive
 
16 - 09.08.20 - 11:19
(15) понятно, спасибо, буду думать
   sdf
 
17 - 09.08.20 - 14:17
   PR
 
18 - 09.08.20 - 14:22
(3) Не смотри (1), дяденька не в теме
А по сабжу гугли Мисту, миллион раз было, как в запросе через жопу сделать строку из числа
Не через жопу никак не получится
   PR
 
19 - 09.08.20 - 14:24
А вообще за ШтрихкодДок тип данных Число нужно пальцы ломать, чтобы человек программировать не мог
   PR
 
20 - 09.08.20 - 14:25
+(18), а, да, (5) тоже не читай, этот дяденька тоже не в теме
   PR
 
21 - 09.08.20 - 14:27
(8) Добавь поле ШтрихкодДокСтрокойКакИПолагается, сделай автозапись его при записи объекта и заполни старые, потом у себя используй его
Начальству лениво доложи, что какой-то мудак сделал говно, спроси, исправлять тебе или оставить как есть и вставить костыль
   PR
 
22 - 09.08.20 - 14:28
(11) LOL
   Ненавижу 1С
 
23 - 09.08.20 - 14:35
(21) поддерживаю идею с новым реквизитом и его автозаполнением в событии перед записью.

По второй части: начальству пох на строки и числа - им цифры подавай
   fisher
 
24 - 10.08.20 - 09:18
(0) Сделать ключевое поле, по которому нельзя соединить таблицы - это мощно. Очевидно, что ошибка в консерватории и надо править архитектуру.
А так - в запросе 1С преобразование типов сделать нельзя. СКД тоже не поможет (на уровне представления данных там это сделать можно, но для соединения - нет).
Ну, есть еще "академические" запросы по подобному преобразованию специально для выявления безумцев, которые осмелятся подобное в продакшн засунуть.
   программистище
 
25 - 10.08.20 - 09:35
А форматнуть его в строку религия не позволяет?!
   Krolik Bezobraznik
 
26 - 10.08.20 - 09:38
(0) А по ссылке на документ нельзя объединить?
   fisher
 
27 - 10.08.20 - 09:42
(25) В запросах 1С - платформа не позволяет. Нет такой возможности. А вот если бы платформа позволяла, то делать соединение потенциально больших таблиц по вычисляемому полю мне бы уже не позволила религия. Вероятно, разработчики платформы таким образом пытаются обращать неразумных атеистов в правильную религию.
   rsv
 
28 - 10.08.20 - 10:10
(0) в 1с скулевый cast обрезан по приведению типов.
А так в идеале в подзапросе преобразовать и соединить
   palsergeich
 
29 - 10.08.20 - 10:17
Нинада этим онанизмом в запросе заниматься.
Тупой РС строковое представление ШК и подписка на запись документа и несколько строчек простого кода решат все проблемы.
   youalex
 
30 - 10.08.20 - 10:30
(24) >>СКД тоже не поможет ... но для соединения - нет

Формат() в принципе, работает в соединениях.
 
 Рекламное место пустует
   fisher
 
31 - 10.08.20 - 11:29
(30) Хм... Действительно, работает. Ты прав. Почему-то считал, что нет.
   ДенисЧ
 
32 - 10.08.20 - 11:32
(30) Таак...
То есть я делаю два набора, в одном строка, в другом число. А потом в соединении наборов указываю Формат(н1.ДанныеЧисло, ".....") = н2.ДанныеСтрока?

Нифига себе...

Или я не так понял?
   youalex
 
33 - 10.08.20 - 11:36
(32) Да. Не самая очевидная фича)
   ДенисЧ
 
34 - 10.08.20 - 11:38
Хм, и правда, выражения в соединениях наборов работают...

Правда, как на скорости это скажется...
   fisher
 
35 - 10.08.20 - 12:29
(34) Думаю, никак особо не скажется. Соединения наборов все равно же постобработкой делаются. В худшем случае будет лишний проход для вычисления выражения соединения. А может и его не будет. Соединения наборов, думаю, оптимизировали как могли - по максимуму.
   PR
 
36 - 10.08.20 - 13:28
(34) То, что это работает средствами СКД, было и так понятно
Средствами СКД вообще много чего можно, даже текущую дату можно получить
Но решать проблему из (0) именно в описанной постановке средствами СКД — это лютый зашквар, даже запрос в цикле не так зашкварен, зашкварнее, пожалуй, только одинесный GOTO, как он там называется, Перейти, вроде
   программистище
 
37 - 10.08.20 - 16:49
(25) я про данные, а не запрос
смысл держать штрихкод числом?
   sitex
 
38 - 10.08.20 - 16:57
(36) чем Перейти то не угодило ?
   fisher
 
39 - 10.08.20 - 17:59
(38) Тем, что и без него одинэсники пишут код так, что читать решительно невозможно. А с ним так вообще сплошная обфускация получается. Легче вообще забрать этот инструмент, чем оставлять ради единичных случаев адекватного применения.
   wolk
 
40 - 10.08.20 - 20:56
(5) "2. не сконирование пишеться через А. скАнированиея"

Не "пишеться", а "пишеТСЯ", в данном случае без мягкого знака


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.