При работе с программными продуктами 1С часто возникает ситуация, когда на одном компьютере или сервере необходимо поддерживать работу сразу нескольких конфигураций, требующих разные версии платформы. Например, устаревшая Зарплата и Управление Персоналом 2.5 может стабильно работать на платформе 8.3.6, в то время как современная ЗУП 3.1 требует версию не ниже 8.3.18 или 8.3.21. В этой статье мы подробно разберем, почему система может игнорировать ваши попытки запустить конкретный исполняемый файл и как правильно настроить окружение для работы с разными версиями.
Для начала проанализируем механизм запуска 1С. В папке с установленной программой (обычно это C:\Program Files\1cv8\common\) находится файл 1cestart.exe. Это так называемый "программный стартер" или загрузчик. Его основная задача — прочитать список баз, определить настройки конкретной информационной базы и запустить подходящую версию 1cv8.exe, которая находится в папке конкретного релиза (например, ...\8.3.11.3034\bin\1cv8.exe).
Когда мы пытаемся запустить конфигуратор напрямую через 1cv8.exe конкретной версии, указывая параметры командной строки, мы ожидаем, что именно она и откроется. Однако в клиент-серверном варианте работы ситуация меняется коренным образом. Давайте выясним причину этого поведения.
Рассмотрим важнейшее правило архитектуры 1С:Предприятие 8: версия клиентского приложения должна полностью совпадать с версией сервера 1С (вплоть до последнего знака в номере сборки). Это обусловлено тем, что протоколы взаимодействия между клиентом и сервером могут меняться от версии к версии.
Если ваша база данных расположена на сервере 1С версии 8.3.6.2041, то при попытке подключения Конфигуратор выполнит следующие действия:
8.3.6.2041) найдена, стартер автоматически перезапускает процесс именно под этой версией, игнорируя тот файл, который вы запустили изначально.Именно поэтому, как заметил автор темы, при работе с файловой базой запускается правильная версия (так как там нет контроля со стороны серверной службы), а при работе с серверной — всегда старая. Вывод: вы не сможете использовать функционал новой платформы (например, для загрузки .dt), если сама база данных привязана к старому серверу.
Если нам нужно, чтобы для конкретной базы (например, файловой или при наличии нескольких серверов) всегда выбиралась определенная версия, мы можем прописать это в настройках. Разберем по шагам:
1cestart.exe).8.3.11.После этого стартер будет пытаться запустить именно эту ветку платформы. Однако помните: для клиент-серверной базы это сработает только в том случае, если версия сервера соответствует указанной.
Проанализируем ситуацию с загрузкой файла .dt. Файл выгрузки информационной базы не является просто "архивом", это структурированные данные, формат которых зависит от версии платформы, в которой производилась выгрузка. Если вы выгрузили данные из платформы 8.3.11, файл может содержать новые типы объектов или структуры индексов, которые платформа 8.3.6 не умеет обрабатывать.
Важно: Платформа 1С поддерживает обратную совместимость "снизу вверх" (старый .dt можно загрузить в новую платформу), но не гарантирует и чаще всего блокирует загрузку "сверху вниз" (из новой в старую).
Если вам жизненно необходимо использовать разные платформы для разных серверных баз (например, одну для ЗУП 2.5, другую для ЗУП 3.1), единственным корректным решением будет запуск двух независимых экземпляров службы 1C:Enterprise 8 Server Agent. Рассмотрим, как это реализовать.
Для запуска второго сервера необходимо использовать разные порты и разные каталоги данных кластера. По умолчанию 1С использует порт 1540 (агент), 1541 (менеджер кластера) и диапазон 1560-1591 для рабочих процессов. Для второго сервера выберем, например, 1640, 1641 и 1660-1691 соответственно.
Регистрация второй службы выполняется через командную строку от имени администратора. Пример команды для создания службы:
sc create "1C:Enterprise 8.3.11 Server" binPath= "C:\Program Files\1cv8\8.3.11.3034\bin\ragent.exe -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\Program Files\1cv8\srvinfo_new\"" displayname= "1C:Enterprise 8.3.11 Server" depend= tcpip start= auto
Разберем параметры этой команды:
-srvc — запуск в режиме службы.-agent — запуск агента сервера.-regport 1641 — порт менеджера кластера (отличается от стандартного 1541).-port 1640 — порт агента сервера (отличается от 1540).-range 1660:1691 — диапазон портов для рабочих процессов.-d — путь к каталогу, где будут храниться настройки кластера и список баз. Обязательно создайте отдельную папку, иначе настройки новой платформы затрут старые.После создания службы ее необходимо запустить через оснастку services.msc. Теперь в консоли администрирования серверов 1С вы сможете добавить новый сервер, указав адрес в формате ИмяСервера:1640, и перенести туда необходимые базы.
Существует еще один инструмент — файл conf.cfg, расположенный в папке bin\conf. В нем можно задать параметр DefaultVersion, который будет указывать, какую версию платформы использовать по умолчанию для всех новых подключений. Рассмотрим пример содержания такого файла:
SystemPrefix=C:\Program Files\1cv8
DefaultVersion=8.3.11.3034
Однако помните, что этот метод является вспомогательным и не отменяет требования идентичности версий клиента и сервера в сетевом режиме.
Подводя итог, отметим, что работа на крайне старых платформах (таких как 8.3.6) несет в себе риски безопасности и стабильности. Вместо развертывания зоопарка серверов, наиболее рациональным решением будет обновление платформы до актуальной стабильной версии (например, из веток 8.3.22 или выше), которая поддерживает режим совместимости. ЗУП 2.5 вполне корректно работает на современных платформах, если в свойствах самой конфигурации в Конфигураторе установлен соответствующий Режим совместимости.
Таким образом, мы выяснили, что "магическое" переключение версий при запуске — это штатная работа системы контроля версий 1С, и для работы с обновленными конфигурациями вам неизбежно придется обновлять либо весь сервер целиком, либо поднимать параллельную службу для новых баз данных.