Почему зависает подбор номенклатуры в документах закупки и продажи и как это исправить?

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

Зависание интерфейса при подборе номенклатуры в документах закупки (поступления) и продажи (реализации) — крайне неприятная и, к сожалению, распространенная проблема в ERP-решениях 1С (УТ 11, КА 2, ERP). Пользователи сталкиваются с тем, что программа «намертво» зависает либо в момент открытия формы подбора, либо при попытке перенести выбранные товары в документ. При этом никаких ошибок система не выдает, а стандартная очистка локального кэша помогает лишь временно или не помогает вовсе.

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

Причина 1: Сбой или повреждение индекса полнотекстового поиска (ППД)

Наиболее частая причина «глухого» зависания при открытии подбора или вводе первых символов в строку поиска — это повреждение файлов индекса полнотекстового поиска. Форма подбора в современных конфигурациях активно использует механизмы ППД для быстрого поиска товаров по различным реквизитам. Если индекс поврежден или его служебные файлы (например, tableChanges.dat) разрослись до критических размеров, поисковый запрос зацикливает процесс на сервере.

Как решить эту проблему через интерфейс программы:

  1. Перейдем в раздел НСИ и администрирование — Поддержка и обслуживание.
  2. Найдем раздел Полнотекстовый поиск данных.
  3. Нажмем кнопку Очистить индекс и дождемся завершения процесса (система удалит старые файлы разметки).
  4. После очистки нажмем кнопку Обновить индекс. Процесс индексации может занять некоторое время в зависимости от объема базы данных.

Альтернативный метод для файловых баз данных (физическое удаление):

  1. Полностью завершим работу всех пользователей в информационной базе.
  2. Откроем каталог, в котором физически расположена база данных 1С.
  3. Найдем папку с именем 1Cv8FTxt — именно в ней хранятся файлы полнотекстового поиска.
  4. Удалим эту папку (при следующем запуске программы и обновлении индекса она создастся автоматически).

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

Причина 2: Проблемы с правами доступа к временным папкам (Temp) на сервере

Когда пользователь переносит товары из формы подбора в документ, система выполняет сериализацию данных. Для передачи больших массивов строк между серверным и клиентским контекстами платформа 1С использует объект ХранилищеЗначений или ВременноеХранилище. В этот момент на диске сервера создаются временные файлы с расширением .tmp.

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

Проверим и настроим права доступа:

  1. Выясним, под каким пользователем запущена служба Агент сервера 1С:Предприятия в диспетчере служб Windows.
  2. Откроем свойства папки временных файлов на сервере. Обычно это путь: C:\Users\usr1cv8\AppData\Local\Temp или общая системная папка C:\Windows\Temp.
  3. Перейдем на вкладку Безопасность и убедимся, что для пользователя usr1cv8 (или соответствующей доменной группы) установлены права Полный доступ (Full Control).
  4. Рекомендуется также очистить эту папку от накопившихся старых временных файлов, так как операционная система может испытывать проблемы с генерацией новых уникальных имен файлов, если их количество в одной директории превышает десятки тысяч.

Причина 3: Архитектурные особенности пересчета цен при заполненном партнере

В конфигурациях «Управление торговлей 11» и «Комплексная автоматизация 2» есть известная особенность работы формы подбора, связанная с бизнес-логикой соглашений и цен:

При больших объемах данных или сложной иерархии скидок эти запросы могут вызывать взаимные блокировки СУБД. Проанализируем эту ситуацию: попробуйте временно очистить поле поставщика в документе и выполнить подбор. Если зависание исчезло — проблема кроется именно в тяжелых алгоритмах расчета цен.

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


&ВОкруженииРасширения
&Перед("ВыполнитьПереносДанныхВДокумент")
Процедура Расш_ВыполнитьПереносДанныхВДокумент(ПараметрыПереноса)
    // Отключим ресурсоемкие расчеты на время заполнения табчасти
    ПараметрыПереноса.Вставить("ПропускатьТяжелыеРасчетыСкидок", Истина);
КонецПроцедуры

Причина 4: Платформенные ошибки обработки динамических списков

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

Варианты решения:

  1. Откат платформы: Если зависания начались сразу после планового обновления платформы 1С, попробуйте временно откатить версию платформы до предыдущей стабильной (например, до стабильных релизов ветки 8.3.12).
  2. Обновление платформы: Наиболее надежный способ — обновить платформу 1С:Предприятие до актуальных LTS-релизов (например, ветки 8.3.20 или более новых), в которых ошибки позиционирования и сохранения состояния динамических списков были окончательно исправлены вендором.

Причина 5: Повреждение кэша настроек формы у конкретного пользователя

Иногда кэш настроек конкретного пользователя внутри информационной базы (не локальный кэш на компьютере, а настройки, хранящиеся в системных таблицах базы данных) искажается. Это приводит к тому, что форма подбора зависает при попытке применить сохраненные ранее отборы или ширину колонок.

Как очистить настройки пользователя в базе:

  1. Запустим программу под правами администратора.
  2. Перейдем в меню НСИ и администрирование — Настройки пользователей и прав.
  3. Выберем пункт Персональные настройки пользователей — Копирование и очистка настроек.
  4. В открывшемся окне выберем проблемного пользователя, переключимся в режим очистки настроек, найдем в списке форму подбора номенклатуры (ФормаПодбораНоменклатуры) и очистим настройки только для этого объекта.

Последовательное применение этих шагов — от очистки полнотекстового индекса до проверки прав на временные директории сервера — гарантированно вернет стабильность работы формы подбора номенклатуры и избавит пользователей от зависаний системы.

← На главную