| 
    
        
     
     | 
    
  | 
Как в запросе или в СКД преобразовать число в строку без пробелов | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        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]  | 
|||
| 
    1
    
        Timon1405    
     09.08.20 
            ✎
    09:12 
 | 
         
        см. ПОДСТРОКА() в запросе     
         | 
|||
| 
    2
    
        Alive    
     09.08.20 
            ✎
    09:14 
 | 
||||
| 
    3
    
        Alive    
     09.08.20 
            ✎
    09:14 
 | 
         
        (1) ПОДСТРОКА работает только со строками на сколько я знаю. У нужного мне реквизита тип ЧИСЛО.     
         | 
|||
| 
    4
    
        ReaLg    
     гуру 
    09.08.20 
            ✎
    09:25 
 | 
         
        (0) "Сконирование" - это пять, конечно. Судя по названию - это все самописное. Почему бы архитектору системы не привести данные к одинаковым типам?     
         | 
|||
| 
    5
    
        Voronve    
     09.08.20 
            ✎
    09:26 
 | 
         
        ВЫРАЗИТЬ(_ЗаказыСОШтрихкоды.barcode КАК Строка(13)) КАК Штрихкод
 
        1. Пиши кусок запроса текстом а не картинкой - перебивать приходиться руками https://pbs.twimg.com/media/D3X2uT3WkAAvhPP.jpg 2. не сконирование пишеться через А. скАнированиея  | 
|||
| 
    6
    
        ДенисЧ    
     09.08.20 
            ✎
    09:36 
 | 
         
        (5) Это ты число к строке в запросе приводишь? Красава...     
         | 
|||
| 
    7
    
        youalex    
     09.08.20 
            ✎
    09:42 
 | 
         
        (0) А числовое поле сделать в регистре - не вариант? 
 
        А так, в СКД есть Формат(), т.е, в твоем примере Формат(200000576241, "ЧГ=") = "200000576241". Ну, такое. Еще можно экспортную функцию общего модуля использовать (не лучше)  | 
|||
| 
    8
    
        Alive    
     09.08.20 
            ✎
    10:43 
 | 
         
        (4) Это было уже написано до меня и используется во многих местах. Пока руки не дошли до исправления грамматических ошибок.     
         | 
|||
| 
    9
    
        Alive    
     09.08.20 
            ✎
    10:44 
 | 
         
        (7) не вариант, в регист идет запись не только числовых значений, но и строковых.     
         | 
|||
| 
    10
    
        Alive    
     09.08.20 
            ✎
    10:45 
 | 
         
        (5) Выразить не работает для числового поля. По поводу скАнирования, не моя это доработка. С меня требуется отчет по уже давно дописанному механизму.     
         | 
|||
| 
    11
    
        ДенисЧ    
     09.08.20 
            ✎
    10:47 
 | 
         
        (8) Сделай ещё одно поле и в призаписи набора копируй туда значение, преобразовав его в число.. Если уж так очень надо.     
         | 
|||
| 
    12
    
        Alive    
     09.08.20 
            ✎
    10:49 
 | 
         
        (7) а как "вариант" тогда? думаю уже перебором результата запроса перевести Число в Строку и потом загнать обратно во врменную таблицу, но тоже так себе вариант мне кажется.     
         | 
|||
| 
    13
    
        youalex    
     09.08.20 
            ✎
    10:54 
 | 
         
        (12) Вариант - в (11)     
         | 
|||
| 
    14
    
        Alive    
     09.08.20 
            ✎
    10:57 
 | 
         
        (13) тогда надо еще все записи регистра переписывать, неужели нет других способов число в строку преобразовать...     
         | 
|||
| 
    15
    
        youalex    
     09.08.20 
            ✎
    11:05 
 | 
         
        (14) Все остальное (Формат(), функция ОМ и твой вариант) - костыли, имхо.  
 
        лучше день потерять потом за пять минут долететь  | 
|||
| 
    16
    
        Alive    
     09.08.20 
            ✎
    11:19 
 | 
         
        (15) понятно, спасибо, буду думать     
         | 
|||
| 
    17
    
        sdf    
     09.08.20 
            ✎
    14:17 
 | 
         
        (0) вот же http://catalog.mista.ru/1c/articles/331805/     
         | 
|||
| 
    18
    
        PR    
     09.08.20 
            ✎
    14:22 
 | 
         
        (3) Не смотри (1), дяденька не в теме
 
        А по сабжу гугли Мисту, миллион раз было, как в запросе через жопу сделать строку из числа Не через жопу никак не получится  | 
|||
| 
    19
    
        PR    
     09.08.20 
            ✎
    14:24 
 | 
         
        А вообще за ШтрихкодДок тип данных Число нужно пальцы ломать, чтобы человек программировать не мог     
         | 
|||
| 
    20
    
        PR    
     09.08.20 
            ✎
    14:25 
 | 
         
        +(18), а, да, (5) тоже не читай, этот дяденька тоже не в теме     
         | 
|||
| 
    21
    
        PR    
     09.08.20 
            ✎
    14:27 
 | 
         
        (8) Добавь поле ШтрихкодДокСтрокойКакИПолагается, сделай автозапись его при записи объекта и заполни старые, потом у себя используй его
 
        Начальству лениво доложи, что какой-то мудак сделал говно, спроси, исправлять тебе или оставить как есть и вставить костыль  | 
|||
| 
    22
    
        PR    
     09.08.20 
            ✎
    14:28 
 | 
         
        (11) LOL     
         | 
|||
| 
    23
    
        Ненавижу 1С    
     гуру 
    09.08.20 
            ✎
    14:35 
 | 
         
        (21) поддерживаю идею с новым реквизитом и его автозаполнением в событии перед записью.
 
        По второй части: начальству пох на строки и числа - им цифры подавай  | 
|||
| 
    24
    
        fisher    
     10.08.20 
            ✎
    09:18 
 | 
         
        (0) Сделать ключевое поле, по которому нельзя соединить таблицы - это мощно. Очевидно, что ошибка в консерватории и надо править архитектуру.
 
        А так - в запросе 1С преобразование типов сделать нельзя. СКД тоже не поможет (на уровне представления данных там это сделать можно, но для соединения - нет). Ну, есть еще "академические" запросы по подобному преобразованию специально для выявления безумцев, которые осмелятся подобное в продакшн засунуть.  | 
|||
| 
    25
    
        программистище    
     10.08.20 
            ✎
    09:35 
 | 
         
        А форматнуть его в строку религия не позволяет?!     
         | 
|||
| 
    26
    
        Krolik Bezobraznik    
     10.08.20 
            ✎
    09:38 
 | 
         
        (0) А по ссылке на документ нельзя объединить?     
         | 
|||
| 
    27
    
        fisher    
     10.08.20 
            ✎
    09:42 
 | 
         
        (25) В запросах 1С - платформа не позволяет. Нет такой возможности. А вот если бы платформа позволяла, то делать соединение потенциально больших таблиц по вычисляемому полю мне бы уже не позволила религия. Вероятно, разработчики платформы таким образом пытаются обращать неразумных атеистов в правильную религию.     
         | 
|||
| 
    28
    
        rsv    
     10.08.20 
            ✎
    10:10 
 | 
         
        (0) в 1с скулевый cast обрезан по приведению типов.
 
        А так в идеале в подзапросе преобразовать и соединить  | 
|||
| 
    29
    
        palsergeich    
     10.08.20 
            ✎
    10:17 
 | 
         
        Нинада этим онанизмом в запросе заниматься.
 
        Тупой РС строковое представление ШК и подписка на запись документа и несколько строчек простого кода решат все проблемы.  | 
|||
| 
    30
    
        youalex    
     10.08.20 
            ✎
    10:30 
 | 
         
        (24) >>СКД тоже не поможет ... но для соединения - нет
 
        Формат() в принципе, работает в соединениях.  | 
|||
| 
    31
    
        fisher    
     10.08.20 
            ✎
    11:29 
 | 
         
        (30) Хм... Действительно, работает. Ты прав. Почему-то считал, что нет.     
         | 
|||
| 
    32
    
        ДенисЧ    
     10.08.20 
            ✎
    11:32 
 | 
         
        (30) Таак...
 
        То есть я делаю два набора, в одном строка, в другом число. А потом в соединении наборов указываю Формат(н1.ДанныеЧисло, ".....") = н2.ДанныеСтрока? Нифига себе... Или я не так понял?  | 
|||
| 
    33
    
        youalex    
     10.08.20 
            ✎
    11:36 
 | 
         
        (32) Да. Не самая очевидная фича)     
         | 
|||
| 
    34
    
        ДенисЧ    
     10.08.20 
            ✎
    11:38 
 | 
         
        Хм, и правда, выражения в соединениях наборов работают...
 
        Правда, как на скорости это скажется...  | 
|||
| 
    35
    
        fisher    
     10.08.20 
            ✎
    12:29 
 | 
         
        (34) Думаю, никак особо не скажется. Соединения наборов все равно же постобработкой делаются. В худшем случае будет лишний проход для вычисления выражения соединения. А может и его не будет. Соединения наборов, думаю, оптимизировали как могли - по максимуму.     
         | 
|||
| 
    36
    
        PR    
     10.08.20 
            ✎
    13:28 
 | 
         
        (34) То, что это работает средствами СКД, было и так понятно
 
        Средствами СКД вообще много чего можно, даже текущую дату можно получить Но решать проблему из (0) именно в описанной постановке средствами СКД — это лютый зашквар, даже запрос в цикле не так зашкварен, зашкварнее, пожалуй, только одинесный GOTO, как он там называется, Перейти, вроде  | 
|||
| 
    37
    
        программистище    
     10.08.20 
            ✎
    16:49 
 | 
         
        (25) я про данные, а не запрос
 
        смысл держать штрихкод числом?  | 
|||
| 
    38
    
        sitex    
     naïve 
    10.08.20 
            ✎
    16:57 
 | 
         
        (36) чем Перейти то не угодило ?     
         | 
|||
| 
    39
    
        fisher    
     10.08.20 
            ✎
    17:59 
 | 
         
        (38) Тем, что и без него одинэсники пишут код так, что читать решительно невозможно. А с ним так вообще сплошная обфускация получается. Легче вообще забрать этот инструмент, чем оставлять ради единичных случаев адекватного применения.     
         | 
|||
| 
    40
    
        wolk    
     10.08.20 
            ✎
    20:56 
 | 
         
        (5) "2. не сконирование пишеться через А. скАнированиея"
 
        Не "пишеться", а "пишеТСЯ", в данном случае без мягкого знака  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |