Рано или поздно многие компании, использующие проверенную временем конфигурацию «1С:Управление торговлей» редакции 10.3, сталкиваются с неприятной проблемой: при попытке подобрать товар в документ система «задумывается», зависает или вовсе перестает отвечать на запросы пользователей. Ситуация усугубляется, если база данных работает в файловом режиме, ее объем превышает несколько гигабайт, а в качестве сервера терминалов используется обычная рабочая станция.
В этой статье мы подробно разберем причины возникновения таких задержек и рассмотрим комплекс мер по оптимизации работы системы, начиная от простых настроек интерфейса программы и заканчивая тонкой настройкой системного окружения.
Проанализируем, как ведет себя система, когда менеджер открывает форму подбора номенклатуры. В типовой конфигурации УТ 10.3 в нижней части формы подбора доступно поле выбора режима: «По справочнику», «Остатки номенклатуры» или «Остатки и цены».
Если пользователи выбирают режим Остатки и цены, платформа 1С при каждом перемещении по списку товаров, вводе символов в строку поиска или переключении групп номенклатуры выполняет тяжелый динамический запрос к базе данных. Система пытается в режиме реального времени рассчитать текущие остатки по складам и актуальные цены для каждой строки, отображаемой на экране.
Типовой запрос, выполняемый системой «под капотом», выглядит примерно следующим образом:
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Номенклатура,
ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Остаток,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ) КАК ТоварыНаСкладахОстатки
ПО ТоварыНаСкладахОстатки.Номенклатура = СправочникНоменклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка
В файловой базе объемом около 6 Гб выполнение подобных соединений таблиц (особенно виртуальной таблицы СрезПоследних регистра сведений и таблицы Остатки регистра накопления) приводит к колоссальным задержкам. База данных просто не успевает обрабатывать эти запросы в реальном времени, из-за чего интерфейс «намертво» зависает.
Решение проблемы:
Размер базы данных 6 Гб для файлового формата *.1CD — это критический показатель, при котором стабильная и быстрая многопользовательская работа становится практически невозможной. Рассмотрим основные ограничения, с которыми мы сталкиваемся в данном случае:
Решение проблемы:
PostgreSQL совместно с сервером «1С:Предприятие»). Это полностью снимет проблему блокировок таблиц файловой базы и повысит надежность хранения данных.1Cv8.1CD и ускорить расчеты остатков.Использование клиентской операционной системы Windows 7 в качестве терминального сервера (с помощью неофициальных патчей, таких как RDP Wrapper) накладывает серьезные ограничения на дисковую и сетевую подсистемы:
ОС Windows 7 по умолчанию не оптимизирована под задачи обслуживания множественных одновременных файловых транзакций. Механизмы кэширования файлов и обработки сетевых очередей работают неэффективно. При одновременной работе нескольких пользователей в одной файловой базе через терминальные сессии операционная система начинает путаться в блокировках файлов блокировок (*.1cl), что приводит к зависаниям всех подключенных сеансов.
Решение проблемы:
В платформе «1С:Предприятие 8.3» по умолчанию включен механизм полнотекстового поиска данных. Он предназначен для быстрого поиска информации по всей базе данных. Однако в крупных файловых базах этот механизм часто становится причиной серьезных зависаний.
При подборе номенклатуры менеджеры часто используют строку быстрого поиска по наименованию или артикулу. В этот момент система обращается к индексу полнотекстового поиска. Если индекс поврежден, не обновлен или разросся до огромных размеров, поиск по справочнику номенклатуры приводит к длительной блокировке интерфейса.
Решение проблемы:
Операции — Управление полнотекстовым поиском и снимем флажок активности поиска.Файловая база объемом 6 Гб генерирует колоссальное количество мелких дисковых операций ввода-вывода (I/O). Обычные жесткие диски (HDD) физически не способны справляться с таким потоком информации, особенно при работе нескольких пользователей в терминале.
Кроме того, установленный на сервере антивирус может сканировать файл базы данных 1Cv8.1CD при каждом обращении к нему, блокируя доступ к файлу для платформы 1С.
Решение проблемы:
1Cv8.1CD.%TEMP%).%USERPROFILE%\AppData\Local\1C и %USERPROFILE%\AppData\Roaming\1C).Файловые базы данных 1С крайне чувствительны к некорректным завершениям сеансов (например, при отключении электричества или сбоях терминальных сессий Windows 7). Со временем в структуре базы накапливаются логические и физические ошибки, которые замедляют индексацию и работу запросов.
Проанализируем шаги по обязательному регулярному обслуживанию базы данных:
AppData\Local\1C\1Cv83.chdbfl.exe (находится в каталоге установки платформы 1С, в папке bin), укажем путь к файлу базы и запустим исправление физических повреждений таблиц.Администрирование — Тестирование и исправление. Выберем пункты «Реиндексация таблиц» и «Деградация таблиц» (или «Сжатие таблиц»). Реиндексация полностью перестроит индексы всех таблиц, что позволит динамическим запросам в форме подбора выполняться значительно быстрее.Применив данные рекомендации в комплексе, мы сможем добиться стабильной и плавной работы формы подбора номенклатуры в «1С:Управление торговлей 10.3», существенно снизив нагрузку на оборудование и повысив комфорт работы пользователей.