Классическое упражнение по программированию.
Прежде чем смотреть решение, попробуйте написать сами, проверьте свой уровень.
Мне понадобилось 20 минут, чтобы набросать костяк и еще 10 минут, чтобы добиться точного соответствия.
Результат с исходным кодом сравнивал с помощью сравнения файлов. Тексты действительно идентичны.
Можно, конечно, попробовать вариант с оператором «Выполнить», но и так неплохо.
Суть решения понятна.
Код = "
|Для Инд = 1 По 2 Цикл
|Если Инд = 2 Тогда
|Сообщить(Код);
|Иначе
|Р = ""Код = """""";
|Для ИндС = 1 По СтрДлина(Код) Цикл
|Символ = Сред(Код, ИндС, 1);
|Если Символ = Символы.ПС Тогда
|Р = Р + Символы.ПС + ""|"";
|ИначеЕсли Символ = """""""" Тогда
|Р = Р + """""""""""";
|Иначе
|Р = Р + Символ;
|КонецЕсли;
|
|КонецЦикла;
|Р = Р + """""";"";
|Сообщить(Р);
|КонецЕсли;
|КонецЦикла;";
Для Инд = 1 По 2 Цикл
Если Инд = 2 Тогда
Сообщить(Код);
Иначе
Р = "Код = """;
Для ИндС = 1 По СтрДлина(Код) Цикл
Символ = Сред(Код, ИндС, 1);
Если Символ = Символы.ПС Тогда
Р = Р + Символы.ПС + "|";
ИначеЕсли Символ = """" Тогда
Р = Р + """""";
Иначе
Р = Р + Символ;
КонецЕсли;
КонецЦикла;
Р = Р + """;";
Сообщить(Р);
КонецЕсли;
КонецЦикла;
Идея написать такую программу возникла у меня, когда я прочитал про сборник программ "Hello World" на разных языках программирования, в том числе и на 1с.
А вы за сколько написали такую программу?
Может есть варианты покороче (кроме Выполнить - неспортивно), хотя для коллекции можете написать и с Выполнить - включу в статью.
По здравому размышлению я подумал, что первый цикл в моем коде лишний. А второй цикл можно заменить на функцию "СтрЗаменить".
Путем оптимизации у меня получилась вот такая программка в две строчки:
Код = "Сообщить(""Код = """""" + СтрЗаменить(Код, """""""", """""""""""") + """""";""); Сообщить(Код);";
Сообщить("Код = """ + СтрЗаменить(Код, """", """""") + """;"); Сообщить(Код);