|
Некорректная работа метода Свернуть() таблицы значений. | ☑ | ||
---|---|---|---|---|
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 с помощью управляющих символов, позволяющего хранить в файле и выводить на консоль многоязычный текст. Это технология, придуманная айтишниками для айтишников. А юникод придумывался для гламурных юзеров, ценой дикого оверхеда при хранении национальных символов и при этом с кучей недостаточно документированных нюансов, которые используются кем попало как попало... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |