- Регистрация
- 05.09.2012
- Сообщения
- 20 436
- Благодарностей
- 9 132
- Баллы
- 113
Еще проверьте пож-ста, эта галка в свойствах списка у вас установлена?Проблема актуально даже в 7.3. Как решается проблема?
Еще проверьте пож-ста, эта галка в свойствах списка у вас установлена?Проблема актуально даже в 7.3. Как решается проблема?
такая же жесть.Да это все проверил изначально. Проблема имеет место быть когда работают два шаблона с одним файлом. Один шаблон записывает данные в файл по средством добавления строки в список, а второй шаблон берет строку с удалением с этого файла. И не важно одновременно запущены эти два шаблона или по очереди при любом исходе баг выходит через некоторое время. Через некоторое время видим такую картину - файл имеет нулевой размер (так как второй шаблон все выгреб с него), а при добавлении строк первым шаблоном мы видим типа в нем уже N количество строк добавлено хотя файл имеет нулевой размер и при его открытии он естественно пустой.
//---- входные настройки ----
string data = project.Variables["Input_Data_Akk_for_Retvit"].Value; // данные
var list = project.Lists["Registered_Emails_for_Retvit"]; // список для операций
var list_2 = project.Lists["Cant_Login_Registered_Emails_IMAP"]; // список для операций
//---- действие ----
//CommonCode.Add_Data_to_Result(list, data);
lock (CommonCode.ResultDataLocker)
{
list.Add(data); // добавляем данные
// ищем строку с данными и удаляем ее
for (int i = list_2.Count-1; i >= 0 ; i-- ){
if (list_2[i] == data) {
list_2.RemoveAt(i);
}
}
//--
}
Вчера весь день потратил на то чтобы разобраться с подобной проблемой.такая же жесть.
Шаблоны в многопотоке работают со списком, через стандартный кубик. в начале шаблон забирает строку с удалением, в конце работы добавляет строку. При увеличении количества потоков, список просто выгребается в ноль и не пополняется.
Данный баг был обойден отказом от стандартных кубиков работы со списками и переходом на C#. очень трудозатратная операция скажу я вам по секрету. Но зато проверено, списки нормально начали работать.
вот такая конструкция была и чем заменена:
Посмотреть вложение 68656
если кому нужен код , вот он.
в общем коде надо добавить ResultDataLocker или использовать стандарт SyncObjectC#://---- входные настройки ---- string data = project.Variables["Input_Data_Akk_for_Retvit"].Value; // данные var list = project.Lists["Registered_Emails_for_Retvit"]; // список для операций var list_2 = project.Lists["Cant_Login_Registered_Emails_IMAP"]; // список для операций //---- действие ---- //CommonCode.Add_Data_to_Result(list, data); lock (CommonCode.ResultDataLocker) { list.Add(data); // добавляем данные // ищем строку с данными и удаляем ее for (int i = list_2.Count-1; i >= 0 ; i-- ){ if (list_2[i] == data) { list_2.RemoveAt(i); } } //-- }
Посмотреть вложение 68658
"Настройки - Выполнение", здесь ничего не менялось?Вчера весь день потратил на то чтобы разобраться с подобной проблемой.
ZennoPoster ведет себя необъяснио. Такое ощущение, что при привязке файла к списку он изолируется от системы. Во всяком случае, шаблон на стандартных экшенах не видит изменений файла, если они производятся третьими программами.
Сейчас протестировал в ПМ и ЗП 7.4 поведение при взятии строки спсика при изменении извне (добавление строки вручную в Нотепад++ и сохранение) - все отлично. Попробуйте на простейшем примере шаблона со взятием строки тоже протестировать, а дальше уже будем думать, что произошло и как лечить.Вчера весь день потратил на то чтобы разобраться с подобной проблемой.
ZennoPoster ведет себя необъяснио. Такое ощущение, что при привязке файла к списку он изолируется от системы. Во всяком случае, шаблон на стандартных экшенах не видит изменений файла, если они производятся третьими программами.
попробуй поставить кубик паузы после взятия строки и после записи.Столкнулся с такой же ситуацией.
Есть два файла, в одном лежат данные для обработки, которые берутся построчно с удалением. В другой записывается результат.
В ПМ всё работает как надо. Запускаю в зеннопостере, ничего не работает. То есть данные из файла номер 1 не удаляются и результаты в файл номер 2 не пишутся. При этом сделал специально логирование, и судя по оповещениям каждый новый запуск берёт новую строку, то есть как будто они удаляются из файла.
Парни, можно для дураков снипет разжевать? У меня трабла со списками уже давно, файлы 100-500 гб и 10 потоков, не объяснить что происходит со списками, то не пишет, то не читает и не удаляет. Попробовал на бд переделать, там тоже свои проблемы. Можно в снипите подсказать как писать, читать и удалять строку? Версия 7.5 и мне кажется ещё долго будет нас преследовать эта проблема.такая же жесть.
Шаблоны в многопотоке работают со списком, через стандартный кубик. в начале шаблон забирает строку с удалением, в конце работы добавляет строку. При увеличении количества потоков, список просто выгребается в ноль и не пополняется.
Данный баг был обойден отказом от стандартных кубиков работы со списками и переходом на C#. очень трудозатратная операция скажу я вам по секрету. Но зато проверено, списки нормально начали работать.
вот такая конструкция была и чем заменена:
Посмотреть вложение 68656
если кому нужен код , вот он.
в общем коде надо добавить ResultDataLocker или использовать стандарт SyncObjectC#://---- входные настройки ---- string data = project.Variables["Input_Data_Akk_for_Retvit"].Value; // данные var list = project.Lists["Registered_Emails_for_Retvit"]; // список для операций var list_2 = project.Lists["Cant_Login_Registered_Emails_IMAP"]; // список для операций //---- действие ---- //CommonCode.Add_Data_to_Result(list, data); lock (CommonCode.ResultDataLocker) { list.Add(data); // добавляем данные // ищем строку с данными и удаляем ее for (int i = list_2.Count-1; i >= 0 ; i-- ){ if (list_2[i] == data) { list_2.RemoveAt(i); } } //-- }
Посмотреть вложение 68658