Здравствуйте! Есть ли возможность в алгоритме по условию прервать выполнение кода и продолжить загрузку прайса? Я загружаю огромный прайс и в циклах перебираю артикулы, находя текущий, чтобы выполнить со значением некоторые действия. И алгоритм уже очень длинный и сильно тормозит загрузку (23 часа загружается прайс). Мне нужно, чтобы при нахождении артикула, выполнились действия со значением и алгоритм прервался. Возможно ли это и какими средствами?
Прерывание алгоритма по условию
Прерывание алгоритма по условию
|
|
23 часа????? что ж вы там натворили то.
Ничего не пойму пока не увижу.... Телепатировать не представляется возможным. |
|
Прайс почти в миллион строк, на многих товарах платная доставка, она в csv файл не выгружается. Она задана алгоритмом. Создан цикл на каждую Стоимость доставки, т.е.:
Доставка5 = Новый Массив(); Доставка5.Добавить(тут артикул товара);... таких строк много. Потом в цикле я проверяю, если найден текущий артикул, то добавляю к стоимости 5. Вот таких массивов и циклов много в одном алгоритме. Мне нужно, чтобы при нахождении артикула, стоимость прибавилась и алгоритм весь прервался |
|
Анна, а вы не пробовали более универсальный алгоритм который будет не к каждому артикулу обращаться а например к 1000 или итого больше.
У меня тоже так с одним из прайсов было что нужно было наценку на каждый товар отдельно делать. Но потом пришлось поубавить желания так как оперативность работы тоже важна. Так же было бы интересно позаимствовать ваш опыт. скайп dmitriy_viktorian |
|
|
||
|
Что значит прервать. Прервать это вообще означает полностью прервать чтение дальнейших всех строк.
Прочитается например не 10 а 1. У меня таких случаев не было и тут я не понимаю смысла прерывания. У вас тяжелый алгоритм, который явно нуждается в правильной оптимизации! И вообще зачем 1 миллион грузить в 1С. Вот модуль который прайс в 15 000 000 строк переделывает за 5 минут в другой. https://subsystems.ru/solutions/parsery-praysov/razdelenie-faylov-csv/ Если вам нужно что ограничить то можно использовать алгоритм таблицы целиком - там можно все переработать. А также есть настройка ограничения количества читаемых строк. Если вы хотите пропускать не нужные вам строки, то такие строки по условию должны иметь в алгоритме строку Значение = Неопределено; |
|
Загрузка и так идет потоком, файл разбивается на 9 кусков. Я пропускаю заведомо ненужные строки с помощью Значение = Неопределено, этот алгоритм применен к колонке Артикул. А алгоритм стоимости применен к колонке Цена закупки. Каждый из циклов в алгоритме я уже прерываю, если элемент найден. Но в итоге, по остальным циклам программа идет до конца, потому что там нет нужного артикула. Мне не нужно переделывать изначальный файл, он уже содержит минимум необходимых к загрузке данных. А также, каждый день в базу мы заносим новинки из этого прайса, и алгоритм из-за этого удлиняется каждый раз, когда появляется товар с платной доставкой. В идеале, в этом алгоритме нужно было бы создать процедуру, которая ищет и добавляет стоимость, а при нахождении останавливается. Но почему-то Мегапрайс ругается на Процедуру |
||
|
Алгоритм выполняется в условии. Если условие пропадает то код и не будет отрабатывать. Напишите нормальный код и ничего лишнего работать не будет. Это целиком от вас зависит. Если элемент не найден, то сделайте обработку кода в условии наоборот - если он найден! Если ЭлементНайден Тогда //тут весь ваш код. КонецЕсли; |
||
|
Будет правильно если вы скинете алгоритм мне в скайп, чтобы я оценил его правильность с точки зрения оптимизации.
|
||||
|
||||
Читают тему (гостей: 2)