При активной работе в программе 1C:Бухгалтерия (или других конфигурациях на базе управляемых форм) пользователи нередко сталкиваются с ситуацией: после формирования сложных отчетов, таких как оборотно-сальдовая ведомость (ОСВ), с последующей расшифровкой в карточку счета интерфейс программы перестает корректно отображаться. Элементы форм начинают наезжать друг на друга, пропадают привязки, окна зависают или отображаются белыми прямоугольниками, а повторное открытие форм не помогает. Перезапуск клиента восстанавливает работу лишь временно. Проанализируем технические причины такого поведения и разберем все способы решения проблемы.
Выделим основные факторы, которые приводят к искажению и зависанию элементов управляемых форм:
1cv8c.exe или 1cv8.exe создает множество графических дескрипторов для отрисовки ячеек, рамок и шрифтов. При наличии ошибки платформы выделенные дескрипторы не освобождаются. Когда их количество приближается к системному лимиту Windows (10 000 на процесс), операционная система блокирует выделение ресурсов под новые окна, из-за чего управляемые формы ломаются.Наиболее надежным и фундаментальным решением является устранение платформенной ошибки. Рассмотрим варианты управления версиями платформы:
8.3.11 и выше решает проблему с компоновкой элементов и утечками памяти).8.3.8 или 8.3.9), это позволяет оперативно вернуть работоспособность базы до проведения планового масштабного обновления.Если сбой уже произошел на клиентском месте и пользователю нужно продолжить работу без перезапуска сеанса, используем принудительный сброс геометрии формы:
Иногда накопленные некорректные метаданные на сервере приложений 1С продолжают вызывать сбои. Чтобы очистить серверный кэш и не удалить при этом список информационных баз и настройки кластера, выполним следующую последовательность действий:
1C:Enterprise 8.3 Server Agent через консоль управления службами Windows (services.msc).C:\Program Files\1cv8\srvinfo\ или C:\Program Files (x86)\1cv8\srvinfo\).reg_1541).snccntx*..lst (такие как 1cv8wsrv.lst, 1cv8reg.lst), а также файлы описания баз данных (каталоги с GUID баз), иначе будут утеряны настройки кластера и список зарегистрированных баз.Для подтверждения того, что виновником является исчерпание системных графических ресурсов, выполним диагностику через системные средства:
Дескрипторы GDI (GDI Objects) и Дескрипторы USER (USER Objects).1cv8c.exe и сформируем проблемный отчет ОСВ с расшифровкой. Если счетчик GDI вплотную приближается к значению 10 000, в операционной системе наступает блокировка прорисовки окон.В качестве временной системной меры (особенно для терминальных серверов) можно увеличить порог дескрипторов через реестр Windows:
regedit) от имени администратора.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\WindowsGDIProcessHandleQuota и увеличим его десятичное значение с 10000 до 20000 (максимум до 65536).USERProcessHandleQuota (рекомендуемое значение — до 18000).Если искажения формы закрепились за конкретной учетной записью, сбросим индивидуальные настройки интерфейса через функционал БСП:
Администрирование -> Настройки пользователей и прав -> Очистка настроек (или откроем карточку нужного пользователя и перейдем по ссылке настроек).В ситуациях, когда срочно требуется продолжить формирование объемных отчетов, а обновление платформы отложено, эффективным обходным путем является публикация базы на веб-сервере (IIS или Apache). При работе через веб-клиент (браузер) отрисовка интерфейса выполняется движком браузера по стандартам HTML/CSS, что полностью исключает влияние лимитов дескрипторов GDI операционной системы Windows и обеспечивает стабильное отображение форм.