В процессе администрирования систем на базе платформы 1С:Предприятие 8.3 системные администраторы и технические специалисты нередко сталкиваются со специфической проблемой: при запуске базы данных в файловом режиме по сети управляемые формы начинают вести себя некорректно. Пользователь запускает программу, начинает работать, но через некоторое время при попытке открыть документ, справочник или отчет интерфейс программы зависает. На экране появляется лишь внешняя рамка (контур) открываемого окна, внутри которого полностью отсутствует содержимое — нет ни кнопок, ни табличных частей, ни полей ввода. Программа перестает реагировать на действия пользователя, и спасает ситуацию только полная перезагрузка компьютера, после которой проблема через некоторое время повторяется вновь.
Особенно часто подобный сбой проявляется на рабочих станциях с ограниченными техническими ресурсами — например, под управлением 32-разрядных операционных систем Windows и с объемом оперативной памяти 4 ГБ и менее. При этом на соседних, более современных компьютерах, подключенных к той же самой базе по сети, программа может работать абсолютно стабильно. Давайте подробно разберем, с чем связано такое поведение платформы, проанализируем основные причины возникновения сбоя и рассмотрим пошаговые методы его устранения.
Это наиболее распространенная техническая причина, объясняющая, почему формы открываются «пустыми» именно на компьютерах с 32-битной версией Windows. Рассмотрим этот механизм подробнее.
По умолчанию любая 32-разрядная операционная система Windows выделяет для одного пользовательского процесса (в нашем случае это исполняемый файл платформы 1С 1cv8.exe) жестко ограниченный лимит виртуального адресного пространства — всего 2 ГБ. Этот лимит действует независимо от того, сколько физической оперативной памяти установлено на компьютере (будь то 4 ГБ, 8 ГБ или более).
Современные конфигурации 1С на управляемых формах при активной работе пользователей потребляют значительное количество ресурсов. При открытии тяжелых форм, формировании отчетов, динамическом считывании списков кэш процесса постепенно разрастается. Когда объем адресного пространства процесса 1cv8.exe приближается к критической отметке в 2 ГБ, платформа больше не может динамически выделить оперативную память под новые графические элементы интерфейса. Происходит следующее: операционная система успевает создать дескриптор нового окна (появляется рамка формы), но графический движок платформы не может инициализировать и прорисовать внутренние элементы управления. В результате программа зависает, отображая пустое окно.
Для решения этой проблемы разберем два возможных пути:
1cv8.exe до 4 ГБ адресного пространства (при условии наличия физической памяти), что полностью решает проблему нехватки памяти для отрисовки интерфейса.Для реализации второго варианта выполним следующие шаги:
cmd и запустите командную строку обязательно от имени Администратора.
bcdedit /set increaseuserva 3072
Начиная с версии платформы 8.3, графическая система 1С активно использует современные технологии Direct2D и DirectWrite для рендеринга управляемых форм, шрифтов и элементов управления. Это позволяет сделать интерфейс более плавным и красивым, однако накладывает повышенные требования к стабильности видеодрайверов.
Очень часто встроенные видеокарты (например, старые серии чипсетов Intel HD Graphics) имеют устаревшие версии драйверов, содержащие ошибки совместимости с Direct2D. При отрисовке сложных динамических форм видеодрайвер дает сбой, из-за чего графический поток 1С зависает, оставляя форму пустой или прозрачной.
Выясним, как отключить аппаратное ускорение непосредственно для платформы 1С, не затрагивая всю операционную систему:
/NoHardwareAcceleration
После этого графический движок 1С переключится в программный режим рендеринга интерфейса, что исключит влияние сбоев видеодрайвера на стабильность работы форм.
Работа с файловой базой данных 1С, расположенной на общем сетевом ресурсе (сетевой папке) через протокол SMB/CIFS, является крайне ненадежной технологией. Архитектура файловой СУБД 1С требует постоянного считывания и записи мелких порций данных во временные файлы, кэш метаданных и конфигурацию базы.
Если локальная сеть имеет скрытые дефекты (высокий пинг, потери пакетов на Wi-Fi-соединении, кратковременные микросбои сетевой карты), то в момент открытия формы поток отрисовки GUI на клиенте зависает. Программа отправляет запрос к файлу базы данных по сети, запрашивая структуру формы и ее данные, но из-за сетевой задержки не получает ответ вовремя. Графический поток переходит в режим ожидания (блокировки), создавая эффект «зависшей пустой формы».
Решением в данной ситуации является кардинальный отказ от прямого открытия файловой базы по локальной сети через общую папку. Рассмотрим наиболее эффективную альтернативу — перевод базы на веб-сервер:
\\server\base, а через протокол HTTP/HTTPS (например, http://server/mybase).При такой схеме работы всю тяжелую работу с файлами базы данных берет на себя веб-сервер, а на клиентский компьютер передаются только готовые структурированные данные по стабильному протоколу. Это полностью устраняет проблему блокировки графического интерфейса 1С из-за нестабильности локальной сети.
Кэш платформы 1С хранит на локальном диске пользователя предварительно скомпилированные формы, модули, настройки интерфейса и метаданные конфигурации. При аварийном завершении работы компьютера, сбоях сетевого подключения к базе или внезапном отключении электропитания файлы кэша могут записаться некорректно и повредиться.
При последующих запусках платформа пытается прочитать битую структуру интерфейса формы из локального кэша, из-за чего элементы управления не могут правильно инициализироваться. Проанализируем алгоритм полной очистки кэша на проблемном компьютере:
%localappdata%\1C\1cv8 (обычно это путь вида C:\Users\ИмяПользователя\AppData\Local\1C\1cv8)%appdata%\1C\1cv8 (обычно это путь вида C:\Users\ИмяПользователя\AppData\Roaming\1C\1cv8)2c98a3b5-4b8c...). Это и есть файлы кэша баз данных.ibases.v8i) при этом удалять не нужно.При отрисовке управляемой формы платформа 1С активно создает во временном каталоге операционной системы (папке %TEMP%) сотни мелких временных файлов, содержащих графические элементы интерфейса, скрипты WebKit и картинки.
Если на компьютере установлен сторонний антивирус, настроенный на агрессивный мониторинг файловой системы в реальном времени, он может перехватывать и блокировать доступ к этим временным файлам в момент их создания для проверки на сигнатуры вирусов. Платформа 1С пытается прочитать только что созданный графический файл интерфейса, но получает отказ доступа от операционной системы. Результат — зависшее окно программы.
Для исправления ситуации выполните следующие настройки в параметрах антивируса:
1cv8.exe и 1cv8c.exe в список доверенных программ антивируса (исключения из сканирования процессов).%localappdata%\1C\%TEMP% (или C:\Users\ИмяПользователя\AppData\Local\Temp)Таким образом, мы детально разобрали все возможные причины зависания графических форм 1С при работе по сети и пошагово изучили методы их устранения. Комплексный подход, сочетающий оптимизацию выделения памяти, отключение аппаратного ускорения графики и переход на клиент-серверную архитектуру (веб-сервер), гарантирует стабильную и быструю работу пользователей даже на слабых рабочих станциях.