Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

1C_LONG_TRANSACTION_POSTING 1С:Предприятие и СУБД

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

Обновлено: 26.08.2026 · Официальная документация ↗
  • Проведение одного документа длится более 3-10 секунд.
  • Транзакция удерживает исключительные блокировки на 5-10 регистрах одновременно, парализуя работу смежных отделов.
  • Длительные ожидания по событию технологического журнала SDBL и TLOCKS.

1. Переход на методику оперативного проведения (Запись = Истина)

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

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    
    // 1. Установка управляемых блокировок по всем регистрам разом
    УстановитьБлокировки();
    
    // 2. Один пакетный запрос: чтение всех остатков и цен по всем регистрам
    РезультатыЗапроса = ВыполнитьПакетныйЗапрос();
    
    // 3. Проверка остатков в оперативной памяти
    Если Не ПроверитьОстатки(РезультатыЗапроса, Отказ) Тогда
        Возврат;
    КонецЕсли;
    
    // 4. Формирование наборов записей движений
    Движения.ТоварыНаСкладах.Записывать = Истина;
    Движения.Взаиморасчеты.Записывать = Истина;
    
    ЗаполнитьДвижения(Движения.ТоварыНаСкладах, РезультатыЗапроса);
    ЗаполнитьДвижения(Движения.Взаиморасчеты, РезультатыЗапроса);
    
КонецПроцедуры

2. Исключение тяжелых расчетов и внешних вызовов из транзакции

  • Никогда не отправляйте HTTP/SOAP запросы во внешние системы (CRM, Честный Знак, Банк) внутри транзакции проведения;
  • Не генерируйте печатные формы и PDF-файлы внутри ОбработкаПроведения;
  • Выносите вспомогательные расчеты в асинхронные фоновые очереди.
💡 Практика специалистов: Главный KPI производительности проведения документов в 1С: время нахождения в транзакции не должно превышать 0.5-1 секунды. Все подготовительные чтения выполняйте ДО начала транзакции, если это допустимо бизнес-логикой.

Частые вопросы (FAQ)

Почему нельзя выполнять запросы внутри цикла по строкам документа?

Запрос внутри цикла (N+1) генерирует сотни обращений к СУБД, кратно увеличивая сетевые задержки и общее время удержания транзакции.

Что такое 'смещенная транзакция'?

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

Как влияет режим 'Записывать = Истина' на скорость проведения?

Платформа 1С оптимизирует запись всех помеченных наборов движений, сбрасывая их в СУБД за минимальное количество сетевых пакетов перед фиксацией транзакции.

Нужно ли очищать движения перед повторным проведением?

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

Полезные материалы
Рекомендуем