Приступая к обновлению сервера 1С и переводу информационных баз на более свежую версию платформы, крайне важно провести предварительное тестирование. Это позволяет убедиться в корректной работе всех критически важных функциональных элементов, таких как обмены данными, выгрузки, и в целом весь функционал, который важен для бесперебойной работы бизнеса. Мы понимаем, что не всегда все баги оперативно описываются в официальных источниках, и именно поэтому собственное тестирование становится неотъемлемой частью процесса.
Рассмотрим различные подходы и решения, которые помогут вам организовать эффективное тестирование серверной платформы 1С, включая ответы на распространенные вопросы о запуске нескольких версий и аспектах лицензирования.
Прежде чем мы углубимся в технические детали, давайте разберем, почему предварительное тестирование так необходимо:
Для эффективного тестирования нам потребуется специально выделенная среда – тестовый контур. Рассмотрим несколько рекомендуемых подходов к его организации:
Идеальным решением является выделение отдельного физического или виртуального сервера для разработки и тестирования. Этот подход гарантирует полную изоляцию от продуктивной среды и позволяет проводить любые эксперименты без риска повлиять на текущую работу пользователей. Такой сервер должен быть максимально приближен к продуктивному по своим характеристикам и составу ПО.
Нам может потребоваться дополнительная лицензия на сервер 1С для такого тестового контура. Если бюджет ограничен, можно рассмотреть вариант приобретения мини-сервера на 5 подключений, что существенно дешевле полнофункционального, но вполне достаточно для большинства задач тестирования.
Виртуальные машины (VM) стали стандартным и предпочтительным способом организации тестовых серверов 1С. Они предоставляют огромные преимущества:
Если в продуктивной среде 1С работает на виртуальных машинах, то логично и тестирование проводить в аналогичных виртуальных средах. Это обеспечит максимальное соответствие тестового контура продуктивному.
Для сред разработки и тестирования, особенно в экосистеме Linux, контейнеризация (например, с использованием Docker) набирает популярность. Она предлагает быструю изоляцию, портативность и масштабируемость. Однако для продуктивных сред 1С в контейнерах этот подход пока менее распространен, и могут возникнуть сложности с пробросом аппаратных ключей и активацией программных лицензий.
Автор изначально столкнулся с проблемой запуска двух консолей управления серверами 1С разных версий на одной машине. Эта проблема часто возникает из-за конфликтов DLL-библиотек (например, comcntr.dll), которые регистрируются в системе и используются консолями. Рассмотрим несколько подходов к решению этой задачи:
Самый простой и надежный способ избежать конфликтов – это установить консоли управления разных версий на разных машинах. Например, одну консоль (той версии, что соответствует продуктивной среде) можно установить на самом сервере 1С, а вторую (для тестируемой платформы) – на своей локальной рабочей станции. Это полностью исключит конфликты системных библиотек.
Для запуска консолей разных версий на одной машине, нам может потребоваться ручная регистрация или отмена регистрации нужных версий DLL-библиотек. Основной библиотекой, вызывающей конфликты, является comcntr.dll. Мы можем использовать утилиту regsvr32 для этого.
Важный момент: Этот метод требует осторожности и понимания того, как работает регистрация COM-объектов в Windows. Неправильные действия могут нарушить работу других приложений.
Мы можем создать пакетные файлы (батники), которые будут:
comcntr.dll.comcntr.dll из папки с требуемой версией платформы.Пример (концептуальный) батника для запуска консоли определенной версии:
:: Отменяем регистрацию текущей версии (путь может отличаться)
"%systemroot%\system32\regsvr32.exe" /u "C:\Program Files\1cv8\current_version\bin\comcntr.dll"
:: Регистрируем нужную версию для запуска (например, 8.3.18.1289)
"%systemroot%\system32\regsvr32.exe" "C:\Program Files\1cv8\8.3.18.1289\bin\comcntr.dll"
:: Запускаем консоль управления нужной версии
start "C:\Program Files\1cv8\8.3.18.1289\bin\1cv8.exe" /c "ENTERPRISE" /S server_name /N user /P password
:: После использования, можно отменить регистрацию или вернуть предыдущую
:: "%systemroot%\system32\regsvr32.exe" /u "C:\Program Files\1cv8\8.3.18.1289\bin\comcntr.dll"
:: "%systemroot%\system32\regsvr32.exe" "C:\Program Files\1cv8\current_version\bin\comcntr.dll"
Примечание: Необходимо заменить пути и версии на актуальные для вашей системы. Для успешной работы батник может потребоваться запускать от имени администратора.
Существуют более изощренные методы, включающие временное изменение переменных окружения или ключей реестра в рамках запуска отдельного процесса, чтобы система "видела" нужные DLL. Это сложнее в реализации, но позволяет избежать глобальных перерегистраций.
Один из ключевых вопросов, поднятых в обсуждении, касался возможности и законности запуска нескольких экземпляров сервера 1С (разных или одинаковых версий) на одном физическом или виртуальном сервере, используя при этом одну лицензию. Разберем этот вопрос подробно.
Технически, запустить несколько экземпляров сервера 1С на одном хосте абсолютно возможно. Для этого мы можем:
C:\Program Files\1cv8\8.3.18.1289 и C:\Program Files\1cv8\8.3.20.1711).Вопрос о лицензировании нескольких экземпляров сервера 1С на одной лицензии вызывает много споров. Однако, согласно официальной информации и практике, запуск нескольких экземпляров сервера 1С (разных или одинаковых версий) на одном физическом или виртуальном сервере на одной лицензии является законным и не противоречит условиям использования. Это подтверждается как опытом многих специалистов, так и наличием описаний подобных сценариев в официальной документации 1С (например, на ИТС).
Разберем ключевые моменты:
Лицензия 1С:Предприятие 8 ПРОФ на сервер ограничивает использование одним экземпляром сервера 1С не более 12 ядер процессора. Важно понимать, что запуск нескольких экземпляров сервера 1С (например, двух) на одной ПРОФ-лицензии на одном физическом сервере, даже если каждый из них использует до 12 ядер, не считается обходом ограничения ПРОФ и не дает функционала КОРП. Каждый запущенный экземпляр сервера 1С будет привязан к одной лицензии и будет работать в рамках ее ограничений (например, не более 12 ядер для ПРОФ).
Мы не получаем функционал КОРП (например, фоновое обновление конфигураций баз данных, распределение нагрузки по кластеру, внешнее управление сеансами) просто путем запуска нескольких экземпляров ПРОФ. Функционал КОРП относится к возможностям кластера серверов, а не к количеству агентов сервера на одном хосте.
Программные лицензии 1С привязываются к ключевым параметрам оборудования (MAC-адрес, CPU ID, жесткий диск и т.д.) либо физического сервера, либо виртуальной машины, на которой они активированы. Если параметры двух виртуальных машин идентичны (например, при клонировании без изменения ID), это может привести к проблемам с лицензированием и деактивации лицензий. Для тестовых целей, когда мы используем одну и ту же физическую или виртуальную машину для разных экземпляров сервера, программная лицензия обычно активируется один раз для этой машины и "видна" всеми запущенными на ней экземплярами.
Аппаратные USB-ключи обычно проще в использовании для нескольких экземпляров сервера на одном физическом хосте, так как ключ может быть "увиден" всеми экземплярами сервера или проброшен в виртуальные машины. Многие подтверждают, что с аппаратным ключом эта схема отлично работает и не вызывает проблем с лицензированием.
Помимо основных подходов, существуют практические советы, которые сделают процесс тестирования более эффективным:
Опыт показывает, что несколько платформ 1С могут стабильно работать вместе на одной машине. Для этого необходимо учитывать ряд "хитростей":
Для ускорения процесса установки и настройки новой платформы можно использовать систему символических ссылок. Это позволяет "подменять" активную версию платформы без полной переустановки или перенастройки путей. После установки новой версии платформы в свой каталог, достаточно изменить символическую ссылку, чтобы указать на новую версию, и затем перезапустить службу агента 1С.
В этом случае, установка новой платформы и ее "встраивание" в тестовый контур занимает время на скачивание и саму установку платформы, плюс буквально 1-2 минуты на изменение ссылки и перезапуск службы. Это создает готовое к работе окружение с минимальными затратами времени.
Давайте рассмотрим типичный порядок действий при тестировании и обновлении:
Общая мысль: В продуктивную среду должно идти только то, что было всесторонне протестировано в тестовом контуре.
Таким образом, для эффективного тестирования серверной платформы 1С мы рекомендуем:
Такой комплексный подход позволит нам обеспечить стабильность и надежность работы вашей системы 1С после обновлений.