Добавить строку в файл

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
Стоит простая задача: добавлять строки в txt и xlsx файлы.

Суть проблемы в том, что у меня шаб работает в цикле, и если добавлять строку стандартными методами зенки, то есть некоторый момент инерции, на запись нужно время, и при работе шаба следующий цикл проходит тогда, колгда еще не зафиксировалась запись предыдущего. Если ставить паузу, то стабильность работы достигается только с паузой 5-10 секунд, что очень много. Подсказали, что очень быстро добавлять строку через C#, но я в нем не разбираюсь пока вообще. поиском поискал, но чисто сниппет на добавление строки не нашел, только более сложные с еще какими-то действиями, а вычленить нужное из текста сниппета не могу


Напишите пожалуйста текст сниппета на добавление строки в txt из переменной "var" и на добавление строки в xlsx в столбец А из переменной var1, в столбец В из переменной var2


Да, имя txt и xslx берется из переменной, полученной в результате парсинга xml, выглядит она так:

{-Xml.catalog.shop[{-Variable.scet_Count-}].vendor-}.txt

{-Variable.scet_Count-} - это внутренняя переменная, ее наверное тоже нужно прописать в сниппете
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Мой совет: используй Mysql БД
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
можно чуть более развернуто, я неахти как разбираюсь покачто
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Писать изменения в базу данных какую-то (на локалке или на серваке), а другим шаблоном читать данные из базы.
Но тут нужен не опыт в постере, а мало мальский опыт с Mysql
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
а какие минусы решения на C#?

а может быть стандартными методами моя проблема решается? Слишком долгая и рандомная по кол-ву секунд синхронизация с файлом. то за секунду запись делает, то за 3, и уже следующий цикл идет, а у меня предыдущий еще не записался.

решать установкой пауз невозможно - циклов тысячи, и выполнение растягивается очень
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
а какие минусы решения на C#?

а может быть стандартными методами моя проблема решается? Слишком долгая и рандомная по кол-ву секунд синхронизация с файлом. то за секунду запись делает, то за 3, и уже следующий цикл идет, а у меня предыдущий еще не записался.

решать установкой пауз невозможно - циклов тысячи, и выполнение растягивается очень
запись в список или таблицу идёт мновенная. Они в свою очередь висят в памяти и время от времени обновляют файлы. Но это не важно, потому что работа со списками и таблицами опять же идёт из экземпляров, которые висят в памяти. Так что не важно, 1 секунда или 10 обновление в файле, данные н епотеряются
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Перечитал вопрос. Все проще на самом деле.
задержка записи в файл существует чтобы не задалбывать жесткий диск. При этом все изменения пишутся в момент их занесения в копию таблицы/списка в оперативной памяти.

Для того чтобы два шаблона имели доступ к одной копии списка/таблицы в оперативке и могли ловить молниеносно изменения, сделанные друг другом, достаточно просто в обоих шаблонах ОДИНАКОВО привязать таблицу к файлу. И поставить в свойствах таблицы галку "Сохранять изменения в файл" и "Загружать из файла".
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
суть в чем. я не могу поставить такую галку, т.к. имя файла - переменная, содержание которой парсится из Xml во время работы шаба. Спарсили переменную -> добавили данные в список, изменили переменную -> добавили данные в (другой уже и по другому адресу находящийся) список.

Происходит ошибка что в ПМ что в зенке, когда я оставляю список, привязанный к txt, имя и адрес которого обозначен в переменной, значение которой появляется только о время выполнения шаба. Вот пример имени: {-Xml.catalog.shop[{-Variable.scet_Count-}].vendor-}.txt
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
@stmult
И все таки проблема. Подскажите, может быть что-то не так в моем алгоритме.

Дано:
Xml документ (фид с интернет магазина), в котором есть параметр {-Xml.catalog.shop[0].vendor-} и {-Xml.catalog.shop[0].model-}. Если сменить внутри этих параметров "0" на "1", то их значения сменятся, если сменить на 2, то подставятся уже следующие, и так далее. Мне нужно спарсить все значения этих параметров путем перебора цифр, которые я подставляю переменной, получается переменная в переменной:
{-Xml.catalog.shop[{-Variable.scet_Count-}].vendor-}, где scet_Count - это переменная, которая в цикле увеличивается на единицу счетчиком.

Я параметр {-Xml.catalog.shop[0].vendor-} пишу в имя txt при привязывании списка к файлу, а {-Xml.catalog.shop[0].model-} добавляю строкой в этот список и потом снова список привязываю к txt. Это производитель и модель товара. Путем перебора переменных у меня получается набор файлов txt по кол-ву производителей в xml документе, каждый из этих файлов содержит модели товаров по этому производителю.

Вот как я это реализую:

Привязать список к файлу (с созданием при его отсутствии) {-Xml.catalog.shop[{-Variable.scet_Count-}].vendor-}.txt-> Добавление строки в список {-Xml.catalog.shop[{-Variable.scet_Count-}].model-} -> Привязать список к файлу (чтобы данные из списка попали в txt файл) -> Увеличиваем счетчик по переменной scet_Count -> цикл начинается по новой до тех пор, пока счетчик не дойдет до определенного предела.

Проблема:
Зеннопостер в txt файл записывает не все данные. Опытным путем установлено, что цикл уже перебрал 90 цифр, а зеннопостер только первую запись внес в файл. То есть, шаб привязывает список к файлу, добавляет в список строку, увеличивает счетчик, уже идет на следующий цикл, а данные по предыдущему еще не успели записаться. И так получаются пропуски моделей.

Может как-то без Mysql БД можно решить проблему?
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
вот такая ошибка иногда выскакивает во время выполнения проекта. txt к которому невозможно получить доступ, это тот самый txt, о котором речь выше.
 

Вложения

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
во время выполнения в проджектмейкере (он выполняет медленнее) проблем таких не возникает, или их кратно меньше. А может проблемы при выполнении на зеннопостере возникают из-за (вероятно) низкой скорости записи моего жесткого диска? может быть такое?
 

iblohin

Client
Регистрация
10.09.2015
Сообщения
64
Благодарностей
2
Баллы
8
переделал алгоритм, без использования списков, вопрос более не актуален, всем спасибо за помощь!
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)