Многие администраторы и разработчики, обслуживающие 1С:Управление торговлей (а также 1С:ERP и 1С:Комплексная автоматизация 2.5), сталкиваются с неприятной ситуацией: при проведении документов система начинает сильно тормозить, а фоновое задание Регистр сведений. Задания к распределению запасов забирает на себя все ресурсы сервера.
Особенно нелогичным такое поведение кажется тогда, когда в настройках системы полностью отключена работа с обеспечением запасов, резервирование не используется, а заказы клиентов играют роль обычных счетов. Тем не менее, регистр Задания к распределению запасов постоянно заполняется, а в регистре Распределение запасов накапливаются миллионы строк. Разберем подробнее, почему это происходит и как правильно оптимизировать работу базы данных.
Проанализируем ограничения современных версий программы. В конфигурации 1С:УТ 11.5 подсистема распределения запасов выступает в роли базового ядра учета товарных остатков, которое пришло на смену устаревшему регистру накопления Свободные остатки.
Отключить распределение с помощью стандартных функциональных опций невозможно. Даже если вы вообще не используете обеспечение потребностей, важнейшие механизмы системы (расчет доступных и свободных остатков, работа формы подбора товаров, контроль актуальных остатков) задействуют именно регистры сведений Распределение запасов и Задания к распределению запасов.
Рассмотрим, что именно приводит к бесконечной работе фонового задания и зависанию клиентского приложения:
Разберем по шагам, как можно разгрузить систему и стабилизировать работу механизма распределения запасов.
1. Использование встроенной служебной обработки
Перейдем в режим "1С:Предприятие", откроем меню Функции для технического специалиста и найдем обработку Исправление ошибок в регистре сведений "Распределение запасов". Запустим её: она проанализирует расхождения между фактическими складскими остатками и витриной распределения, скорректирует данные и поможет разгрузить фоновый механизм.
2. Очистка очереди заданий
Если в регистре сведений Задания к распределению запасов уже скопились миллионы записей, штатный фоновый процесс не сможет быстро их переварить. На копии базы (а после успешного тестирования — на рабочей) рекомендуется регламентно очистить этот регистр от старых "зависших" записей. Сразу после очистки необходимо запустить полный пересчет остатков с помощью обработки, упомянутой в первом шаге.
3. Включение штатного регламентного задания
Давайте переложим запуск обработки очереди с интерактивного проведения документов на расписание. Для этого используются регламентные задания Распределение запасов и Актуализация потребностей по границе периода обеспечения. Настроим их регулярный запуск по расписанию (например, каждые несколько секунд или минут). Это позволит серверу обрабатывать задачи стабильно, без пиковых нагрузок при массовом проведении документов пользователями.
4. Включение производительного режима
В конфигурациях 11.5 предусмотрена полезная настройка. Перейдем в раздел администрирования склада и доставки и включим функциональную опцию Производительный режим записи информации о доступности товаров и работ. В этом режиме архитектура записи оптимизирована таким образом, чтобы существенно снизить транзакционные блокировки при работе множества пользователей.
В процессе поиска решения можно встретить совет закомментировать вызов фонового задания в коде. Проанализируем последствия такого вмешательства: попытка вырезать вызов фонового задания или заблокировать программно запись в регистр Задания к распределению запасов приведет к тому, что витрина Распределение запасов перестанет обновляться.
В результате этого полностью перестанет работать контроль остатков, форма подбора номенклатуры будет показывать устаревшие или нулевые данные, а отчеты по доступности товаров рассинхронизируются с реальным положением дел на складе. Поэтому категорически не рекомендуется отключать данный механизм на уровне программного кода.