![]() |
![]() |
![]() |
|
v7: Исправление ошибок найденых ТиИ (символы из "чужих" кодировок в поле BLOCK) ) | ☑ | ||
---|---|---|---|---|
0
Susirya
13.02.12
✎
17:40
|
В продолжение заархивированной Результат ТИИ. Неверное содержимое текстового поля.
1с 7.7 ТИС Та же ситуация - по результатам ТиИ стало ясно, что накопилось приличное кол-во неверных записей поля BLOCK в 1SBLOB.dbf(присутствуют некорректные символы). Задача/желание - исправить. Подскажите что лучше: 1. искать связь с конкретными объектами и править из самой 1С. 2. перебирать dbf и править поля обработкой. Если 1 - то как найти связь с объектами? Если 2 - то как? (в смысле как отсеять некорректные символы и не навредить dbf-ке?) |
|||
1
andrewks
13.02.12
✎
17:47
|
если что - 1с умеет читать dbf файлы. и даже без 1cpp
|
|||
2
andrewks
13.02.12
✎
17:50
|
а ещё можно пробежаться по метаданным и составить список текстовых реквизитов. а потом - перебирать и проверять
|
|||
3
Mikeware
13.02.12
✎
17:52
|
(0) по п.1 - ищи описание 1sblob
по п.2 - смотри в СП вункции работы со строками (2) если в блобе - то не просто текстовых, а текстовых неограниченой длины. |
|||
4
andrewks
13.02.12
✎
17:52
|
(3) ну, на ноль проверить ведь не сложно? :)
|
|||
5
andrewks
13.02.12
✎
17:54
|
+(4) а вообще, лучше сразу писать проверку всех текстовых. сегодня в блобе, завтра в обычном текстовом грязь запишут
|
|||
6
Mikeware
13.02.12
✎
17:57
|
(5) И ведь пишут! :-)
вместо шифта жмут контрол... |
|||
7
Ёпрст
гуру
13.02.12
✎
17:59
|
есть еще варипнт - забить и ничего не исправлять
|
|||
8
andrewks
13.02.12
✎
18:00
|
(7) ты знаешь, я в 1-м посте хотел его предложить, но постеснялся ;-)
|
|||
9
Susirya
13.02.12
✎
18:00
|
Спасибо всем за направление! Примерно азимут ясен... )
(6) это обработкой из клиент банка тянется |
|||
10
andrewks
13.02.12
✎
18:00
|
+(8) подумал - а ну как вдруг будут переносить данные в v8, ведь глюканёт
|
|||
11
Susirya
13.02.12
✎
18:01
|
(7)(8) - ну "не аккуратненько как-то"... :)
|
|||
12
Susirya
13.02.12
✎
18:02
|
+(11) в далекой перспективе перенос предусматривается...
|
|||
13
Ёпрст
гуру
13.02.12
✎
18:03
|
ну вот, понапихают тебе в блоб всякие © ... и.. нафига их удалять ?
|
|||
14
Mikeware
13.02.12
✎
18:03
|
(10) ПРОверять на наличие недопустимых символов...
|
|||
15
Susirya
13.02.12
✎
18:06
|
(14) подскажите как определить "недопустимость" символа в строке?
|
|||
16
Susirya
13.02.12
✎
18:11
|
+(15) неужели только Найти(стрТестСимвол, стрДопустимыйАлфавит) в цикле?
Как то деревянно... |
|||
17
andrewks
13.02.12
✎
18:15
|
ну, если в лоб, то как-то так:
Для НомСимв=1 По СтрДлина(ВхСтр) Цикл ТекКод=КодСимв(Сред(ВхСтр,НомСимв,1)); Если ПроверитьДопустимостьСимв(ТекКод)=0 Тогда // недопустимый символ КонецЕсли; КонецЦикла; |
|||
18
Susirya
13.02.12
✎
18:33
|
(17) да это понятно, принцип перебора ясен. Не ясно как ПроверитьДопустимостьСимв()?...
ткните пожалуйста в источник знаний? (неужели только Найти(стрТестСимвол, стрДопустимыйАлфавит)?) |
|||
19
Susirya
13.02.12
✎
20:20
|
Если кому-то пригодится:
"Пуск > Программы > ... > Служебные > Таблица символов Все символы, которые непонятно зачем нужны, можно считать недопустимыми. Например диапазон с 127 по 191 (0x7F - 0xBF). Для буквы Ё можно сделать исключение (168 и 184), если не лень. Но в первую очередь стоит проверить строку на наличие неразрывных пробелов и тире. Стр = СтрЗаменить(Стр, Симв(160), " "); Стр = СтрЗаменить(Стр, Симв(150), "-"); Стр = СтрЗаменить(Стр, Симв(151), "-");" Спасибо всем! |
|||
20
andrewks
13.02.12
✎
21:26
|
(18)
Функция ПроверитьДопустимостьСимв(КодСимв) Если (КодСимв<32) ИЛИ // тут выбираем, какие коды нам неугодны Тогда Возврат 0; Иначе Возврат 1; КонецЕсли; КонецФункции |
|||
21
Susirya
13.02.12
✎
22:00
|
andrewks, еще раз Спасибо за все ответы! Теперь все предельно понятно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |