Как оценить и увеличить скорость перепроведения документов в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Методика оценки времени проведения

Рассмотрим ситуацию: бухгалтеру необходимо перепровести 1900 документов за май. Первый вопрос, который возникает у специалиста: «Сколько это должно занимать времени в норме?». Важно понимать, что универсального показателя «секунда на документ» не существует. Скорость зависит от сложности бизнес-логики, количества записей в регистрах и производительности системы.

Для получения адекватного прогноза проанализируем текущую ситуацию с помощью метода репрезентативной выборки. Проведение одного случайного документа не даст верной картины, так как Доверенность проводится мгновенно, а Закрытие месяца или Реализация товаров с сотней позиций может занять значительное время. Выполним следующие шаги:

  1. Отберем группу из 100 разнородных документов за рабочий период.
  2. Замерим общее время их проведения с помощью секундомера или встроенных средств отладки.
  3. Разделим полученное время на 100 и умножим на общий объем документов (в нашем случае — 1900).

Если среднее время проведения одного документа составляет около 1 секунды, то на 1900 документов уйдет примерно 31-32 минуты. Если же время составляет 3-5 секунд, процесс растянется на полтора-два часа. Проанализировав эти цифры, мы сможем дать аргументированный ответ пользователю.

Технические факторы производительности

Выясним причину, почему наличие SSD не всегда гарантирует мгновенную работу. В среде 1С:Предприятие основная нагрузка при проведении ложится на следующие узлы:

1. Частота процессора (Single-core performance). Процесс проведения одного конкретного документа в 1С является линейным и выполняется в одном потоке. Это означает, что для системы гораздо важнее высокая тактовая частота одного ядра (например, 4.5–5.0 ГГц), чем наличие 64 ядер с низкой частотой. Если процессор «медленный» в однопоточном режиме, дисковая подсистема SSD не раскроет свой потенциал.

2. Работа СУБД и лог транзакций. Каждое проведение документа — это транзакция в SQL Server. Если база данных работает в режиме Full Recovery Model, система тратит много ресурсов на запись лога транзакций (LDF-файл). Для ускорения массовых операций администраторы часто временно переводят базу в режим Simple, что значительно снижает нагрузку на дисковую подсистему при записи.

3. Актуальность итогов. Посмотрим на состояние регистров. Если итоги в базе не рассчитаны или «сдвинуты» далеко в прошлое, 1С вынуждена при каждом проведении рассчитывать остатки «на лету», считывая данные за огромные периоды. Регулярный пересчет итогов и обслуживание индексов в консоли администрирования — обязательная процедура для поддержания скорости.

Программные способы оптимизации

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

Во-первых, проанализируем возможность использования отложенного проведения. В этом режиме документы быстро проводят изменения по бухгалтерскому учету, а сложные расчеты (себестоимость, партионный учет, распределение НДС) выносятся в регламентные задания, которые выполняются в фоне или в ночное время.

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

Анализ кода и подписок на события

Если замеры показывают аномально долгое время проведения (более 2-3 секунд на простой документ), нам необходимо выполнить Замер производительности в Конфигураторе. Часто причинами тормозов являются:

Пример неоптимизированного кода, который может замедлять проведение:


// Плохая практика: запрос внутри цикла по строкам документа
Для Каждого СтрокаТЧ Из Ссылка.Товары Цикл
    Запрос = Новый Запрос("ВЫБРАТЬ Остаток ИЗ Регистр.Остатки ГДЕ Номенклатура = &Ном");
    Запрос.УстановитьПараметр("Ном", СтрокаТЧ.Номенклатура);
    // ... выполнение запроса
КонецЦикла;

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

Организационные меры

Разберем ситуацию с точки зрения управления учетом. Постоянная потребность в перепроведении большого количества документов часто свидетельствует о нарушении методологии работы в программе. Мы должны рекомендовать следующие меры:

  1. Установка даты запрета редактирования. Это критически важный инструмент. Если пользователи не смогут изменять документы в закрытых периодах, «граница последовательности» не будет улетать назад, и необходимость в массовом перепроведении отпадет сама собой.
  2. Отказ от работы «задним числом». Нужно приучать персонал вносить исправления текущей датой через сторнирование или корректировочные документы.
  3. Использование оперативного проведения. При оперативном проведении система не проверяет итоги за прошлые периоды так глубоко, как при неоперативном, что ускоряет текущую работу.

Подводя итог, можно сказать: 1900 документов — это умеренный объем. Если система тратит на них более 40-60 минут, стоит обратить внимание на частоту процессора сервера, настройки SQL и отсутствие «тяжелых» неоптимизированных подписок на события в коде конфигурации.

← На главную