Почему виснет справочник Контрагенты в 1С:Бухгалтерия 3.0 КОРП и как это исправить

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

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

Анализируем настройки динамического списка

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

  1. Группировки и иерархия. Проверим, какой режим просмотра установлен. Режим Дерево или Иерархический список требует от системы дополнительных расчетов для отображения узлов. В версии КОРП, где учитываются обособленные подразделения, эти расчеты могут быть особенно сложными. Попробуем переключить вид в обычный Список.
  2. Условное оформление. Разберем ситуацию с визуальными маркерами. В БП 3.0 по умолчанию включена проверка контрагентов по базе ФНС. Система пытается подсветить цветом тех, кто прекратил деятельность или имеет ошибки в ИНН/КПП. Если записей много, расчет оформления «на лету» создает колоссальную нагрузку.
  3. Состав колонок. Даже если мы удалили «лишние» колонки (например, адрес или телефон) через «Изменить форму», это не гарантирует, что 1С перестала выбирать эти данные из базы. Выясним, не установлена ли в свойствах полей динамического списка настройка ИспользоватьВсегда.

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

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

  1. Запустим конфигуратор и откроем сеанс в режиме отладки.
  2. В пользовательском режиме подготовимся к открытию справочника.
  3. В конфигураторе перейдем в меню Отладка — Замер производительности.
  4. Откроем справочник Контрагенты, дождемся полной прорисовки списка и выключим замер.

Проанализируем полученную таблицу. Нас интересуют строки с наибольшим значением в колонке «Чистое время». Особое внимание уделим процедуре ПриСозданииНаСервере. Если основное время уходит на выполнение методов типа ПроверитьКонтрагентов или ОбновитьСостояния, значит, проблема в фоновых проверках через интернет-сервисы.

Оптимизация текста запроса динамического списка

В версии КОРП запрос динамического списка значительно сложнее, чем в ПРОФ. Он включает в себя левые соединения (LEFT JOIN) с регистрами сведений, такими как СостоянияКонтрагентов и КонтактнаяИнформация. Для файловых баз (даже на SSD) большое количество соединений в одном запросе — критический фактор замедления.

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


ВЫБРАТЬ
    СправочникКонтрагенты.Ссылка КАК Ссылка,
    СправочникКонтрагенты.Наименование КАК Наименование,
    РегистрСостояния.Состояние КАК СостояниеПроверки,
    РегистрАдреса.Представление КАК Адрес
ИЗ
    Справочник.Контрагенты КАК СправочникКонтрагенты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияКонтрагентов КАК РегистрСостояния
    ПО СправочникКонтрагенты.Ссылка = РегистрСостояния.Контрагент
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК РегистрАдреса
    ПО СправочникКонтрагенты.Ссылка = РегистрАдреса.Объект
    И РегистрАдреса.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)

Чтобы ускорить работу, мы можем зайти в конфигуратор, найти форму списка справочника и проверить свойства динамического списка. Убедимся, что:

Влияние сервисов интернет-поддержки и проверки ФНС

Часто «зависание» — это не медленная работа кода, а ожидание ответа от внешнего ресурса. 1С:Бухгалтерия 3.0 активно взаимодействует с серверами api.orgaddress.1c.ru и другими. Если у пользователя настроен прокси-сервер, который блокирует эти запросы, форма будет «висеть» до истечения таймаута соединения.

Выясним причину, временно отключив все внешние проверки:

Техническое обслуживание файловой базы

Для баз объемом около 4 ГБ физическое состояние файла 1Cv8.1CD имеет решающее значение. После масштабного обновления с версии 2.0 структура таблиц изменилась, и данные могут быть сильно фрагментированы. Проанализируем состояние базы через «Тестирование и исправление»:

  1. Обязательно создадим резервную копию.
  2. Запустим Тестирование и исправление со следующими опциями:
    • Реиндексация таблиц;
    • Сжатие таблиц;
    • Пересчет итогов.
  3. Дополнительно используем утилиту chdbfl.exe (хотя автор темы ее применял, повторная проверка после сжатия не будет лишней).

Важный момент для системных администраторов: убедитесь, что папки с кэшем 1С (%LocalAppData%\1C\1cv8) добавлены в исключения антивируса. При открытии списка справочника 1С создает множество временных файлов, и их сканирование в реальном времени может замедлить процесс в 2–3 раза.

Особенности версии КОРП: Головные организации и филиалы

В КОРП-версии в справочнике Контрагенты используется реквизит ГоловнойКонтрагент. Это создает дополнительные связи в иерархии. Если в вашей базе много обособленных подразделений, стандартный запрос списка будет пытаться сопоставить каждого контрагента с его головной организацией. Рассмотрим возможность отключения отображения связей головной организации в списке, если бизнес-процесс позволяет это сделать. Это значительно упростит дерево запроса SQL (или внутреннего движка файловой базы) и вернет привычную скорость работы.

← На главную