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

Некорректная работа метода Свернуть() таблицы значений.

Некорректная работа метода Свернуть() таблицы значений.
Я
   ado
 
20.09.20 - 18:52
Народ, кто-нибудь сталкивался с подобным?

Есть ТЗ с одной колонкой, строковой, типизированной. Выполняю по ней Свернуть() и, в некоторых случаях, после свертки в ней остаюся строки с одинаковыми значениями!
Значения реально одинаковые, не похожие буквы в разных раскладках -- я потом по этой таблице бытаюсь регистр сведений заполнить, и получаю отлуп по причине неуникального ключа.

Как такое возможно?
   acht
 
1 - 20.09.20 - 18:54
Пробелы в конце. Ваш К.О.
   kubik_live
 
2 - 20.09.20 - 18:54
(0)  пробелы в конце строк
   ado
 
3 - 20.09.20 - 18:56
(1)(2) Нет. Проверено.
   RomanYS
 
4 - 20.09.20 - 18:57
(3) показывай код, результат
   ado
 
5 - 20.09.20 - 19:04
Хммм, это не пробел, но какой-то непечатный символ. Потому, что СтрДлина у этих значений разная. Даже после СокрЛП разная.
   ado
 
6 - 20.09.20 - 19:05
Но тогда вопрос, как с этим бороться?
   ДенисЧ
 
7 - 20.09.20 - 19:09
Фублин, Дима...
Такие вопросы от тебя...
   ado
 
8 - 20.09.20 - 19:13
(7) Ну вот если такой умный, скажи как избежать подобных граблей?
   RomanYS
 
9 - 20.09.20 - 19:18
(8) Навести порядок в данных, удалить непечатные символы
   Lexandr
 
10 - 20.09.20 - 19:22
Запретить на фиг копирование из интернета наименований и подобной требухи. Я на оболеввшем. А так да, проще найти эти символы вариантов от вывести в отдельной колонке до хекс-редактора.
   ДенисЧ
 
11 - 20.09.20 - 19:25
(8) Выяснить, какие символы там есть, откуда они появляются. Уничтожить причину. В существующих данных провести люстрацию.
   ado
 
12 - 20.09.20 - 19:26
(9) Как? В юникоде этих символов как у дурака фантиков.
   ДенисЧ
 
13 - 20.09.20 - 19:26
(12) КодСимвола() на что нам свыше дан?
   Lexandr
 
14 - 20.09.20 - 19:26
Даже вспомнил, в свое время пришлось вырезать символ "09".
   ado
 
15 - 20.09.20 - 19:27
(11) Данные из внешнего источника приходят.
   ado
 
16 - 20.09.20 - 19:28
(13) Ну вот в данном конкретном случае он показывает 8237. И что мне с этой инфой делать?
   ado
 
17 - 20.09.20 - 19:29
Вопрос в том, какого хрена вообще 1С неодинаковые строки считает одинаковыми.
   hhhh
 
18 - 20.09.20 - 19:30
(17) сам же в (0) сказал, что 1с их считает неодинаковыми.
   ДенисЧ
 
19 - 20.09.20 - 19:31
(16) СтрЗаменить(строка, Символ(8237), "")
(17) Кто тебе сказал такое? В (0) у тебя обратная ситуация
   acht
 
20 - 20.09.20 - 19:31
(17) Что делать? Кто виноват? Доколе?
   ado
 
21 - 20.09.20 - 19:35
(18) Это скуль их считает неодинаковыми. Ибо проверку на уникальность ключа он делает.

(19) А если в другой записи будет Символ(8236)? Или Символ(8235)? Или ещё один из овердохера непечатных символов?
   acht
 
22 - 20.09.20 - 19:40
(21) Ну, тогда придется тебе что-то сделать.
   Ненавижу 1С
 
23 - 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

Видимо не умеет СокрЛП такие символы обрезать
   ado
 
24 - 20.09.20 - 19:50
(21) Тьфу, точнее наоборот. Для 1С они разные, а для скуля одинаковые.
   ado
 
25 - 20.09.20 - 20:01
В общем, решение: ЗаменитьНедопустимыеСимволыXML() из БСП.
   Ненавижу 1С
 
26 - 20.09.20 - 20:02
(25) ставлю лайк
   ДенисЧ
 
27 - 20.09.20 - 20:10
(21) Проверяй на вхождение в диапазон допустимых символов
   ado
 
28 - 20.09.20 - 20:22
(27) Допустимых тоже какбэ оердохера.
   МихаилМ
 
29 - 20.09.20 - 20:25
значит - некорректная работа программиста 1с, а не метода Свернуть()
   Злопчинский
 
30 - 20.09.20 - 20:45
(5) кто бы сомневался в корявости рук.
 
 Рекламное место пустует
   ado
 
31 - 20.09.20 - 21:00
(25) А, нет, нихрена. Эта функция такие символы не убирает.
Заррраза!
   ado
 
32 - 20.09.20 - 21:01
(30) Есть предложения, как решить?
   RomanYS
 
33 - 20.09.20 - 21:04
(31) Перебери "перечисление" Символы:
ВК (CR)
ВТаб (VTab)
НПП (NBSp)
ПС (LF)
ПФ (FF)
Таб (Tab)

99% что ничего больше у тебя не будет.

А если останется - берёшь конкретные кривые строки и вырезаешь оттуда кривые символы на замену
   Salimbek
 
34 - 20.09.20 - 21:04
(32) Перевести в ANSI, отфильтровать (это проще, ведь там всего 256 символов останется), перевести обратно в UTF ?
   ado
 
35 - 20.09.20 - 21:10
(33) Смотри (16)
   ado
 
36 - 20.09.20 - 21:12
(34) Не пойдет, нужен юникод. Данные могут быть на языках, использующих не только кириллицу и простую латиницу.
   RomanYS
 
37 - 20.09.20 - 21:16
(35) Ну что делать с конкретным символом ты знаешь.
Универсального рецепта с учетом (36) не будет. В любом случае тебе нужен либо "чёрный" список символов, либо "белый" (тут проблема в (36))
   acht
 
38 - 20.09.20 - 21:17
(36) Ну так засучивай рукава и пиши свой RTrim - по классам уникодных символов и т.п.
   ado
 
39 - 20.09.20 - 21:25
Не, есть, конечно одно напрашивающееся решение -- свернуть запрососм. Но оно мне не нравится :(
   МихаилМ
 
40 - 20.09.20 - 21:48
(39) или поменять  collatoin
   Провинциальный 1сник
 
41 - 20.09.20 - 22:04
Юникод зло, во многих случаях - необходимое.. Но вот для кириллицы он нафиг не нужен, ИМХО, и без него отлично можно было обойтись классическими 8битными кодовыми страницами рус-лат. Проблема была в зоопарке этих кодовых страниц.. и юникод как бы решил эту проблему, но при этом создал новые.
   ado
 
42 - 20.09.20 - 22:55
(40) Ну, это такое ... Сейчас поменяют, а потом админ базу на другой сервак перенесет с настройками по умолчанию, и задолбаются проблему искать.

(41) Мир не ограничивается зоной ru. Только кириллицы сушествует больше десятка вариантов, а ещё есть расширенная латиница, а ещё есть другие алфавиты, а ещё есть вообще не алфавиты.
   ado
 
43 - 20.09.20 - 22:57
(41) Проблема тут не в юникоде, а в том, что 1С и MSSQL на котором работает 1С, по-разному сравнивают строки.
   acht
 
44 - 20.09.20 - 23:18
(43) Ты еще про регистрозависимость вспомни
   Провинциальный 1сник
 
45 - 21.09.20 - 06:43
(42) "Только кириллицы сушествует больше десятка вариантов, а ещё есть расширенная латиница"
Часто ли 99,9% пользователей требуется редактировать текст, где русский вперемешку с болгарским? Думаю, крайне редко. Да и в этом случае есть решения. Помню, на УКНЦ была технология переключения кодовых страниц КОИ-7 с помощью управляющих символов, позволяющего хранить в файле и выводить на консоль многоязычный текст. Это технология, придуманная айтишниками для айтишников. А юникод придумывался для гламурных юзеров, ценой дикого оверхеда при хранении национальных символов и при этом с кучей недостаточно документированных нюансов, которые используются кем попало как попало...


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