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

      Скорость загрузки прайс-листов

      • Главная
      • Форум по 1С
      Поиск  Правила 
      Страницы: 1
      Скорость загрузки прайс-листов, Что можно сделать для ускорения?
      #1
      Akishev 05.08.2022 00:36:00
      Евгений, у меня нормальный сервер. 32 ядра, 4.7 в разгоне, 256ГБ оперативки, SSD mvme n.2(менее 30% занято) и тд. Все оптимизировано под 1с.

      Однако, мне совершенно не нравится скорость работы обновления прайсов. Сейчас я все переделал на работу с json-файлами(у вас нет такой возможности, пришлось писать костыли) и читаются они почти мгновенно даже при очень большом количестве данных. Еще думаю насчет вообще бинарных файлов, они меньше весят и теоретически могут еще быстрее читаться. Все операции по строкам, алгоритмы и так далее - делаются у меня в отдельных скриптах вне 1с вообще и не замедляют загрузку. Сами json - файлы я тоже собираю алгоритмами и не гружу этим 1с. То есть база получает уже готовые файлы, которые просто надо синхронизировать(сопоставить с номенклатурой) и записать изменения в регистр.

      Я вижу что узких места два.

      1. Синхронизация. Тут я поотключал все варианты кроме трех. поиск по идентификатору номенклатуры поставщика, поиск по артикулу поставщика, поиск по артикулу справочника в 1с. К сожалению, нельзя убрать первую из указанных опций, потому что иногда артикулы поставщиков неуникальны даже в рамках одного прайса. Как еще можно ускорить этот процесс? Я читал, что у вас используется чуть не везде веб-сервис, как его отключить? Как делать простую загрузку для файлов, которые сохранены в json или txt - у вас она пока для файлов этого типа закрыта. Скажется ли его отключение на скорости синхронизации? И какие еще варианты вы можете предложить?
      я не понимаю, что там за проблема со скоростью, даже датафреймы с 100 000 строк и более должны моментально синхронизироваться, даже при условии тройного поиска соответствий(id, арт поставщика, арт справочника) в двух регистрах данных. Или у вас используется построчное сравнение?

      2. Запись в регистр. Вот это - самая долгая операция. Тут я даже предположить не могу, как ее ускорить, вероятно, это больше вопрос к коду, который от меня скрыт. Что-то посоветуете?

      Я только вижу, что данные после синхронизации сначала сравниваются с имеющимися и пишутся только изменения. Тогда почему это происходит так долго? Обычно это 10-15% позиций от всего прайса.

      Цель - добиться того, чтобы прайсы с 200-300 000 строк обновлялись не дольше чем 10-20 секунд при средней загрузке сервера в течение дня.
      Изменено: Akishev - 05.08.2022 00:45:07
       
      #2
      Евгений 06.08.2022 11:22:23
      В скайп пишите, слишком мало информации, чтобы понять в чем у вас проблема.
      Нужно посмотреть все от конфигурации сервера, до показателей скорости по логам.
      Синхронизация самое быстрое в модуле, должно работать несколько секунд.
      Весь прайс в 100 000 строк невозможно загружать за 20 секунд.
      Обычная скорость загрузки прайса в 100 тысяч строк - 1 минута (при хорошем сервере) и при условии что прайс не в эксель, а CSV.

      Синхронизация происходит цельным запросом. Коды алгоритмов поиска (любого) я скидываю бесплатно, так как там есть возможность создавать свои алгоритмы поиска.
      Также можно создавать алгоритмы обработки результата таблицы целиком (если нужно записывать данные в свои какие то регистры).

      Самое медленное во всем, это то что для передачи таблиц в запрос целиком, ее приходиться всегда выгружать во временные таблицы (иначе в запрос не передать). И выборка результатов запроса - так как синхронизированную номенклатуру нужно заполнить в строках. Все это будет видно в алгоритме.
       
      #3
      Akishev 11.08.2022 01:06:48
      Евгений, вопрос также следующий

      Часто мы видим в логе вот такое



      Я думаю, это происходит тогда, когда задание наталкивается на блокировку. Но это конкретная проблема.

      Потому что при этом удаляются старые данные, и выходит что коренным образом меняются как остатки, так и цены.

      Прайс поставщика исчезает - значит, тут же регистрируются изменения, летят опять километры кода на сайт, потому что меняются остатки и пересчитываются цены(потому что цены этого поставщика больше не в базе).

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

      Но на данный момент - база дополнительно загружается черт знает чем и сайт до кучи. Это если не говорить о том, что необоснованно исчезают остатки и меняются цены.

      Как победить эту проблему?

      Я вижу тут только одну возможность, регламентное задание должно проверять, доступна ли конкретная таблица для записи и только потом удалять старые данные, затем записывая новые. Либо же удалять старые данные только при успешной записи новых(используя любой доступный идентификатор, тот же идентификатор прайса, например). В этом случае таких "провисаний" будет значительно меньше. Если таблица недоступна - ждать, пока не освободится, либо же прекращать работу, это должно зависеть от настроек. Скорее всего, операции удаления - записи должны идти в единой транзакции и в случае успеха коммититься.

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

      Я пока не обновился на новую версию, там ошибка, в скайп вам сбросил инфо. может быть, после обновления проблема исчезнет, не знаю.
      Изменено: Akishev - 11.08.2022 01:09:15
       
      #4
      Евгений 12.08.2022 10:38:58
      Вы много написали, но так и не понял в чем проблема. Вы прислали скриншот, но этот скриншот ни о чем не говорит. Там простой лог загрузки прайса за несколько секунд.

      Цены поставщиков вообще на сайт не выгружаются и не имеют к обмену никакого отношения. На сайт обычно выгружается цена продажи из штатного регистра цен номенклатуры.

      По поводу заданий "они не так как записано у них в расписании, а как им угодно." Не совсем понятно что значит как им угодно. Регламентные задания в 1С работают именно так как они настроены. Они не могут работать как им угодно. Как и любой код.

      Не совсем понял что значит база загружается черт знает чем, и необоснованно удаляется прайс..... Удаляется старый прайс, а черт знает что - это вообще новый прайс.
       
      #5
      Евгений 12.08.2022 10:52:03
      И еще. Таблица и регистры Мегапрайса также никак не участвуют в обмене. Выгрузка на сайт происходит из штатных регистров Распределение запасов (если 1С УТ 11.5) и Цены номенклатуры.

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

      Если не верите, можете сами убедится). Обработка мегапрайсГенерацияВиртуальныхОстатков имеет открытый код.
      Изменено: Евгений - 12.08.2022 10:55:31
       
      #6
      Евгений 12.08.2022 11:02:32
      По поводу транзакций и скорости. Судя по описанию - у вас файловая база. Только в файловых базах существует проблема транзакций.
      В файловой 1С блокировка происходит на уровне таблиц.
      В серверной 1С с СУБД SQL - блокировка на уровне записей. Что по сути означает отсутствие блокировки если вы что то делаете с разными записями.

      Загрузка прайс-листов и вообще любые массовые обработки это как бы такая вещь, для которой должны быть условия.
      1С изначально создана как программа для ручной работы, типа сидят юзеры - и руками что то набивают. Пока они там что то набьют то и транзакций нет.

      В нашем случае мы значительно автоматизируем работу))) Но и данных не как бухгалтер 5 строк в документ вбил.

      Поэтому если у вас не 1-5 поставщиков в день с 20 000 товаров, а гораздо больше, то очевидно что база не должна быть файловой.
       
       
      Страницы: 1
      Подписывайтесь на новости и акции:
      Компания
      Об авторе
      История
      Лицензии
      Партнеры
      Контакты
      Разработки 1С
      Мегапрайс PRO
      Загрузка прайсов в 1С
      Работа с ценами в 1С
      Помощник продаж
      Помощник закупок
      Что нового?
      Форум
      Информация
      Договор-оферта
      Наши контакты

      8 (995) 091-01-01
      Без выходных, 10-20
      Телега:@Subsystemsru
      Чат с телеге:@Евгений
      Макс:@Subsystemsru
      Техподдержка
      support@subsystems.ru
      © 2026 Все права защищены. Работает на 1С-Битрикс
      Версия для печати
      Яндекс.Метрика
      0

      Корзина

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

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