При администрировании крупных инфраструктур «1С:Предприятие» часто применяется схема поэтапного обновления. Сначала новая версия платформы централизованно устанавливается на компьютеры пользователей с помощью групповых политик (GPO) Active Directory, а серверная часть обновляется позже — во внерабочее время, когда все рабочие станции уже подготовлены. При такой схеме стартер 1cestart.exe должен автоматически определять версию сервера и запускать соответствующий локально установленный релиз тонкого или толстого клиента.
Однако системные администраторы часто сталкиваются со следующей проблемой: после успешной установки нового релиза платформы на клиентские машины, стартер при попытке входа в базу выдает ошибку: «HTTP: Conflict. Требуется установка новой версии 1С:Предприятия» (с указанием старой версии, на которой работает сервер, например, 8.3.13.1644). При этом физически старая версия платформы остается установленной на компьютере пользователя, и если запустить исполняемый файл напрямую (например, через C:\Program Files (x86)\1cv8\8.3.13.1644\bin\1cv8s.exe), подключение к базе проходит успешно.
В этой статье мы подробно разберем механизмы поиска версий стартером 1С, выясним причины сбоя при использовании GPO и рассмотрим правильные варианты решения этой проблемы.
Для того чтобы понять природу ошибки, проанализируем алгоритм работы программы запуска 1cestart.exe. При старте утилита обращается к конфигурационным файлам 1cestart.cfg, которые располагаются в двух основных каталогах операционной системы:
C:\ProgramData\1C\1CEStart\1cestart.cfg%APPDATA%\1C\1CEStart\1cestart.cfgОсновную роль в поиске установленных на компьютере версий платформы играет параметр InstalledLocation в файле конфигурации. Этот параметр указывает стартеру корневые папки, внутри которых находятся каталоги с релизами платформы. По умолчанию стандартный инсталлятор прописывает туда пути к каталогам установки 1С:
InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8
Если этот параметр отсутствует или поврежден в конфигурационном файле, стартер теряет возможность динамически искать папки с установленными релизами (такими как 8.3.13.1644, 8.3.15.1700 и т.д.). В этом случае он может запустить только ту версию платформы, которая является для него «родной» (из каталога которой запущен сам исполняемый файл или на которую указывает ярлык на рабочем столе). Пытаясь подключиться к базе на новом клиенте, он получает отказ от старого сервера в виде ошибки HTTP 409 (Conflict).
Разберем ситуацию, которая приводит к поломке механизма автовыбора версий при развертывании платформы через групповые политики Active Directory. Часто для удобства пользователей администраторы настраивают централизованное распространение списка информационных баз. Для этого через Preferences (Предпочтения GPO) на клиентские компьютеры копируется готовый файл настроек 1cestart.cfg в папку C:\ProgramData\1C\1CEStart\.
Если в шаблоне копируемого файла администратор указал только ссылку на список общих баз (параметр CommonInfoBases), но забыл добавить строки InstalledLocation, то при первом же применении групповой политики корректный локальный файл настроек заменяется усеченной версией шаблона. В результате стартер полностью «слепнет» и перестает видеть любые ранее установленные версии платформы, кроме самой последней.
Для устранения данной проблемы рассмотрим два основных сценария: быстрое исправление текущей ситуации на клиентах и долгосрочная правильная настройка развертывания 1С в доменной сети.
Если проблема уже затронула рабочие станции пользователей, нам необходимо скорректировать файл 1cestart.cfg, исправив настройки групповой политики, которая его распространяет.
Убедимся, что шаблон файла содержит корректный набор параметров. Откроем шаблон конфигурационного файла в текстовом редакторе и приведем его к следующему виду:
InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8
CommonInfoBases=C:\ProgramData\1C\1CEStart\ibases.v8i
UseHwLicenses=1
Важно: Файлы конфигурации 1С (1cestart.cfg) должны быть сохранены строго в кодировке UTF-16LE (в блокноте Windows этот формат называется «Юникод» или «UTF-16 LE»). Если сохранить файл в обычной кодировке UTF-8 или ANSI, стартер 1С не сможет корректно прочитать параметры, что приведет к неработоспособности программы запуска.
После обновления шаблона в GPO выполните принудительное обновление политик на клиентских ПК с помощью команды:
gpupdate /force
Чтобы избежать постоянной перезаписи локальных конфигурационных файлов пользователей и исключить подобные проблемы в будущем, наиболее технологичным решением является использование механизма общих сетевых настроек 1С. Разберем по шагам, как настроить этот процесс:
\\Server-1C\Deploy\), общий конфигурационный файл с именем 1cescmn.cfg.
CommonInfoBases=\\Server-1C\Deploy\ibases.v8i
DistributiveLocation=\\Server-1C\Deploy\Distr\
1cestart.cfg в каталоге C:\ProgramData\1C\1CEStart\ со ссылкой на наш сетевой файл. Содержимое локального файла должно выглядеть следующим образом:
CommonCfgLocation=\\Server-1C\Deploy\1cescmn.cfg
InstalledLocation=C:\Program Files\1cv8
InstalledLocation=C:\Program Files (x86)\1cv8
При такой конфигурации локальный файл 1cestart.cfg больше не требуется постоянно обновлять или заменять через GPO. Он указывает стартеру базовые пути поиска платформ на самом компьютере (благодаря InstalledLocation) и перенаправляет его к централизованному файлу настроек на сервере. При изменении списка баз администратору достаточно отредактировать один файл 1cescmn.cfg в сетевом каталоге.
Проанализируем еще один важный нюанс, связанный с разрядностью операционных систем и самой платформы «1С:Предприятие». Начиная с версии 8.3, разработчики активно внедряют 64-битного тонкого и толстого клиента для Windows.
По умолчанию пути установки различаются:
C:\Program Files (x86)\1cv8C:\Program Files\1cv8Если на компьютерах пользователей одновременно используются платформы разной разрядности (например, старая версия 8.3.13 была 32-битной, а новая 8.3.15 развернута как 64-битная), стартер обязательно должен иметь пути к обоим каталогам. Убедитесь, что в параметрах InstalledLocation вашего конфигурационного файла прописаны обе строчки. Это гарантирует, что 64-битный стартер сможет без проблем найти и запустить устаревшего 32-битного клиента для подключения к еще не обновленному серверу приложений.