惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

美团技术团队
W
WeLiveSecurity
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
F
Full Disclosure
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Register - Security
The Register - Security
G
Google Developers Blog
C
Check Point Blog
GbyAI
GbyAI
A
About on SuperTechFans
V
Vulnerabilities – Threatpost
T
The Blog of Author Tim Ferriss
T
Tor Project blog
AWS News Blog
AWS News Blog
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
MongoDB | Blog
MongoDB | Blog
Latest news
Latest news
aimingoo的专栏
aimingoo的专栏
U
Unit 42
Y
Y Combinator Blog
P
Privacy International News Feed
Cisco Talos Blog
Cisco Talos Blog
S
Securelist
S
Schneier on Security
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Attack and Defense Labs
Attack and Defense Labs
P
Proofpoint News Feed
C
Cisco Blogs
Webroot Blog
Webroot Blog
T
Troy Hunt's Blog
Google Online Security Blog
Google Online Security Blog
月光博客
月光博客
P
Privacy & Cybersecurity Law Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
罗磊的独立博客
Cloudbric
Cloudbric
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Hacker News: Ask HN
Hacker News: Ask HN
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Microsoft Security Blog
Microsoft Security Blog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Оптимизация прикладного решения «1С:ERP.УХ + ПАП» на крупном проекте
Максим Вишняков · 2026-06-19 · via Все публикации подряд на Хабре

Средний

5 мин

324

Привет, Хабр! Меня зовут Максим Вишняков, я ведущий разработчик в Axenix. За время работы я накопил обширные знания в части оптимизации, развития и поддержки различных решений на платформе 1С:Предприятие. В этой статье хотел бы рассказать об опыте оптимизации работы ERP-системы для лидера алкогольного рынка, который отгружает продукцию в режиме 24/7 и осуществляет огромный объем операций.

Суть проекта

Наша команда работает с одним из крупнейших производителей алкогольных напитков в России. Приемка сырья и отгрузка готовой продукции на предприятии не останавливаются ни на минуту, ведется постоянный обмен данными с внешними информационными системами.

Ранее компания использовала зарубежную ERP-систему, но некоторое время назад перешла на связку «1С:ERP.УХ + Производство алкогольной продукции (ПАП)». Система отвечает за критически важные процессы — закупки, складскую логистику и управление отгрузками.  Новый контур получил высокую степень автоматизации: активно использовались цепочки взаимосвязанных документов, автоматически создавались сопутствующие сущности и выполнялись многочисленные операции обмена с внешними системами, включая ЕГАИС и «Честный знак».

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

Оптимизация: очереди заданий и особенности их применения

Один из ключевых показателей производительности, требующий особенного внимания — время выполнения транзакций. Его увеличение сказывается на всей системе: замедляются ключевые бизнес-процессы, возрастает нагрузка на инфраструктуру, увеличивается время отклика.

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

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

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

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

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

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

Как именно это работает?

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

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

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

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

Оптимизация в инфраструктурном контексте

Оптимизация программного решения – не всегда про быстродействие. Иногда на нее важно посмотреть, как на процесс адаптации программного решения к инфраструктурным реалиям.

В процессе эксплуатации внедренной системы были выявлены частые аварийные завершения фоновых заданий, вызванные падениями процессов rphost’ов (рабочих процессов сервера «1С:Предприятие»).

В рамках внедрения в системе был реализован собственный обмен с WMS. Для выполнения высоких требований к скорости обмена и повышения его стабильности, он выполнялся несколькими экземплярами регламентных заданий. При этом каждый из экземпляров работал в многопоточном режиме – иначе говоря, в обработке у нас могло быть до 12 входящих сообщений одновременно.

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

Эта реализация обмена в течение длительного времени демонстрировала устойчивость, но оказалась абсолютно не готова к реальности, в которой фоновое задание может аварийно завершиться, в результате чего сообщение зависало в обработке уже несуществующего сеанса. Как итог – не только избыточная обработка из-за падения rphost’ов, но и зависшие сообщения.

С программной точки зрения эта проблема решается через реализацию дополнительного регламентного задания, которое обнаруживало эти «зависшие» сообщения и возвращало их в статус «Не обработан», что позволяло заново взять их в обработку.


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

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

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