| 
    
        
     
     | 
    
  | 
Некорректная работа метода Свернуть() таблицы значений. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        ado    
     20.09.20 
            ✎
    18:52 
 | 
         
        Народ, кто-нибудь сталкивался с подобным?
 
        Есть ТЗ с одной колонкой, строковой, типизированной. Выполняю по ней Свернуть() и, в некоторых случаях, после свертки в ней остаюся строки с одинаковыми значениями! Значения реально одинаковые, не похожие буквы в разных раскладках -- я потом по этой таблице бытаюсь регистр сведений заполнить, и получаю отлуп по причине неуникального ключа. Как такое возможно?  | 
|||
| 
    1
    
        acht    
     20.09.20 
            ✎
    18:54 
 | 
         
        Пробелы в конце. Ваш К.О.     
         | 
|||
| 
    2
    
        kubik_live    
     20.09.20 
            ✎
    18:54 
 | 
         
        (0)  пробелы в конце строк     
         | 
|||
| 
    3
    
        ado    
     20.09.20 
            ✎
    18:56 
 | 
         
        (1)(2) Нет. Проверено.     
         | 
|||
| 
    4
    
        RomanYS    
     20.09.20 
            ✎
    18:57 
 | 
         
        (3) показывай код, результат     
         | 
|||
| 
    5
    
        ado    
     20.09.20 
            ✎
    19:04 
 | 
         
        Хммм, это не пробел, но какой-то непечатный символ. Потому, что СтрДлина у этих значений разная. Даже после СокрЛП разная.     
         | 
|||
| 
    6
    
        ado    
     20.09.20 
            ✎
    19:05 
 | 
         
        Но тогда вопрос, как с этим бороться?     
         | 
|||
| 
    7
    
        ДенисЧ    
     20.09.20 
            ✎
    19:09 
 | 
         
        Фублин, Дима...
 
        Такие вопросы от тебя...  | 
|||
| 
    8
    
        ado    
     20.09.20 
            ✎
    19:13 
 | 
         
        (7) Ну вот если такой умный, скажи как избежать подобных граблей?     
         | 
|||
| 
    9
    
        RomanYS    
     20.09.20 
            ✎
    19:18 
 | 
         
        (8) Навести порядок в данных, удалить непечатные символы     
         | 
|||
| 
    10
    
        Lexandr    
     20.09.20 
            ✎
    19:22 
 | 
         
        Запретить на фиг копирование из интернета наименований и подобной требухи. Я на оболеввшем. А так да, проще найти эти символы вариантов от вывести в отдельной колонке до хекс-редактора.     
         | 
|||
| 
    11
    
        ДенисЧ    
     20.09.20 
            ✎
    19:25 
 | 
         
        (8) Выяснить, какие символы там есть, откуда они появляются. Уничтожить причину. В существующих данных провести люстрацию.     
         | 
|||
| 
    12
    
        ado    
     20.09.20 
            ✎
    19:26 
 | 
         
        (9) Как? В юникоде этих символов как у дурака фантиков.     
         | 
|||
| 
    13
    
        ДенисЧ    
     20.09.20 
            ✎
    19:26 
 | 
         
        (12) КодСимвола() на что нам свыше дан?     
         | 
|||
| 
    14
    
        Lexandr    
     20.09.20 
            ✎
    19:26 
 | 
         
        Даже вспомнил, в свое время пришлось вырезать символ "09".     
         | 
|||
| 
    15
    
        ado    
     20.09.20 
            ✎
    19:27 
 | 
         
        (11) Данные из внешнего источника приходят.     
         | 
|||
| 
    16
    
        ado    
     20.09.20 
            ✎
    19:28 
 | 
         
        (13) Ну вот в данном конкретном случае он показывает 8237. И что мне с этой инфой делать?     
         | 
|||
| 
    17
    
        ado    
     20.09.20 
            ✎
    19:29 
 | 
         
        Вопрос в том, какого хрена вообще 1С неодинаковые строки считает одинаковыми.     
         | 
|||
| 
    18
    
        hhhh    
     20.09.20 
            ✎
    19:30 
 | 
         
        (17) сам же в (0) сказал, что 1с их считает неодинаковыми.     
         | 
|||
| 
    19
    
        ДенисЧ    
     20.09.20 
            ✎
    19:31 
 | 
         
        (16) СтрЗаменить(строка, Символ(8237), "")
 
        (17) Кто тебе сказал такое? В (0) у тебя обратная ситуация  | 
|||
| 
    20
    
        acht    
     20.09.20 
            ✎
    19:31 
 | 
         
        (17) Что делать? Кто виноват? Доколе?     
         | 
|||
| 
    21
    
        ado    
     20.09.20 
            ✎
    19:35 
 | 
         
        (18) Это скуль их считает неодинаковыми. Ибо проверку на уникальность ключа он делает.
 
        (19) А если в другой записи будет Символ(8236)? Или Символ(8235)? Или ещё один из овердохера непечатных символов?  | 
|||
| 
    22
    
        acht    
     20.09.20 
            ✎
    19:40 
 | 
         
        (21) Ну, тогда придется тебе что-то сделать.     
         | 
|||
| 
    23
    
        Ненавижу 1С    
     гуру 
    20.09.20 
            ✎
    19:48 
 | 
         
        Format characters
 
        202A  LEFT-TO-RIGHT EMBEDDING • commonly abbreviated LRE 202B  RIGHT-TO-LEFT EMBEDDING • commonly abbreviated RLE 202C  POP DIRECTIONAL FORMATTING • commonly abbreviated PDF 202D  LEFT-TO-RIGHT OVERRIDE • commonly abbreviated LRO 202E  RIGHT-TO-LEFT OVERRIDE • commonly abbreviated RLO Видимо не умеет СокрЛП такие символы обрезать  | 
|||
| 
    24
    
        ado    
     20.09.20 
            ✎
    19:50 
 | 
         
        (21) Тьфу, точнее наоборот. Для 1С они разные, а для скуля одинаковые.     
         | 
|||
| 
    25
    
        ado    
     20.09.20 
            ✎
    20:01 
 | 
         
        В общем, решение: ЗаменитьНедопустимыеСимволыXML() из БСП.     
         | 
|||
| 
    26
    
        Ненавижу 1С    
     гуру 
    20.09.20 
            ✎
    20:02 
 | 
         
        (25) ставлю лайк     
         | 
|||
| 
    27
    
        ДенисЧ    
     20.09.20 
            ✎
    20:10 
 | 
         
        (21) Проверяй на вхождение в диапазон допустимых символов     
         | 
|||
| 
    28
    
        ado    
     20.09.20 
            ✎
    20:22 
 | 
         
        (27) Допустимых тоже какбэ оердохера.     
         | 
|||
| 
    29
    
        МихаилМ    
     20.09.20 
            ✎
    20:25 
 | 
         
        значит - некорректная работа программиста 1с, а не метода Свернуть()     
         | 
|||
| 
    30
    
        Злопчинский    
     20.09.20 
            ✎
    20:45 
 | 
         
        (5) кто бы сомневался в корявости рук.     
         | 
|||
| 
    31
    
        ado    
     20.09.20 
            ✎
    21:00 
 | 
         
        (25) А, нет, нихрена. Эта функция такие символы не убирает. 
 
        Заррраза!  | 
|||
| 
    32
    
        ado    
     20.09.20 
            ✎
    21:01 
 | 
         
        (30) Есть предложения, как решить?     
         | 
|||
| 
    33
    
        RomanYS    
     20.09.20 
            ✎
    21:04 
 | 
         
        (31) Перебери "перечисление" Символы:
 
        ВК (CR) ВТаб (VTab) НПП (NBSp) ПС (LF) ПФ (FF) Таб (Tab) 99% что ничего больше у тебя не будет. А если останется - берёшь конкретные кривые строки и вырезаешь оттуда кривые символы на замену  | 
|||
| 
    34
    
        Salimbek    
     20.09.20 
            ✎
    21:04 
 | 
         
        (32) Перевести в ANSI, отфильтровать (это проще, ведь там всего 256 символов останется), перевести обратно в UTF ?     
         | 
|||
| 
    35
    
        ado    
     20.09.20 
            ✎
    21:10 
 | 
         
        (33) Смотри (16)     
         | 
|||
| 
    36
    
        ado    
     20.09.20 
            ✎
    21:12 
 | 
         
        (34) Не пойдет, нужен юникод. Данные могут быть на языках, использующих не только кириллицу и простую латиницу.     
         | 
|||
| 
    37
    
        RomanYS    
     20.09.20 
            ✎
    21:16 
 | 
         
        (35) Ну что делать с конкретным символом ты знаешь. 
 
        Универсального рецепта с учетом (36) не будет. В любом случае тебе нужен либо "чёрный" список символов, либо "белый" (тут проблема в (36))  | 
|||
| 
    38
    
        acht    
     20.09.20 
            ✎
    21:17 
 | 
         
        (36) Ну так засучивай рукава и пиши свой RTrim - по классам уникодных символов и т.п.     
         | 
|||
| 
    39
    
        ado    
     20.09.20 
            ✎
    21:25 
 | 
         
        Не, есть, конечно одно напрашивающееся решение -- свернуть запрососм. Но оно мне не нравится :(     
         | 
|||
| 
    40
    
        МихаилМ    
     20.09.20 
            ✎
    21:48 
 | 
         
        (39) или поменять  collatoin     
         | 
|||
| 
    41
    
        Провинциальный 1сник    
     20.09.20 
            ✎
    22:04 
 | 
         
        Юникод зло, во многих случаях - необходимое.. Но вот для кириллицы он нафиг не нужен, ИМХО, и без него отлично можно было обойтись классическими 8битными кодовыми страницами рус-лат. Проблема была в зоопарке этих кодовых страниц.. и юникод как бы решил эту проблему, но при этом создал новые.     
         | 
|||
| 
    42
    
        ado    
     20.09.20 
            ✎
    22:55 
 | 
         
        (40) Ну, это такое ... Сейчас поменяют, а потом админ базу на другой сервак перенесет с настройками по умолчанию, и задолбаются проблему искать.
 
        (41) Мир не ограничивается зоной ru. Только кириллицы сушествует больше десятка вариантов, а ещё есть расширенная латиница, а ещё есть другие алфавиты, а ещё есть вообще не алфавиты.  | 
|||
| 
    43
    
        ado    
     20.09.20 
            ✎
    22:57 
 | 
         
        (41) Проблема тут не в юникоде, а в том, что 1С и MSSQL на котором работает 1С, по-разному сравнивают строки.     
         | 
|||
| 
    44
    
        acht    
     20.09.20 
            ✎
    23:18 
 | 
         
        (43) Ты еще про регистрозависимость вспомни     
         | 
|||
| 
    45
    
        Провинциальный 1сник    
     21.09.20 
            ✎
    06:43 
 | 
         
        (42) "Только кириллицы сушествует больше десятка вариантов, а ещё есть расширенная латиница"
 
        Часто ли 99,9% пользователей требуется редактировать текст, где русский вперемешку с болгарским? Думаю, крайне редко. Да и в этом случае есть решения. Помню, на УКНЦ была технология переключения кодовых страниц КОИ-7 с помощью управляющих символов, позволяющего хранить в файле и выводить на консоль многоязычный текст. Это технология, придуманная айтишниками для айтишников. А юникод придумывался для гламурных юзеров, ценой дикого оверхеда при хранении национальных символов и при этом с кучей недостаточно документированных нюансов, которые используются кем попало как попало...  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |