Почему 1С:Комплексная автоматизация 2 зависает при оформлении счет-фактуры и как это исправить?

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

При работе в конфигурации 1С:Комплексная автоматизация 2 (или ERP) пользователи нередко сталкиваются с проблемой: при попытке провести документ «Реализация товаров и услуг» или при создании «Счет-фактуры выданной» система «замирает» на несколько минут. Особенно остро эта проблема проявляется в локализованных версиях, например, для Казахстана от «1С-Рейтинг», где добавляются дополнительные механизмы контроля. В этой статье мы подробно разберем, почему возникают такие задержки и как оптимизировать работу системы.

Разбор архитектуры: механизмы онлайн-взаиморасчетов

Прежде всего, нам необходимо понять, что происходит «под капотом» программы в момент записи документа. В современных версиях КА 2 реализована новая архитектура взаиморасчетов. Основная причина зависания заключается в том, что система пытается выполнить распределение расчетов в режиме реального времени. Если у контрагента накоплена огромная история транзакций за несколько лет, алгоритм начинает пересчитывать остатки и обороты, чтобы правильно привязать авансы к конкретной накладной.

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

Проблема очереди заданий к распределению

Рассмотрим сообщение о том, что «запись задания в регистр идет очень долго». Это явный признак переполнения служебных таблиц. В КА 2 существует регистр сведений ЗаданияКРаспределениюРасчетов. При каждом проведении документа в этот регистр записывается строка — сигнал для фонового задания, что по данному объекту нужно пересчитать данные.

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

Рекомендация: Нам необходимо проверить состояние этого регистра. Если в нем висят задания за 2021-2022 годы, их следует очистить, так как актуальность этих расчетов уже прошла, а ресурсы системы они потребляют колоссальные.

Специфика локализации для Казахстана: ЭСФ и Виртуальный склад

Выясним причину, специфичную для версии «1С-Рейтинг». В Казахстане процесс оформления счет-фактуры неразрывно связан с подсистемами ЭСФ (Электронные счета-фактуры) и ВС (Виртуальный склад). При создании СФ система выполняет:

  1. Проверку остатков по регистру ТоварыНаСкладах в разрезе источников происхождения.
  2. Поиск связей между первичным документом и данными портала ИС ЭСФ.
  3. Сложные расчеты налоговых показателей, которые могут отличаться от оперативного учета.

Если в базе нарушена последовательность по источникам происхождения, 1С начинает выполнять рекурсивные запросы для поиска «правильного» источника, что и приводит к фризам.

Настройка режима распределения расчетов

Чтобы снизить нагрузку в момент оформления документа, мы можем изменить настройки системы. Перейдем в раздел НСИ и администрирование — Казначейство. Здесь находится переключатель режима распределения взаиморасчетов.

Существует два варианта:

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

Техническая оптимизация SQL-сервера

Посмотрим на проблему со стороны системного администрирования. Даже при правильных настройках 1С, база может тормозить из-за конфигурации SQL. Проанализируем параметр MAXDOP (Max Degree of Parallelism). Для баз данных 1С крайне рекомендуется устанавливать значение 1. Если это значение выше, SQL-сервер пытается распараллелить тяжелый запрос по взаиморасчетам на все ядра процессора, что парализует работу других пользователей и вызывает общие «зависания» интерфейса.

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

Использование замера производительности для поиска «узкого места»

Если вышеперечисленные меры не помогают, нам как программистам следует воспользоваться встроенным инструментом «Замер производительности». Разберем алгоритм действий:

  1. Запустите Конфигуратор и включите отладку.
  2. В режиме «1С:Предприятие» откройте нужную реализацию.
  3. Включите замер производительности.
  4. Нажмите «Оформить счет-фактуру».
  5. После того как документ откроется, остановите замер.

В результатах замера обратите внимание на колонку «Чистое время». Чаще всего 90% времени будет занимать одна из следующих процедур:


// Пример типичной процедуры, вызывающей задержку
РегистрыСведений.ЗаданияКРаспределениюРасчетов.ЗаписатьДанныеВРегистр();
// Или проверка источников в локализации Казахстана
ПроверкаИсточниковПроисхожденияКлиентСервер.ВыполнитьПроверкуОстатков();

Чек-лист для решения проблемы

Для исправления ситуации выполним следующие шаги:

  1. Очистка заданий: Очистите записи в регистре Задания к распределению расчетов за закрытые периоды.
  2. Режим расчетов: Убедитесь, что в настройках казначейства выбрано отложенное распределение (Офлайн).
  3. Регламентные задания: Проверьте, что задание Выполнение отложенных движений по расчетам запущено и выполняется без ошибок. Если оно «висит» с ошибкой, очередь заданий будет только расти.
  4. Обновление платформы: Убедитесь, что вы используете актуальную версию платформы (не ниже 8.3.22 для последних релизов КА). В старых версиях были утечки памяти при работе с фоновыми заданиями распределения.
  5. Версионирование: Если включено «Версионирование объектов», проверьте размер таблицы HistoryOfObjects. Избыточное хранение версий счет-фактур замедляет их запись.

Таким образом, комплексный подход, включающий как методические настройки программы, так и техническую оптимизацию сервера, позволяет сократить время оформления счет-фактуры с нескольких минут до нескольких секунд. Помните, что в 1С:Комплексной автоматизации 2 ключевым фактором быстродействия является своевременная обработка фоновых заданий и отсутствие «хвостов» в регистрах заданий.

← На главную