Мегадок
Subsystems
Авторская разработка решений для 1С с 2008 года. Об авторе.
8 (995) 091-01-01
В онлайне: с 10:00 до 18:00
Заказать звонок
Skype: shekineugeniy
Мегапрайс
Разработки
  • Мегапрайс PRO
  • Мега: Загрузка в 1С
  • Мега: Номенклатура
  • Мега: Цены
  • Мега: Помощник закупок
  • Мега: Помощник продаж
  • Парсеры прайсов
  • Маркетплейсы
  • Удалить (всякое старье)
Что нового?
Отзывы
Информация
  • Об авторе
    • Об авторе
    • История
    • Лицензии
    • Партнеры
    • Контакты
  • Договор-оферта
  • Есть идея!
  • Техподдержка
  • Вопрос ответ
  • Статьи
  • Для интернет-магазинов
    • Продукты Битрикс
    • Шаблоны для сайта
  • Партнерство
  • Акции
Форум
    Subsystems
    Мегапрайс
    Разработки
    • Мегапрайс PRO
    • Мега: Загрузка в 1С
    • Мега: Номенклатура
    • Мега: Цены
    • Мега: Помощник закупок
    • Мега: Помощник продаж
    • Парсеры прайсов
    • Маркетплейсы
    • Удалить (всякое старье)
    Что нового?
    Отзывы
    Информация
    • Об авторе
      • Об авторе
      • История
      • Лицензии
      • Партнеры
      • Контакты
    • Договор-оферта
    • Есть идея!
    • Техподдержка
    • Вопрос ответ
    • Статьи
    • Для интернет-магазинов
      • Продукты Битрикс
      • Шаблоны для сайта
    • Партнерство
    • Акции
    Форум
      0
      Subsystems
      0
      • Мегапрайс
      • Разработки
        • Назад
        • Разработки
        • Мегапрайс PRO
        • Мега: Загрузка в 1С
        • Мега: Номенклатура
        • Мега: Цены
        • Мега: Помощник закупок
        • Мега: Помощник продаж
        • Парсеры прайсов
        • Маркетплейсы
        • Удалить (всякое старье)
      • Что нового?
      • Отзывы
      • Информация
        • Назад
        • Информация
        • Об авторе
          • Назад
          • Об авторе
          • Об авторе
          • История
          • Лицензии
          • Партнеры
          • Контакты
        • Договор-оферта
        • Есть идея!
        • Техподдержка
        • Вопрос ответ
        • Статьи
        • Для интернет-магазинов
          • Назад
          • Для интернет-магазинов
          • Продукты Битрикс
          • Шаблоны для сайта
        • Партнерство
        • Акции
      • Форум
      • Мой кабинет
      • Корзина0
      • 8 (995) 091-01-01
      Skype: shekineugeniy
      support@subsystems.ru
      • Facebook
      • Вконтакте
      • Telegram
      • YouTube

      Прерывание алгоритма по условию

      • Главная
      • Форум
      • Разработки для 1С
      • Создание алгоритмов загрузки
      • Прерывание алгоритма по условию
      Аренда 1С (4)
      Поиск  Правила 
      Форум » Разработки для 1С » Создание алгоритмов загрузки
      Страницы: 1
      Прерывание алгоритма по условию
       
      Анна Осадчева
      Пользователь
      Сообщений: 5 Регистрация: 25.06.2019
      #1
      27.11.2019 06:51:47
      Здравствуйте! Есть ли возможность в алгоритме по условию прервать выполнение кода и продолжить загрузку прайса? Я загружаю огромный прайс и в циклах перебираю артикулы, находя текущий, чтобы выполнить со значением некоторые действия. И алгоритм уже очень длинный и сильно тормозит загрузку (23 часа загружается прайс). Мне нужно, чтобы при нахождении артикула, выполнились действия со значением и алгоритм прервался. Возможно ли это и какими средствами?
       
       
       
      Евгений
      Администратор
      Сообщений: 2870 Регистрация: 04.07.2011
      #2
      27.11.2019 08:21:47
      23 часа????? что ж вы там натворили то.
      Ничего не пойму пока не увижу.... Телепатировать не представляется возможным.
       
       
       
      Анна Осадчева
      Пользователь
      Сообщений: 5 Регистрация: 25.06.2019
      #3
      27.11.2019 08:26:14
      Прайс почти в миллион строк, на многих товарах платная доставка, она в csv файл не выгружается. Она задана алгоритмом. Создан цикл на каждую Стоимость доставки, т.е.:
      Доставка5 = Новый Массив();
      Доставка5.Добавить(тут артикул товара);... таких строк много.
      Потом в цикле я проверяю, если найден текущий артикул, то добавляю к стоимости 5.
      Вот таких массивов и циклов много в одном алгоритме. Мне нужно, чтобы при нахождении артикула, стоимость прибавилась и алгоритм весь прервался
       
       
       
      Дмитрий Пономаренко
      Пользователь
      Сообщений: 155 Регистрация: 09.03.2016
      #4
      27.11.2019 10:20:02
      Анна, а вы не пробовали более универсальный алгоритм который будет не к каждому артикулу обращаться а например к 1000 или итого больше.
      У меня тоже так с одним из прайсов было что нужно было наценку на каждый товар отдельно делать.
      Но потом пришлось поубавить желания так как оперативность работы тоже важна.
      Так же было бы интересно позаимствовать ваш опыт.
      скайп
      dmitriy_viktorian
       
       
       
      Анна Осадчева
      Пользователь
      Сообщений: 5 Регистрация: 25.06.2019
      #5
      27.11.2019 10:52:00
      Цитата
      Дмитрий Пономаренко написал:
      Анна, а вы не пробовали более универсальный алгоритм который будет не к каждому артикулу обращаться а например к 1000 или итого больше.
      У меня тоже так с одним из прайсов было что нужно было наценку на каждый товар отдельно делать.
      Но потом пришлось поубавить желания так как оперативность работы тоже важна.
      Так же было бы интересно позаимствовать ваш опыт.
      скайп
      dmitriy_viktorian
      Я просто надеялась, что в Мегапрайсе есть какой-то механизм для прерывания алгоритма, такой как Возврат или Прервать, как в цикле или в Процедурах и Функциях. Тогда все стало бы проще и быстрей. Но, если такого нет, то придется как-то выкручиваться, т.к. стоимость доставки нам важна и она очень отличается у разных товаров. Если решу эту задачу как-то рационально, сообщу Вам обязательно
       
       
       
      Евгений
      Администратор
      Сообщений: 2870 Регистрация: 04.07.2011
      #6
      27.11.2019 11:41:15
      Что значит прервать. Прервать это вообще означает полностью прервать чтение дальнейших всех строк.
      Прочитается например не 10 а 1.
      У меня таких случаев не было и тут я не понимаю смысла прерывания.

      У вас тяжелый алгоритм, который явно нуждается в правильной оптимизации!
      И вообще зачем 1 миллион грузить в 1С.

      Вот модуль который прайс в 15 000 000 строк переделывает за 5 минут в другой.

      https://subsystems.ru/solutions/parsery-praysov/razdelenie-faylov-csv/

      Если вам нужно что ограничить то можно использовать алгоритм таблицы целиком - там можно все переработать.
      А также есть настройка ограничения количества читаемых строк.
      Если вы хотите пропускать не нужные вам строки, то такие строки по условию должны иметь в алгоритме строку Значение = Неопределено;
       
       
       
      Анна Осадчева
      Пользователь
      Сообщений: 5 Регистрация: 25.06.2019
      #7
      27.11.2019 12:10:33
      Цитата
      Евгений написал:
      Что значит прервать. Прервать это вообще означает полностью прервать чтение дальнейших всех строк.
      Прочитается например не 10 а 1.
      У меня таких случаев не было и тут я не понимаю смысла прерывания.

      У вас тяжелый алгоритм, который явно нуждается в правильной оптимизации!
      И вообще зачем 1 миллион грузить в 1С.

      Вот модуль который прайс в 15 000 000 строк переделывает за 5 минут в другой.

      https://subsystems.ru/solutions/parsery-praysov/razdelenie-faylov-csv/

      Если вам нужно что ограничить то можно использовать алгоритм таблицы целиком - там можно все переработать.
      А также есть настройка ограничения количества читаемых строк.
      Если вы хотите пропускать не нужные вам строки, то такие строки по условию должны иметь в алгоритме строку Значение = Неопределено;
      Прервать нужно только выполнение алгоритма, потому что при нахождении нужно артикула, с ним выполнились уже все необходимые действия и дальнейший поиск не имеет смысла, только занимает время.
      Загрузка и так идет потоком, файл разбивается на 9 кусков. Я пропускаю заведомо ненужные строки с помощью Значение = Неопределено, этот алгоритм применен к колонке Артикул. А алгоритм стоимости применен к колонке Цена закупки.
      Каждый из циклов в алгоритме я уже прерываю, если элемент найден. Но в итоге, по остальным циклам программа идет до конца, потому что там нет нужного артикула.
      Мне не нужно переделывать изначальный файл, он уже содержит минимум необходимых к загрузке данных. А также, каждый день в базу мы заносим новинки из этого прайса, и алгоритм из-за этого удлиняется каждый раз, когда появляется товар с платной доставкой.
      В идеале, в этом алгоритме нужно было бы создать процедуру, которая ищет и добавляет стоимость, а при нахождении останавливается. Но почему-то Мегапрайс ругается на Процедуру
       
       
       
      Евгений
      Администратор
      Сообщений: 2870 Регистрация: 04.07.2011
      #8
      27.11.2019 12:59:21
      Цитата
      Анна Осадчева написал:
      Прервать нужно только выполнение алгоритма, потому что при нахождении нужно артикула, с ним выполнились уже все необходимые действия и дальнейший поиск не имеет смысла, только занимает время.

      Алгоритм выполняется в условии. Если условие пропадает то код и не будет отрабатывать.
      Напишите нормальный код и ничего лишнего работать не будет. Это целиком от вас зависит.

      Если элемент не найден, то сделайте обработку кода в условии наоборот - если он найден!

      Если ЭлементНайден Тогда
      //тут весь ваш код.
      КонецЕсли;
       
       
       
      Евгений
      Администратор
      Сообщений: 2870 Регистрация: 04.07.2011
      #9
      27.11.2019 18:12:20
      Будет правильно если вы скинете алгоритм мне в скайп, чтобы я оценил его правильность с точки зрения оптимизации.
       
       
       
      Страницы: 1
      Читают тему
      Подписывайтесь на новости и акции:
      Компания
      Об авторе
      История
      Лицензии
      Партнеры
      Контакты
      Разработки 1С
      Мегапрайс PRO
      Загрузка прайсов в 1С
      Анализатор прайсов
      Помощник установки цен
      Помощник продаж
      Помощник закупок
      Услуги
      Услуги по 1С
      Парсеры прайсов
      Создание сайтов
      Техподдержка
      Информация
      Договор-оферта
      Наши контакты

      8 (995) 091-01-01
      В онлайне: с 10:00 до 18:00
      Skype: shekineugeniy
      support@subsystems.ru
      © 2021 Все права защищены. Работает на 1С-Битрикс
      0

      Корзина

      Ваша корзина пуста

      Исправить это просто: выберите в каталоге интересующий товар и нажмите кнопку «В корзину»
      В каталог