Имя: Пароль:
1C
 
Есть ли какой-нить редактор строки в строке в строке (кавычки в кавычках)?
0 SeiOkami
 
20.09.16
10:52
Имеем строку, которую передаём как параметр в процедуру. В тексте строки есть строка. А в этой строке есть другая строка. А где-то там ещё лежит знак кавычки. Так вот: есть ли что-нить облегчающее работу с такими вложенными строками, а то постоянно путаюсь в кавычках
1 Лефмихалыч
 
20.09.16
10:53
Новый COMОбъект("Vbscript.Regexp")
2 Волшебник
 
модератор
20.09.16
10:53
извращенец...
3 Волшебник
 
модератор
20.09.16
10:54
а = "строка1";
б = "строка 2" + а + "строка 2.2"
в = б + а;
и т.д.
4 НЕА123
 
20.09.16
10:55
(0)
конструктор запросов разок мне помог.
5 SeiOkami
 
20.09.16
10:56
(3), это что-то не то. в твоём примере не будет в строке вложенной строки. Это будут просто сложенные строки
6 SeiOkami
 
20.09.16
10:57
(4), я думал о нём, но как его применить для произвольных строк. Он же постоянно проверяет на соответствие языку запросов
7 SeiOkami
 
20.09.16
10:58
Сделал обработку с такой функцией:

Функция ОбернутьСтрокуВКавычки(Знач ОборачиваемаяСтрока)
    
    ОборачиваемаяСтрока    = СтрЗаменить(ОборачиваемаяСтрока, """", """""");
    ОборачиваемаяСтрока    = """" + ОборачиваемаяСтрока + """";
    
    Возврат ОборачиваемаяСтрока;
    
КонецФункции


Но как распарсить обратно недогоняю
8 f_vadim
 
20.09.16
10:58
(6) ВЫБРАТЬ "строка"

попробуй и удивись
9 Garykom
 
гуру
20.09.16
11:00
Есть JSON и XML нафуя этот изврат с "вложенными строками" ?
10 SeiOkami
 
20.09.16
11:00
(8), ну так это будет ОДНА вложенная в другую строка. Как мне в ней ещё один редактор строк запустить?
11 Лефмихалыч
 
20.09.16
11:01
(7) а какая цель в этом всем?
12 aleks_default
 
20.09.16
11:01
(9)он свой XML изобретает
13 Лефмихалыч
 
20.09.16
11:02
да, и самый православный способ распарсивать - это написать конечный автомат для этого.
14 f_vadim
 
20.09.16
11:03
(10) тут я уже перестал понимать чего тебе нужно
15 SeiOkami
 
20.09.16
11:09
Например:
Новый Структура("Запрос", "Новый Запрос(""Выбрать Ссылка Из Справочник.Валюты Где Код = """"ааа"""""")")

В результате будет создана структура с запросом.

Но редактировать такую строку неудобно.
16 Garykom
 
гуру
20.09.16
11:11
Идиотизм
17 xafavute
 
20.09.16
11:12
(16) например параметры в бат файле
18 Garykom
 
гуру
20.09.16
11:15
(17) угу параметры в бат файле с запросами...

для батников, точнее для автоматического создания bat файлов там же просто делаем переменную Кавычки = """"; и потом плюсуем в строку столько раз сколько нуна...
19 Garykom
 
гуру
20.09.16
11:16
(18)+ еще лучше сделать короткую функцию Кав(КоличествоКавычек) и все
20 SeiOkami
 
20.09.16
11:19
(18), не важно зачем. Важно как.
21 f_vadim
 
20.09.16
11:22
(20) зачем тоже важно. может ты выбрал неправильный путь.
можно ограничить окавычивание первым уровнем, но тут тоже легко запутаться

Сообщить(СтрШаблон("Новый Запрос(""%1"")", СтрШаблон("Выбрать * ГДЕ Код = ""%1""", "ааа")))
22 Волшебник
 
модератор
20.09.16
11:23
(5) Ну добавь ты кавычки
23 1dvd
 
20.09.16
11:24
Мы сделали редактор строки внутри редактора строки, чтобы вы могли редактировать строку, пока редактируете строку
24 Лефмихалыч
 
20.09.16
11:24
(15) с кавычками горя хапнешь. Выбери другой формат хранения.
JSON, xml, да хоть ЗначениеВСтрокуВнутр
25 SeiOkami
 
20.09.16
11:25
(22) -> (7)
26 SeiOkami
 
20.09.16
11:25
(24), тут нюанс в том, что я не могу выбрать другой формат. Нужно использовать именно кавычки в кавычках и т.д.
27 f_vadim
 
20.09.16
11:27
(26) замени кавычки на некавычки - апострофы, квадратные скобки, перед вызовом делай обработку с заменой.
28 Лефмихалыч
 
20.09.16
11:28
(27) что это даст?
29 xafavute
 
20.09.16
11:28
кстати сам конструктрор запроса есть редактор строки в кавычках
30 xafavute
 
20.09.16
11:29
(28) читабельность
31 f_vadim
 
20.09.16
11:31
(28) не нужно считать количество кавычек. переложить это на программную обработку.
32 Лефмихалыч
 
20.09.16
11:32
(30) так ему не глазами же. А программно абсолютно пофиг, кавычка там или скобка.
(26) тогда - конечный автомат, который посимвольно читает строку и разбирает ее на составляющие. Туева хуча скучного кода - да. Но, раз условия задачи неизменные, живи с этим.
33 SeiOkami
 
20.09.16
11:34
(32), живет надежда на то, что где-то это уже есть
34 Лефмихалыч
 
20.09.16
11:35
(33) на ИС смотрел?
35 SeiOkami
 
20.09.16
11:35
(34), ничего не нагуглилось. Но может нужно суметь сформулировать эту фигню
36 Лефмихалыч
 
20.09.16
11:41
(35) откуда ты эти строчки в строчках-то получаешь?
37 SeiOkami
 
20.09.16
11:49
(36), сам собираю. Вручную. А хотелось бы редактором
38 Лефмихалыч
 
20.09.16
11:52
(37) почему тогда (26)? Собирай json и не люби мозг!
39 SeiOkami
 
20.09.16
11:53
(38), я создаю строки, которые передаю в метод, который я не могу изменить. Чтобы удобнее создавать строки нужен редактор
40 Лефмихалыч
 
20.09.16
11:56
(39) чо-т ты путаешься в показаниях. Раньше ты говорил, что проблема распарсить такую строку обратно в смысл, а сейчас ты говоришь, что проблема закодировать.
Хрена ли там кодировать?

Строка = ЗакодироватьВХлам(ЗакодироватьВХлам(Одно)+ЗакодироватьВХлам(ЗакодироватьВХлам(другое)+"="+ЗакодироватьВХлам(Третье)));


Функция ЗакодироватьВХлам(Строка)
  Возврат """"+Строка+"""";
КонецФункции
41 SeiOkami
 
20.09.16
12:00
(40), распарсить нужно, чтобы сделать удобный редактор. Берешь редактор, собираешь в нём супер-строку. А потом когда нужно её в этом же редакторе и корректируешь.
42 Garykom
 
гуру
20.09.16
12:01
Чем то напоминает "сначала создаем себе трудности, а потом героически их преодолеваем"©
43 SeiOkami
 
20.09.16
12:03
(42), я уже понял, что ты ничем не можешь помочь
44 Garykom
 
гуру
20.09.16
12:06
(43) Шо даже (18) и (19) не понял?
45 SeiOkami
 
20.09.16
12:08
(44), прочти (0)
суть как раз в том, чтобы НЕ считать кавычки. А ты предлагаешь их считать
46 Garykom
 
гуру
20.09.16
12:17
Мдя... действительно не понял... что функцию то можно сделать "глобальной" и передавать

Новый Структура("Запрос", "Новый Запрос(Кавычки(1)+"Выбрать Ссылка Из Справочник.Валюты Где Код = "+Кавычки(1)+"ааа"+Кавычки(1)+")")
47 Garykom
 
гуру
20.09.16
12:20
(46)+ Сорри слегка ошибся в коде, но суть что внутри строки передается не готовая строка, а строка с функциями для сборки.
48 SeiOkami
 
20.09.16
12:28
(47), это всё не про то, забей
49 xafavute
 
20.09.16
12:32
Лучше так
СтрВКавычках(Новый Запрос(СтрВКавычках(Выбрать Ссылка Из Справочник.Валюты Где Код = [ааа])));
50 xafavute
 
20.09.16
12:33
вернее так
СтрВКавычках(Новый Запрос(СтрВКавычках("Выбрать Ссылка Из Справочник.Валюты Где Код = [ааа]")));
51 xafavute
 
20.09.16
12:35
последний вариант
СтрВКавычках("Новый Запрос(СтрВКавычках([Выбрать Ссылка Из Справочник.Валюты Где Код = [ааа]]))");
Хотя лажа получается, скобочки нужно теперь считать
52 ixijixi
 
20.09.16
13:00
53 Garykom
 
гуру
20.09.16
13:19
Новый Структура("Запрос", "Новый Запрос( СтрокаВКавычках("Выбрать Ссылка Из Справочник.Валюты Где Код = СтрокаВКавычках(ааа)")
)")

Но считать скобки ничем не лучше чем считать кавычки... Поэтому JSON и не париться


{
"Запрос":{
  "Новый Запрос":"Выбрать Ссылка Из Справочник.Валюты Где Код = \"aaa\""
  }
}
54 SeiOkami
 
20.09.16
13:44
(53), совершенно не понимаю к чему ты это написал. Как JSON поможет мне редактировать строки с экранированием кавычек?
55 Garykom
 
гуру
20.09.16
13:50
(54) Функция которая твой текст JSON переведет в строку нужного вида с нужным числом кавычек
56 Garykom
 
гуру
20.09.16
13:52
(55)+ Суть что пишешь текст в JSON, затем перед отправкой на сервер/другой модуль СтрокаИзJSON(ТекстJSON) и это уже и отправляешь.
57 trdm
 
20.09.16
14:00
(0) Передавай список.
58 gitotuta
 
20.09.16
14:03
(53) У тебя неверный джсон, новый запрос это НЕ реквизит
59 Garykom
 
гуру
20.09.16
14:05
(58) Не путаем пример/демо с готовым рабочим кодом?
60 gitotuta
 
20.09.16
14:06
(59) у тебя пример оторван от жизни
61 Garykom
 
гуру
20.09.16
14:13
(60) Вся ветка оторвана от жизни и что? Поймите если увидят в конфе/проге подобный черный ход/дырку типа которой хочет использовать ТС?

При нормальном проектировании/разработке системы таких извратов просто не требуется.
62 gitotuta
 
20.09.16
14:24
(61) Набери этот же пример в джсон
AdBlock убивает бесплатный контент. 1Сергей