Почему зависает 1С:Управление торговлей 10.3 при подборе номенклатуры и как это исправить?

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

Рано или поздно многие компании, использующие проверенную временем конфигурацию «1С:Управление торговлей» редакции 10.3, сталкиваются с неприятной проблемой: при попытке подобрать товар в документ система «задумывается», зависает или вовсе перестает отвечать на запросы пользователей. Ситуация усугубляется, если база данных работает в файловом режиме, ее объем превышает несколько гигабайт, а в качестве сервера терминалов используется обычная рабочая станция.

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

Причина 1. Режим подбора «Остатки и цены» в форме подбора

Проанализируем, как ведет себя система, когда менеджер открывает форму подбора номенклатуры. В типовой конфигурации УТ 10.3 в нижней части формы подбора доступно поле выбора режима: «По справочнику», «Остатки номенклатуры» или «Остатки и цены».

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

Типовой запрос, выполняемый системой «под капотом», выглядит примерно следующим образом:


ВЫБРАТЬ
    СправочникНоменклатура.Ссылка КАК Номенклатура,
    ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток,
    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ) КАК ТоварыНаСкладахОстатки
        ПО ТоварыНаСкладахОстатки.Номенклатура = СправочникНоменклатура.Ссылка
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
        ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка

В файловой базе объемом около 6 Гб выполнение подобных соединений таблиц (особенно виртуальной таблицы СрезПоследних регистра сведений и таблицы Остатки регистра накопления) приводит к колоссальным задержкам. База данных просто не успевает обрабатывать эти запросы в реальном времени, из-за чего интерфейс «намертво» зависает.

Решение проблемы:

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

Причина 2. Технические ограничения файлового режима базы данных

Размер базы данных 6 Гб для файлового формата *.1CD — это критический показатель, при котором стабильная и быстрая многопользовательская работа становится практически невозможной. Рассмотрим основные ограничения, с которыми мы сталкиваемся в данном случае:

Решение проблемы:

  1. Рассмотрим возможность перехода на клиент-серверный режим работы (использование бесплатной СУБД PostgreSQL совместно с сервером «1С:Предприятие»). Это полностью снимет проблему блокировок таблиц файловой базы и повысит надежность хранения данных.
  2. Если переход на SQL невозможен в ближайшее время, выполним свертку информационной базы. Это позволит обрезать старые неактуальные периоды (например, данные пятилетней давности), уменьшить физический размер файла 1Cv8.1CD и ускорить расчеты остатков.

Причина 3. Специфика терминального сервера на базе Windows 7

Использование клиентской операционной системы Windows 7 в качестве терминального сервера (с помощью неофициальных патчей, таких как RDP Wrapper) накладывает серьезные ограничения на дисковую и сетевую подсистемы:

ОС Windows 7 по умолчанию не оптимизирована под задачи обслуживания множественных одновременных файловых транзакций. Механизмы кэширования файлов и обработки сетевых очередей работают неэффективно. При одновременной работе нескольких пользователей в одной файловой базе через терминальные сессии операционная система начинает путаться в блокировках файлов блокировок (*.1cl), что приводит к зависаниям всех подключенных сеансов.

Решение проблемы:

  1. Перенесем базу данных и терминальные сессии пользователей на полноценную серверную операционную систему (например, Windows Server 2016/2019/2022).
  2. Убедимся, что операционная система сервера и клиентские машины используют современные протоколы сетевого доступа (SMB v2 или SMB v3), которые значительно лучше справляются с блокировками файлов, чем устаревший протокол SMB v1.

Причина 4. Влияние индекса полнотекстового поиска (ПТП)

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

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

Решение проблемы:

  1. Отключим полнотекстовый поиск, если он не используется сотрудниками в повседневной работе. Для этого перейдем в меню ОперацииУправление полнотекстовым поиском и снимем флажок активности поиска.
  2. Если полнотекстовый поиск необходим, выполним очистку и обновление индекса. В той же обработке управления поиском нажмем кнопку «Очистить индекс», а затем — «Обновить индекс». Это перестроит файлы поиска и ускорит позиционирование в списках.

Причина 5. Неоптимальная работа дисков и влияние антивирусного ПО

Файловая база объемом 6 Гб генерирует колоссальное количество мелких дисковых операций ввода-вывода (I/O). Обычные жесткие диски (HDD) физически не способны справляться с таким потоком информации, особенно при работе нескольких пользователей в терминале.

Кроме того, установленный на сервере антивирус может сканировать файл базы данных 1Cv8.1CD при каждом обращении к нему, блокируя доступ к файлу для платформы 1С.

Решение проблемы:

  1. Перенесем файлы информационной базы исключительно на скоростной твердотельный накопитель (SSD, а лучше — NVMe). Это обеспечит мгновенный доступ к данным и в разы сократит время выполнения динамических запросов подбора.
  2. Настроим исключения антивирусного программного обеспечения. В список исключений сканирования (белый список) в реальном времени необходимо добавить:
    • Файл базы данных 1Cv8.1CD.
    • Каталог временных файлов пользователей терминала (папку %TEMP%).
    • Папки локального кэша платформы 1С (каталоги %USERPROFILE%\AppData\Local\1C и %USERPROFILE%\AppData\Roaming\1C).

Причина 6. Необходимость профилактического обслуживания базы данных

Файловые базы данных 1С крайне чувствительны к некорректным завершениям сеансов (например, при отключении электричества или сбоях терминальных сессий Windows 7). Со временем в структуре базы накапливаются логические и физические ошибки, которые замедляют индексацию и работу запросов.

Проанализируем шаги по обязательному регулярному обслуживанию базы данных:

  1. Очистка кэша конфигурации: Поврежденный локальный кэш пользователя часто вызывает индивидуальные зависания форм. Очистим его, удалив базу из списка запуска 1С и добавив ее повторно, либо вручную удалив содержимое папок в каталогах AppData\Local\1C\1Cv83.
  2. Проверка утилитой chdbfl.exe: Перед проведением любых работ обязательно создадим резервную копию базы данных! Затем запустим утилиту chdbfl.exe (находится в каталоге установки платформы 1С, в папке bin), укажем путь к файлу базы и запустим исправление физических повреждений таблиц.
  3. Тестирование и исправление в Конфигураторе: Запустим базу в режиме «Конфигуратор». Перейдем в меню АдминистрированиеТестирование и исправление. Выберем пункты «Реиндексация таблиц» и «Деградация таблиц» (или «Сжатие таблиц»). Реиндексация полностью перестроит индексы всех таблиц, что позволит динамическим запросам в форме подбора выполняться значительно быстрее.

Применив данные рекомендации в комплексе, мы сможем добиться стабильной и плавной работы формы подбора номенклатуры в «1С:Управление торговлей 10.3», существенно снизив нагрузку на оборудование и повысив комфорт работы пользователей.

← На главную