|
Быстрый способ обработки Таблиц значений, Массивов | ☑ | ||
---|---|---|---|---|
0
13_Mult
28.03.14
✎
11:21
|
Добрый день!
Есть с первого взгляда не тривиальная задача. Полученный запросом из сторонней базы массив (либо таблица значений)содержит очень много колонок и строк со значением с типом строка. В этих строках есть куча "рандомных" пробелов до и после текста. Вопрос: Какой способ наиболее быстрый для удаления всех пробелов в Массиве и ТаблицеЗначений. СокрЛП в цикле не рассматривается. Может есть какие сторонние компоненты для быстрой обработки сразу всего Массива/ТЗ. Далее полученный результат будет использоваться в запросе. |
|||
1
H A D G E H O G s
28.03.14
✎
11:21
|
СокрЛП в цикле
|
|||
2
Heckfy
28.03.14
✎
11:22
|
А что мешает сразу при получении данных из сторонней базы обрезать пробелы?
|
|||
3
Ненавижу 1С
гуру
28.03.14
✎
11:23
|
"Полученный запросом из сторонней базы"
в некоторых сторонних базах есть функция TRIM |
|||
4
13_Mult
28.03.14
✎
11:23
|
(1) Долго
|
|||
5
13_Mult
28.03.14
✎
11:24
|
(2) Каким образом
(3) У 1С к сожалению нет такой |
|||
6
13_Mult
28.03.14
✎
11:25
|
(3) Прямое подключение не дают сделать
|
|||
7
13_Mult
28.03.14
✎
11:27
|
В javascript есть replace(/\s/g, '') но это работает со строками (
|
|||
8
Ненавижу 1С
гуру
28.03.14
✎
11:28
|
(6) "Полученный запросом из сторонней базы массив"
ну как-то же его получили |
|||
9
13_Mult
28.03.14
✎
11:29
|
В VBScript RegExp.Replace тоже не примет массив
|
|||
10
13_Mult
28.03.14
✎
11:29
|
(8) Через COM
|
|||
11
Ненавижу 1С
гуру
28.03.14
✎
11:30
|
(10) через COM из другой базы 1С что ли?
|
|||
12
13_Mult
28.03.14
✎
11:30
|
(8) я имел в виду к SQL не дают
|
|||
13
13_Mult
28.03.14
✎
11:31
|
(11) Так точно
|
|||
14
fvadim
28.03.14
✎
11:32
|
(9) а если скормить многострочный текст, т.е. каждую колонку лепить в одну строку и скармливать регэкспу?
|
|||
15
vvp91
28.03.14
✎
11:34
|
>> (0) Вопрос: Какой способ наиболее быстрый для удаления всех пробелов в Массиве и ТаблицеЗначений.
Самый быстрый - не удалять вообще. >> (0) Далее полученный результат будет использоваться в запросе. А как "результат" или оригинальная ТЗ будет использоваться в запросе? |
|||
16
13_Mult
28.03.14
✎
11:34
|
(14) тогда уж и СокрЛП в цикле по времени не больше займет
|
|||
17
fvadim
28.03.14
✎
11:35
|
(16) а сколько сокрлп занимает времени?
|
|||
18
13_Mult
28.03.14
✎
11:36
|
(15) Либо Менеджером либо параметром Список
|
|||
19
H A D G E H O G s
28.03.14
✎
11:36
|
(16) СокрЛП () для строк COM таблицы?
|
|||
20
13_Mult
28.03.14
✎
11:37
|
(17) 4,5 минут
|
|||
21
H A D G E H O G s
28.03.14
✎
11:38
|
(16) Вызывай функцию ОМ сторонней базы, которая вернет уже обрезанную таблицу
|
|||
22
H A D G E H O G s
28.03.14
✎
11:38
|
(20) Бред.
|
|||
23
13_Mult
28.03.14
✎
11:38
|
(19) )) нет конечно
|
|||
24
13_Mult
28.03.14
✎
11:38
|
(22) нет не бред!
|
|||
25
13_Mult
28.03.14
✎
11:39
|
(22) Иначе не запрашивал мнения общественности
|
|||
26
13_Mult
28.03.14
✎
11:41
|
(21) Тогда она там обрезать их долго будет
|
|||
27
H A D G E H O G s
28.03.14
✎
11:45
|
(26) Покажи код, как режешь
|
|||
28
13_Mult
28.03.14
✎
11:46
|
Я спрашиваю не про штатные 1с методы. А про обработку массивов другими, не 1совскими методами. (внешние компоненты например)
|
|||
29
13_Mult
28.03.14
✎
11:48
|
(27) Пока ни ка не режу. ТЗ перебирать, обрезать и обратно совать в ТЗ не вариант - долго.
|
|||
30
H A D G E H O G s
28.03.14
✎
11:48
|
(28) Помоему, ты штатные методы криво используешь.
|
|||
31
13_Mult
28.03.14
✎
11:50
|
Пробовал даже так
RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.Pattern = " "; RegExp.IgnoreCase = Истина; RegExp.Global = Истина; Для Каждого Стр Из Результат Цикл ИсходнаяСтрока = Стр.КодГ; RegExp.Replace(ИсходнаяСтрока, ""); НовСтр = ТЗ.Добавить(); НовСтр.КодНорм = RegExp.Replace(ИсходнаяСтрока, ""); КонецЦикла; также долго как и СокрЛП(). |
|||
32
fvadim
28.03.14
✎
11:53
|
(31) оно ж все пробелы убирает, не?
|
|||
33
13_Mult
28.03.14
✎
11:54
|
(32) да, именно это и надо.
|
|||
34
13_Mult
28.03.14
✎
11:54
|
Текст "Литой" без разделителей
|
|||
35
Heckfy
28.03.14
✎
11:55
|
(33) Вы уж определитесь, все или только с концов?
|
|||
36
13_Mult
28.03.14
✎
11:57
|
(35) В (0) написано "для удаления всех пробелов в Массиве и ТаблицеЗначений"
)) |
|||
37
fvadim
28.03.14
✎
11:58
|
(36) к чему тогда был упомянут СокрЛП ?
|
|||
38
13_Mult
28.03.14
✎
12:00
|
Как то я пользовался компонентой GameWithFire.ADOUtils
она очень быстро в ТЗ засовывает из огромных таблиц excel. Вот бы что то вроде неё для работы с массивами |
|||
39
Heckfy
28.03.14
✎
12:01
|
А сколько значений в ТЗ или Массиве возвращается?
|
|||
40
13_Mult
28.03.14
✎
12:03
|
(37) а у 1С есть ещё методы сократить пробелы у строки? (СтрЗаменить не в счет)
|
|||
41
13_Mult
28.03.14
✎
12:04
|
ушел на обед
|
|||
42
Heckfy
28.03.14
✎
12:06
|
(41) Пля... Ты взорвал мне моск... Приятного аппетита. И, лучше не возвращайся. :)
|
|||
43
13_Mult
28.03.14
✎
12:19
|
(42) есть у меня одна мысль. На стороне базы источника запилить СКД механизм получения таб документа и через построитель запроса получить ТЗ. Вроде как пробелы там должны обрезаться. Изврат конечно но попробовать надо.
|
|||
44
H A D G E H O G s
28.03.14
✎
12:26
|
(43) Что мешает там тупо получить ТЗ и обрезать ее?
|
|||
45
kiruha
28.03.14
✎
12:30
|
(0)
В 8.3 писали что существенно улучшена работа со строками Также вроде как появились регуляры |
|||
46
13_Mult
28.03.14
✎
12:30
|
(44) Если бы был метод обрезать целиком ТЗ то не было бы вопросов, а резать по одной строке долго.
|
|||
47
ChiginAV
28.03.14
✎
12:31
|
(0) А нельзя в сторонней базе хранить данные без этих самых "рандомных" пробелов до и после текста?
|
|||
48
13_Mult
28.03.14
✎
12:31
|
(45) надо глянуть (8.3 особо не пользовал)
|
|||
49
trad
28.03.14
✎
12:35
|
(0)
проверь такую идею &НаСервере Функция СокрЛП_ТЗ(ТЗ) Строка = ЗначениеВСтрокуВнутр(ТЗ); Пока Найти(Строка,"{""S"","" ")>0 Цикл Строка = СтрЗаменить(Строка,"{""S"","" ","{""S"","""); КонецЦикла; Пока Найти(Строка," ""}")>0 Цикл Строка = СтрЗаменить(Строка," ""}","""}"); КонецЦикла; ТЗ=ЗначениеИзСтрокиВнутр(Строка); Возврат ТЗ; КонецФункции |
|||
50
13_Mult
28.03.14
✎
12:36
|
(47) У меня вообще сомнения что в ней дадут что то сделать. Так бы я в той базе убил бы все пробелы, запретил бы их ставить и нет проблем )). Поэтому и бьёмся.
|
|||
51
ChiginAV
28.03.14
✎
12:43
|
(50) Ну тогда прямой SQL запрос с REPLACE
|
|||
52
13_Mult
28.03.14
✎
12:54
|
(49) Спасибо, Функция конечно зачетная (ни когда так не пробовал ;)). К сожалению тоже долго, циклы.
(51) Ах, если бы дали доступ )). Там свои враждебно настроенные сидят )) Наверно будем пробивать доступ к серверу сиквела. Пока отдам как есть. Будут говорить долго - скажу давайте доступ к серверу. Всем спасибо за предложения! |
|||
53
fvadim
28.03.14
✎
12:55
|
|
|||
54
fvadim
28.03.14
✎
12:58
|
Расшифрую
СокрЛП 1000000 элементов 7,25 6,43 5,09 - 18.77% Замена по всему массиву регулярным выражением 1,45 0,93 1,78 - 4.16 % |
|||
55
13_Mult
28.03.14
✎
13:07
|
(53) (54) Точно, как я сам не догадался после чтения (49)
Спс. Наверно так и сделаю. Еще раз всем СПС, тему можно закрывать. |
|||
56
13_Mult
28.03.14
✎
13:08
|
Ушел тестить.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |