Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
я понимаю, но я когда использую {-Variable.имя переменной-}, я же не обращаюсь к ней, а просто собираю строку, для дальнейшей записи данных в excel, чтобы в итоге получилась строка типа {-Variable.cur_company_name-}{-String.Tab-}{-Variable.cur_company_adress-}{-String.Tab-}{-Variable.cur_company_phones-}
я понимаю, но я когда использую {-Variable.имя переменной-}, я же не обращаюсь к ней, а просто собираю строку, для дальнейшей записи данных в excel, чтобы в итоге получилась строка типа {-Variable.cur_company_name-}{-String.Tab-}{-Variable.cur_company_adress-}{-String.Tab-}{-Variable.cur_company_phones-}
Посмотрел код.
Всё там сводится к формированию нескольких переменных для дальнейшего добавления в табличку.
Сокращённо это выглядеть должно примерно так:
ща попробую разобраться, ато я строку добавляю в ексель кубиком "{-Variable.str_for_excel-}" , вот все эти манипуляции и делал чтобы получить строку и ее добавить
ща попробую разобраться, ато я строку добавляю в ексель кубиком "{-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());
Но, если Вы настаиваете на использовании макросов - тогда ничем помочь не могу - там тогда нужно экранировать символы, и какие нужно экранировать, какие не нужно - сложно разобраться - в результате такой код будет считаться не надёжным - из-за этого не рекомендуется использовать макросы от слова СОВСЕМ в коде.
Если уж очень хочется - тогда нужно создать отдельные переменные, в которых хранить макросы, и тогда уже эти переменные использовать в нужных местах кода в нормальном виде.
Избавьтесь от макросов полностью в коде. Как это можно сделать на примере Вашего кода - вот пример реализации:
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 строчками кода )))) учиться и учиться еще )