Имя: Пароль:
1C
1С v8
как из структуры полигон вытащить координаты точек в виде таблицы?
0 Ivan_495
 
22.04.16
14:57
Подскажите как проще из струrтуры полигон вытащить координаты точек в виде таблицы?

"POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))"

нужно
x                             y
20.5102309726728              54.7257118843514
20.5102649674551              54.7257099207726
1 Timon1405
 
22.04.16
15:04
ВходСтрока = "POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))";
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultiLine = Ложь; //Многострочный режим
Паттерн = "(\d{1,2}\.\d+)\s+(\d{1,2}\.\d+)";
RegExp.Pattern = Паттерн;
МассивСовпадений =RegExp.Execute(ВходСтрока);
Для Каждого ЭлементМассива из  МассивСовпадений Цикл
    Икс = ЭлементМассива.SubMatches(0);
    Игрек = ЭлементМассива.SubMatches(1);
    Сообщить(""+Икс+" "+Игрек);
КонецЦикла
дальше сам
2 Ivan_495
 
22.04.16
15:10
(1) благодарю. круто
3 Локи-13
 
22.04.16
15:17
еще можно
СтрРазделить
вначале по "," потом по " "
4 RomanYS
 
22.04.16
15:28
Стр = "POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))";
    
    Стр = СтрЗаменить(Стр, "POLYGON ((", "");
    Стр = СтрЗаменить(Стр, "))", "");
    Стр = СтрЗаменить(Стр, " ", ",");
    Стр = СтрЗаменить(Стр, ",,", " ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ");
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    0 КАК x,
    |    0 КАК y
    |ГДЕ
    |    ЛОЖЬ
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ " + Стр;
    
    Результат = Запрос.Выполнить();
    ТЗ = Результат.Выгрузить();
    
    ТЗ.ВыбратьСтроку();
5 mingw
 
22.04.16
15:46
Классика жанра. Самая быстрая.

    Стр = "POLYGON ((20.5102309726728 54.7257118843514, 20.5102649674551 54.7257099207726, 20.5102612453575 54.7256894025381, 20.5102272692606 54.7256914689476, 20.5102309726728 54.7257118843514))";
    Стр = СтрЗаменить(Стр, "POLYGON ((", "");
    Стр = СтрЗаменить(Стр, "))", "");
    Стр = СтрЗаменить(Стр, ", ", Символы.ПС);
    
    Для Номер=1 По СтрЧислоСтрок(Стр) Цикл
        Подстрока = СтрПолучитьСтроку(Стр, Номер);
        Подстрока = СтрЗаменить(Подстрока, " ", Символы.ПС);
        Сообщить("Х="+СтрПолучитьСтроку(Подстрока, 1)+", Y="+СтрПолучитьСтроку(Подстрока, 2));
    КонецЦикла;