Я в растерянности. Работа с файлами списков.

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Давно не работал со списками. Понадобилось быстро написать шаблон. Коротко о функционале:

1. Со страницы получаем список URL'ов и кладем их в список А.
2. Берем из списка А первый URL с удаление ищем его в списке Б и если его там нет, обрабатываем.
3. Обработанный URL кладем в список Б.
4. Возвращаемся к п.2.
5. Когда список А пуст, заканчиваем работу шаблона.

Оба списка привязываю экшеном к файлу.

Всем известна проблема что данные в списки пишутся с задержкой. Так вот, обратил внимание что не всегда данные попадают в списки, где то они пропадают. Приходиться запускать шаблон по нескольку раз что бы он корректно обработал все URL и записал их в список.

Привязка списков к файлу производиться в начале работы шаблона. Так же делал привязку файлов перед каждым действием со списком. Не помогло.

Это как то лечится?

Версия постера 5.17.1
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Только сегодня был баг со списками в 16.2.
Был список 2 и список 3. Я выделил подсписок по регулярки из 2 в третий. Но третий оказывался пустой.
Открыл посмотреть второй в маленьком окне показал одни строки, в большом окне другие. Список был привязан через переменную во входных. Закрывал PM раза три, ничего не помогало. В итоге психанул и прявязал список напрямую без входных, и сам список переименовал, перезагрузил PM в очередной раз и о чудо. Заработало.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Ну вот тоже самое и у меня. Данные в списки заносятся как то хаотично. При одной итерации заносятся, при последующей нет.
прявязал список напрямую без входных,
С прямой привязкой получше, но тоже иногда проскакивает мимо.

Если с прямой привязкой данные в список заносятся лучше то для чего существует экшен Привязать к файлу у списков и таблиц?
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Да хз не знал, что лучше так. Вроде есть перменная, в ней путь. этот путь прописан в списке. Все же логично как 2х2.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
Вот головоломка. Сколько людей столько и мнений. :bw:

Если привязывать к файлу выставить настройки списка как ниже на скрине то ничего не пишется в список вообще. Если как на скрине выше, то данные пишутся, но присутствуют проблемы описанные в первом посте.

upload_2018-4-24_9-6-40.png
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Самый 100% способ, это нажать 3 галки и указать файл. Список должен быть привязан один раз, в формате utf-8 и закрыт во время выполнения. Сохраняем, перезапускаем. Все.
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113
И так... Давайте подведем итоги нашей с вами дискуссии. Для корректного занесения данных в список или таблицу во много потоке выполняем следующие два пункта.
  1. Привязываем список к файлу.
  2. В настройках списка (таблицы) устанавливаем все три галки и указываем путь к файлу.
Я правильно вас понял?
 

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
Вот головоломка. Сколько людей столько и мнений. :bw:

Если привязывать к файлу выставить настройки списка как ниже на скрине то ничего не пишется в список вообще. Если как на скрине выше, то данные пишутся, но присутствуют проблемы описанные в первом посте.

Посмотреть вложение 29240
Вот так стоит у меня
2018-04-24_092215.png
В нужном месте я привязываю файл к списку и работаю с ним,данные не пересекаются,дубли не пишутся
 
  • Спасибо
Реакции: one

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
Достаточно его привязать в начале работы шаблона?
Если имя файла и путь его известен и не изменим,то зачем танцы с бубном?Просто пропиши полный путь и все.
Если работаешь со списком/таблицей на c# то не забывай лочить тогда все будет записываться и браться как надо.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

Vlad_Curnoi

Client
Регистрация
09.08.2017
Сообщения
469
Благодарностей
198
Баллы
43
Ну вот судя по всему надо переходить на это решение.
Вот так более правильней
var list_1 = project.Lists["Список 1"];
var list_2 = project.Lists["Список 2"];
//
lock(SyncObjects.ListSyncer) {
for(int i=0;i<list_1.Count;i++){
string url = list_1[0]; //берем первую строку
list_1.RemoveAt(0);//удаляем первую строку
if(!list_2.Contains(url)){ //проверяем есть ли в списке
return url;//если нет то вернем url
}
}
}
throw new Exception("Закончился список");
 
Последнее редактирование:
  • Спасибо
Реакции: one

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Постоянно работаю с списками и никаких глюков честно говоря не замечал
Привязку всегда делаю в c# т.е сразу не указываю файл

Данные в файл выгружаются с небольшой задержкой, но в памяти то все данные актуальные, туда они пишутся мгновенно ... т.ч эта задержка не при чем.

Думаю есть какая-то ошибка в логике самого шаблона ...

p.s я все еще сижу на 5.11.4.0, но насколько я помню changelog'и роде бы в новых версиях работа со списками никак не затрагивалась ...
 
  • Спасибо
Реакции: orka13, one и Yuriy Zymlex

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 763
Благодарностей
1 391
Баллы
113
Можно увидеть решение?
все делается одной строкой
Код:
project.Lists["result"].Bind(project.Variables["project_files_dir"].Value+"result.txt");
p.s в настройках кубика должны стоять галки
- загружать из файла
- сохранять изменения списка в файл
там где указывается файл оставить пустую строку

p.p.s очень сомневаюсь что смена привязки с кубика на c# что-то изменит в данном конкретном случае ... ошибка судя по всему где-то в другом месте
 
  • Спасибо
Реакции: orka13 и one

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
При работе со списками надо учитывать еще один момент: во время выполнения в ЗП нельзя этот проект выполнять в ПМ так как он может пересохранить свою версию списка, которая никак не синхронизирована с ЗП
 
  • Спасибо
Реакции: orka13

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