[SOLVED]Ошибка при переносе строки "Символ новой строки в константе"

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
Весь день убил на эту долбаную ошибку и не могу найти решения, подскажите пожалуйста!!!

На 1 скрине вроде все отрабатывает 22 строка добавляем перенос на новую строку (без него все работает без ошибок)

1 кубик.png


В коде из 2го скрина и выходит ошибка 23 строка

2 кубик где ошибка.png


ну и скрин самой ошибки

Сама ошибка.png


нужно просто переносить строку внутри ячейки после каждого номера

Excel.png
 
Last edited:

BAZAg

Client
Joined
Nov 8, 2015
Messages
1,798
Reaction score
2,483
Points
113
В коде переменные нужно указывать в виде project.Variables["имя переменной"].Value, использование {-Variable.имя переменной-} недопустимо.
 

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,725
Points
113
странно в одном коде и project.Variables["имя переменной"].Value используется и тут же {-Variable.имя переменной-} как так ?
 

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
В коде переменные нужно указывать в виде project.Variables["имя переменной"].Value, использование {-Variable.имя переменной-} недопустимо.
я понимаю, но я когда использую {-Variable.имя переменной-}, я же не обращаюсь к ней, а просто собираю строку, для дальнейшей записи данных в excel, чтобы в итоге получилась строка типа {-Variable.cur_company_name-}{-String.Tab-}{-Variable.cur_company_adress-}{-String.Tab-}{-Variable.cur_company_phones-}
 

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
странно в одном коде и project.Variables["имя переменной"].Value используется и тут же {-Variable.имя переменной-} как так ?
{-Variable.имя переменной-} я тут не обращаюсь к переменной, а записываю в строку, чтобы позднее записать в excel
 

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,725
Points
113
я понимаю, но я когда использую {-Variable.имя переменной-}, я же не обращаюсь к ней, а просто собираю строку, для дальнейшей записи данных в excel, чтобы в итоге получилась строка типа {-Variable.cur_company_name-}{-String.Tab-}{-Variable.cur_company_adress-}{-String.Tab-}{-Variable.cur_company_phones-}
таких записей нет в c# , это формат макросов зенки.
 

BAZAg

Client
Joined
Nov 8, 2015
Messages
1,798
Reaction score
2,483
Points
113
нужно просто переносить строку внутри ячейки после каждого номера
Можете попробовать вместо Environment.NewLine использовать + "\n".
 
  • Thank you
Reactions: meriin

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
таких записей нет в c# , это формат макросов зенки.
ну при этом все работает) если убрать перенос из 1 скрина)
 

Phoenix78

Client
Read only
Joined
Nov 6, 2018
Messages
11,789
Reaction score
5,725
Points
113
ну при этом все работает) если убрать перенос из 1 скрина)
оно работает в проджект мейкере. разрабы штанишки сделали. кстати очень зря....
 

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
Можете попробовать вместо Environment.NewLine использовать + "\n".
изначально так и пробовал, та же самая ошибка
 

BAZAg

Client
Joined
Nov 8, 2015
Messages
1,798
Reaction score
2,483
Points
113
изначально так и пробовал, та же самая ошибка
Сбросьте весь код с этих двух кубиков - проверю (шаблон не подойдёт, Вы используете другую версию, чем у меня).
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
2й код. попробуй заменить - на \- или фигурки по этому же принципу
 
  • Thank you
Reactions: Onizuka

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18

BAZAg

Client
Joined
Nov 8, 2015
Messages
1,798
Reaction score
2,483
Points
113
51995

Попробуйте, может быть сразу в коде добавлять данные в табличку, не используя макросы.
Code:
IZennoTable  table = project.Tables["Таблица 1"];
string person = "Вася";
string phone = "+1274465465" + ";" + "\n";
phone += "+1274465465" + ";" + "\n";
phone += "+1274465465" + ";" + "\n";
phone += "+1274465465" + ";" + "\n";

lock (SyncObjects.TableSyncer) {

    table.AddRow(new[]{person, phone});
}
 

BAZAg

Client
Joined
Nov 8, 2015
Messages
1,798
Reaction score
2,483
Points
113
Посмотрел код.
Всё там сводится к формированию нескольких переменных для дальнейшего добавления в табличку.
Сокращённо это выглядеть должно примерно так:
Code:
string str_phones = "+38555556646546;" + "\n" + "+38465456346489" + "; " + "\n";
string str_all_socials  =  "vk.com; " + "\n" +  "fb.com"+ ";"+ "\n";

IZennoTable  table = project.Tables["Таблица 1"];
string[] data = new[] {str_phones, str_all_socials};
lock (SyncObjects.TableSyncer) {
    table.AddRow(data);
}
 
  • Thank you
Reactions: Onizuka

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
2й код. попробуй заменить - на \- или фигурки по этому же принципу
че-то нето в итоге выходит :

Лесной бункер{/-String.Tab/-}{/-Variable.cur_company_phones/-} все в 1 колонку идет в екселе
 

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
View attachment 51995
Попробуйте, может быть сразу в коде добавлять данные в табличку, не используя макросы.
Code:
IZennoTable  table = project.Tables["Таблица 1"];
string person = "Вася";
string phone = "+1274465465" + ";" + "\n";
phone += "+1274465465" + ";" + "\n";
phone += "+1274465465" + ";" + "\n";
phone += "+1274465465" + ";" + "\n";

lock (SyncObjects.TableSyncer) {

    table.AddRow(new[]{person, phone});
}
ща попробую разобраться, ато я строку добавляю в ексель кубиком "{-Variable.str_for_excel-}" , вот все эти манипуляции и делал чтобы получить строку и ее добавить
 

doc

Client
Joined
Mar 30, 2012
Messages
8,685
Reaction score
4,648
Points
113
че-то нето в итоге выходит :

Лесной бункер{/-String.Tab/-}{/-Variable.cur_company_phones/-} все в 1 колонку идет в екселе
\- а не /-
 

BAZAg

Client
Joined
Nov 8, 2015
Messages
1,798
Reaction score
2,483
Points
113
ща попробую разобраться, ато я строку добавляю в ексель кубиком "{-Variable.str_for_excel-}" , вот все эти манипуляции и делал чтобы получить строку и ее добавить
Избавьтесь от макросов полностью в коде. Как это можно сделать на примере Вашего кода - вот пример реализации:
C#:
string str_for_excel = string.Empty;
string query_fields = project.Variables["query_fields"].Value;
string name = "Название";
string adress = "адрес";
string phones = "телефоны";
string website = "сайт";
string email = "email";
string social = "социальные сети"; 
string mid_rating = "средняя оценка";
string advertisement_link = "ссылка объявления";
string str_all_socials = string.Empty;

string vk = project.Variables["cur_company_vk"].Value;
string fb = project.Variables["cur_company_facebook"].Value;
string inst = project.Variables["cur_company_instagramm"].Value;

List<string> temp = new List<string>();
//Проверяем какие поля ввел пользователь во входящих настройках
if(query_fields.Contains(name)) temp.Add(project.Variables["cur_company_name"].Value);
if(query_fields.Contains(adress)) temp.Add(project.Variables["cur_company_adress"].Value);
if(query_fields.Contains(phones))  temp.Add(project.Variables["cur_company_phones"].Value);
if(query_fields.Contains(website))  temp.Add(project.Variables["cur_company_website"].Value);
if(query_fields.Contains(email))    temp.Add(project.Variables["cur_company_email"].Value);
if(query_fields.Contains(social)){
    List<string> all = new List<string>();
    if(!string.IsNullOrEmpty(vk)) all.Add(vk);//проверяем есть ли вк 
    if(!string.IsNullOrEmpty(fb)) all.Add(fb); //проверяем есть ли фб
    if(!string.IsNullOrEmpty(inst)) all.Add(inst); //проверяем есть ли инстаграм  
    str_all_socials = string.Join(";" , all);
    temp.Add(str_all_socials);
  
}
if(query_fields.Contains(mid_rating))  temp.Add(project.Variables["cur_company_mid_rating"].Value);
if(query_fields.Contains(advertisement_link))  temp.Add(project.Variables["cur_link"].Value);

IZennoTable  table = project.Tables["Таблица 1"];
lock (SyncObjects.TableSyncer) table.AddRow(temp.ToArray());
Но, если Вы настаиваете на использовании макросов - тогда ничем помочь не могу - там тогда нужно экранировать символы, и какие нужно экранировать, какие не нужно - сложно разобраться - в результате такой код будет считаться не надёжным - из-за этого не рекомендуется использовать макросы от слова СОВСЕМ в коде.
Если уж очень хочется - тогда нужно создать отдельные переменные, в которых хранить макросы, и тогда уже эти переменные использовать в нужных местах кода в нормальном виде.
 
  • Thank you
Reactions: Onizuka

Onizuka

Client
Joined
Sep 4, 2019
Messages
54
Reaction score
27
Points
18
Избавьтесь от макросов полностью в коде. Как это можно сделать на примере Вашего кода - вот пример реализации:
C#:
string str_for_excel = string.Empty;
string query_fields = project.Variables["query_fields"].Value;
string name = "Название";
string adress = "адрес";
string phones = "телефоны";
string website = "сайт";
string email = "email";
string social = "социальные сети";
string mid_rating = "средняя оценка";
string advertisement_link = "ссылка объявления";
string str_all_socials = string.Empty;

string vk = project.Variables["cur_company_vk"].Value;
string fb = project.Variables["cur_company_facebook"].Value;
string inst = project.Variables["cur_company_instagramm"].Value;

List<string> temp = new List<string>();
//Проверяем какие поля ввел пользователь во входящих настройках
if(query_fields.Contains(name)) temp.Add(project.Variables["cur_company_name"].Value);
if(query_fields.Contains(adress)) temp.Add(project.Variables["cur_company_adress"].Value);
if(query_fields.Contains(phones))  temp.Add(project.Variables["cur_company_phones"].Value);
if(query_fields.Contains(website))  temp.Add(project.Variables["cur_company_website"].Value);
if(query_fields.Contains(email))    temp.Add(project.Variables["cur_company_email"].Value);
if(query_fields.Contains(social)){
    List<string> all = new List<string>();
    if(!string.IsNullOrEmpty(vk)) all.Add(vk);//проверяем есть ли вк
    if(!string.IsNullOrEmpty(fb)) all.Add(fb); //проверяем есть ли фб
    if(!string.IsNullOrEmpty(inst)) all.Add(inst); //проверяем есть ли инстаграм 
    str_all_socials = string.Join(";" , all);
    temp.Add(str_all_socials);
 
}
if(query_fields.Contains(mid_rating))  temp.Add(project.Variables["cur_company_mid_rating"].Value);
if(query_fields.Contains(advertisement_link))  temp.Add(project.Variables["cur_link"].Value);

IZennoTable  table = project.Tables["Таблица 1"];
lock (SyncObjects.TableSyncer) table.AddRow(temp.ToArray());
Но, если Вы настаиваете на использовании макросов - тогда ничем помочь не могу - там тогда нужно экранировать символы, и какие нужно экранировать, какие не нужно - сложно разобраться - в результате такой код будет считаться не надёжным - из-за этого не рекомендуется использовать макросы от слова СОВСЕМ в коде.
Если уж очень хочется - тогда нужно создать отдельные переменные, в которых хранить макросы, и тогда уже эти переменные использовать в нужных местах кода в нормальном виде.
Сделал немного иначе все заработало, спасибо! Ваш код тоже просмотрю и опробую=) Да использовать макросы и не хотелось, просто добавлял строки в ексель через кубик, а там разделитель столбцов и есть максрос, из-за этого без них собрать строку невозможно было и получился такой геморой, надо было просто разобраться как добавлять данные в таблицу через С#, в другом блоке вообще убрал 6 кубиков и заменил ровно 2 строчками кода )))) учиться и учиться еще )

C#:
//Проверяем какие поля ввел пользователь во входящих настройках
if(query_fields.Contains(name)) {
    str_for_excel = project.Variables["cur_company_name"].Value;
}

if(query_fields.Contains(adress)&&project.Variables["cur_company_adress"].Value!="") {
    str_for_excel = str_for_excel + "tab" + project.Variables["cur_company_adress"].Value;
    
}

if(query_fields.Contains(phones)&&project.Variables["cur_company_phones"].Value!="") {
    str_for_excel = str_for_excel + "tab" + project.Variables["cur_company_phones"].Value;
    
}

if(query_fields.Contains(website)&&project.Variables["cur_company_website"].Value!="") {
    str_for_excel = str_for_excel + "tab" + project.Variables["cur_company_website"].Value;
}

if(query_fields.Contains(email)&&project.Variables["cur_company_email"].Value!="") {
    str_for_excel = str_for_excel + "tab" + project.Variables["cur_company_email"].Value;
}

if(query_fields.Contains(social)) {
    //проверяем есть ли вк
    if(project.Variables["cur_company_vk"].Value!="") {
        str_all_socials = project.Variables["cur_company_vk"].Value;
    }
    //проверяем есть ли фб
    if(project.Variables["cur_company_facebook"].Value!="") {
        str_all_socials = str_all_socials + ";"  + Environment.NewLine + project.Variables["cur_company_facebook"].Value;
    }
    //проверяем есть ли инстаграм
    if(project.Variables["cur_company_instagramm"].Value!=""){
        str_all_socials = str_all_socials + ";"  + Environment.NewLine + project.Variables["cur_company_instagramm"].Value;
    }
    //формируем строку с соц. сетями, // добавить перенос строки
    
    str_for_excel = str_for_excel + "tab" + str_all_socials;
    
}

if(query_fields.Contains(mid_rating)&&project.Variables["cur_company_mid_rating"].Value!="") {
    str_for_excel = str_for_excel + "tab" + project.Variables["cur_company_mid_rating"].Value;
}

if(query_fields.Contains(advertisement_link)&&project.Variables["cur_link"].Value!="") {
    str_for_excel = str_for_excel + "tab" + project.Variables["cur_link"].Value;
}

table_res.AddRow(str_for_excel);
 
  • Thank you
Reactions: BAZAg

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)