В практике администрирования и разработки на платформе 1С:Предприятие 8 часто возникает неприятная ситуация: в Конфигураторе мы видим красивую, современную управляемую форму отчета (например, оборотно-сальдовой ведомости), а при запуске в режиме «1С:Предприятие» перед пользователем предстает либо пустой экран, либо старый, «поломанный» интерфейс обычного приложения. Элементы управления могут съезжать, исчезать или отображаться в автоматически сгенерированном виде, который крайне далек от проектного дизайна.
В этой статье мы подробно проанализируем причины возникновения подобного расхождения, детально рассмотрим механизм работы различных клиентских приложений 1С, изучим влияние кэша метаданных на отрисовку интерфейса и найдем оптимальные способы устранения этой проблемы.
Разберем фундаментальное различие между типами клиентских приложений 1С, которое чаще всего и становится источником подобных «непонятных» ситуаций.
Платформа 1С использует три основных типа клиентских приложений для запуска баз данных:
1cv8c.exe): Предназначен исключительно для работы в режиме управляемого приложения. Он не выполняет сложные вычисления на стороне пользователя, а лишь транслирует запросы к серверу (или локальному СУБД-движку) и отрисовывает готовый интерфейс на основе XML-описаний управляемых форм.1cv8.exe): Универсальный клиент, который может работать в двух режимах — «Обычное приложение» (устаревший интерфейс на базе пиксельных форм) и «Управляемое приложение» (современный интерфейс на базе декларативных форм).Проанализируем ситуацию: если в настройках запуска информационной базы или в свойствах конфигурации по умолчанию установлен запуск в режиме «Обычное приложение», то при использовании толстого клиента платформа попытается открыть современную управляемую форму в «старом» окружении. В результате происходит автогенерация формы силами платформы, так как обычный режим не умеет полноценно работать со сложными декларативными управляемыми интерфейсами. Отсюда и возникает искажение внешнего вида отчета.
Решение проблемы на уровне настроек запуска:
Для того чтобы гарантировать корректное открытие современных форм, необходимо принудительно запускать базу в режиме тонкого клиента или явно указать тип управляемого приложения. Пройдем по шагам процесс настройки:
Если требуется запустить толстый клиент, но строго в режиме управляемого приложения, мы можем использовать специальный параметр командной строки. Для этого в поле «Дополнительные параметры запуска» пропишем ключ:
/RunModeManagedApplication
Выясним причину, почему даже при правильном выборе клиента интерфейс программы может продолжать отображаться некорректно. Платформа 1С для ускорения работы активно кэширует структуру конфигурации, программные модули и описания форм на компьютере конечного пользователя.
Эти файлы кэша сохраняются в системных директориях профиля Windows:
%LocalAppData%\1C\1Cv8 (обычно это путь вида C:\Users\ИмяПользователя\AppData\Local\1C\1Cv8)%AppData%\1C\1Cv8 (путь вида C:\Users\ИмяПользователя\AppData\Roaming\1C\1Cv8)Если в процессе обновления конфигурации произошел сбой сети или ПК пользователя некорректно завершил работу, локальные файлы кэша рассинхронизируются с реальной конфигурацией базы данных. Платформа пытается построить форму отчета, обращаясь к битым локальным файлам кэша, из-за чего интерфейс «ломается».
Как правильно очистить кэш 1С:
Рассмотрим два основных способа решения этой проблемы.
Способ 1. Удаление и повторное добавление базы в список запуска
Это самый простой и безопасный метод для рядового пользователя:
Способ 2. Ручная или автоматическая очистка временных папок
Для системных администраторов более эффективным решением будет очистка папок скриптом. Разберем пример скрипта автоматической очистки кэша (командный файл clear_cache.bat):
rmdir /s /q "%LocalAppData%\1C\1Cv8"
rmdir /s /q "%AppData%\1C\1Cv8"
echo Кэш успешно очищен!
pause
Этот скрипт полностью очищает временные файлы всех баз данных 1С на данном рабочем месте, заставляя платформу при следующем запуске скачать актуальные метаданные напрямую из базы данных.
Рассмотрим ситуацию, когда база данных является файловой (файл 1cv8.1cd) и лежит в общей папке на условном «сервере» (файловом хранилище), к которому пользователи подключаются по локальной сети через протокол SMB.
Такой архитектурный подход несет в себе критические риски для стабильности кэша и интерфейса:
Если перевести базу на полноценный клиент-серверный вариант (с использованием MS SQL Server или PostgreSQL) нет возможности по причине отсутствия лицензий, идеальным бесплатным выходом станет публикация файловой базы на веб-сервере (IIS или Apache).
Разберем по шагам, почему публикация на веб-сервере полностью устраняет описанные проблемы с интерфейсом и кэшем:
1cv8.1cd работает только сам веб-сервер, запущенный локально на компьютере-сервере. Клиентские компьютеры больше не имеют прямого сетевого доступа к файлу базы данных, что полностью исключает конфликты сетевых блокировок.Для публикации базы достаточно установить бесплатный веб-сервер (например, Apache 2.4), зайти в Конфигуратор под правами администратора, перейти в меню «Администрирование» -> «Публикация на веб-сервере...», указать имя публикации, каталог и нажать кнопку «Опубликовать». После этого пользователи смогут подключаться к базе через тонкий клиент, просто указав HTTP-ссылку вместо сетевого пути.