Зависание интерфейса при подборе номенклатуры в документах закупки (поступления) и продажи (реализации) — крайне неприятная и, к сожалению, распространенная проблема в ERP-решениях 1С (УТ 11, КА 2, ERP). Пользователи сталкиваются с тем, что программа «намертво» зависает либо в момент открытия формы подбора, либо при попытке перенести выбранные товары в документ. При этом никаких ошибок система не выдает, а стандартная очистка локального кэша помогает лишь временно или не помогает вовсе.
В этой статье мы подробно разберем технические причины этого сбоя и рассмотрим пошаговые методы его устранения — от простых административных действий до оптимизации кода.
Наиболее частая причина «глухого» зависания при открытии подбора или вводе первых символов в строку поиска — это повреждение файлов индекса полнотекстового поиска. Форма подбора в современных конфигурациях активно использует механизмы ППД для быстрого поиска товаров по различным реквизитам. Если индекс поврежден или его служебные файлы (например, tableChanges.dat) разрослись до критических размеров, поисковый запрос зацикливает процесс на сервере.
Как решить эту проблему через интерфейс программы:
Альтернативный метод для файловых баз данных (физическое удаление):
1Cv8FTxt — именно в ней хранятся файлы полнотекстового поиска.Если полнотекстовый поиск не является критически важным для повседневной работы пользователей, его можно полностью отключить в тех же настройках поддержки и обслуживания, сняв флаг Полнотекстовый поиск данных. Это раз и навсегда исключит зависания, связанные с ППД.
Когда пользователь переносит товары из формы подбора в документ, система выполняет сериализацию данных. Для передачи больших массивов строк между серверным и клиентским контекстами платформа 1С использует объект ХранилищеЗначений или ВременноеХранилище. В этот момент на диске сервера создаются временные файлы с расширением .tmp.
Если база данных работает в клиент-серверном варианте, служба сервера 1С:Предприятия запускается от имени конкретного системного пользователя (обычно это usr1cv8). Если у этой учетной записи нет полных прав на системные временные каталоги, процесс записи файла зависает без генерации исключения.
Проверим и настроим права доступа:
Агент сервера 1С:Предприятия в диспетчере служб Windows.C:\Users\usr1cv8\AppData\Local\Temp или общая системная папка C:\Windows\Temp.usr1cv8 (или соответствующей доменной группы) установлены права Полный доступ (Full Control).В конфигурациях «Управление торговлей 11» и «Комплексная автоматизация 2» есть известная особенность работы формы подбора, связанная с бизнес-логикой соглашений и цен:
При больших объемах данных или сложной иерархии скидок эти запросы могут вызывать взаимные блокировки СУБД. Проанализируем эту ситуацию: попробуйте временно очистить поле поставщика в документе и выполнить подбор. Если зависание исчезло — проблема кроется именно в тяжелых алгоритмах расчета цен.
Для решения этой проблемы программисту необходимо использовать механизм расширений, чтобы перехватить процедуру переноса данных и оптимизировать запросы к регистрам сведений цен и скидок. Рассмотрим пример безопасного отключения тяжелых расчетов при интерактивном переносе через расширение конфигурации:
&ВОкруженииРасширения
&Перед("ВыполнитьПереносДанныхВДокумент")
Процедура Расш_ВыполнитьПереносДанныхВДокумент(ПараметрыПереноса)
// Отключим ресурсоемкие расчеты на время заполнения табчасти
ПараметрыПереноса.Вставить("ПропускатьТяжелыеРасчетыСкидок", Истина);
КонецПроцедуры
В некоторых релизах платформы (в частности, в ветках 8.3.12 и 8.3.13) присутствовали зарегистрированные ошибки работы управляемых форм. При закрытии формы подбора платформа пытается корректно сохранить состояние динамического списка номенклатуры (активную строку, положение прокрутки, раскрытые группы иерархии). В определенных сценариях это приводило к зацикливанию потока отрисовки интерфейса.
Варианты решения:
8.3.12).8.3.20 или более новых), в которых ошибки позиционирования и сохранения состояния динамических списков были окончательно исправлены вендором.Иногда кэш настроек конкретного пользователя внутри информационной базы (не локальный кэш на компьютере, а настройки, хранящиеся в системных таблицах базы данных) искажается. Это приводит к тому, что форма подбора зависает при попытке применить сохраненные ранее отборы или ширину колонок.
Как очистить настройки пользователя в базе:
ФормаПодбораНоменклатуры) и очистим настройки только для этого объекта.Последовательное применение этих шагов — от очистки полнотекстового индекса до проверки прав на временные директории сервера — гарантированно вернет стабильность работы формы подбора номенклатуры и избавит пользователей от зависаний системы.