Перевод и поддержка устаревших конфигураций 1С, таких как 1С:Бухгалтерия предприятия 2.0 (или 1С:Управление производственным предприятием 1.3), на современном серверном окружении часто превращается в настоящий квест. Администраторы сталкиваются с дилеммой: новые базы (например, БП 3.0 или ЗУП 3.1) требуют актуальных версий платформы 1С и СУБД, в то время как старые базы намертво привязаны к прежним релизам.
В этой статье мы подробно проанализируем, почему возникают критические ошибки при открытии управляемых форм в БП 2.0, по какой причине СУБД PostgreSQL 11+ отказывается нормально проводить документы на старых платформах и как правильно настроить совместную работу конфигураций («зоопарк платформ») на одном физическом сервере.
При использовании платформы 1С версии 8.3.14 и выше в конфигурации БП 2.0 при попытке открыть управляемую форму (например, «Настройки ЭДО», «Прочие контролируемые сделки» или встроенную форму «Нерекомендуемая версия конфигурации») программа аварийно завершает работу с сообщением:
«Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm. По причине: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто».
Давайте выясним истинные причины этого поведения:
8.3.14, разработчики 1С отказались от использования системного COM-объекта Internet Explorer под Windows и перевели отображение HTML-документов на встроенную библиотеку WebKit. Легаси-код БП 2.0 содержит формы, жестко завязанные на старые скрипты и свойства разметки IE. При попытке их рендеринга новый движок WebKit вызывает критический сбой в рабочем процессе сервера rphost. Именно поэтому фирма 1С ограничила рекомендуемую версию платформы для БП 2.0 релизом 8.3.13.1865./e1cib/logForm.Если в попытке обойти проблему с WebKit мы оставим платформу версии 8.3.13, но обновим СУБД до PostgreSQL 11 (чтобы ускорить базы БП 3.0), мы получим другую критическую проблему. При записи наборов записей или проведении регламентных документов время выполнения операции может вырасти с нескольких минут до нескольких часов!
Разберем, почему это происходит:
СУБД PostgreSQL версии 11 и выше требует оптимизированных SQL-запросов, генерируемых платформой. Платформа 1С версии 8.3.13 транслирует запросы без учета изменений в планировщике новой СУБД. В результате планировщик PostgreSQL 11 отказывается от использования индексов и переходит на полное сканирование таблиц (Sequential Scan / Table Scan). Запись движений по регистрам превращается в бесконечный процесс.
Официальные системные требования гласят: сборки PostgreSQL от 1С версии 11 и выше гарантированно совместимы только с платформой не ниже 8.3.14.1565.
Чтобы обеспечить стабильную и быструю работу БП 2.0 (на платформе 8.3.13) и БП 3.0 (на платформе 8.3.15+) на одном физическом сервере, настроим запуск двух независимых служб сервера 1С:Предприятия.
Рассмотрим по шагам процесс настройки параллельного запуска версий под управлением ОС Windows.
Шаг 1. Регистрация второй службы сервера 1С на альтернативных портах.
По умолчанию сервер 1С использует порты 1540 (порт агента), 1541 (порт кластера) и диапазон рабочих процессов 1560:1591. Нам нужно зарегистрировать службу для новой платформы (например, 8.3.15.1565) на свободные порты (например, 1640, 1641 и диапазон 1660:1691).
Запустим командную строку от имени Администратора и выполним следующую команду:
sc create "1C:Enterprise 8.3 Server (8.3.15.1565)" binPath= "\"C:\Program Files\1cv8\8.3.15.1565\bin\ragent.exe\" -srvc -agent -regport 1641 -port 1640 -range 1660:1691 -d \"C:\srvinfo_8_3_15\"" start= auto
Обратите внимание на параметр -d. Путь к каталогу реестра кластера обязательно должен отличаться от каталога первой службы (по умолчанию это C:\Program Files\1cv8\srvinfo), иначе службы повредят конфигурационные файлы друг друга.
Шаг 2. Разделение баз СУБД PostgreSQL.
Для обеспечения максимального быстродействия баз БП 2.0 и БП 3.0 рекомендуется запустить два экземпляра СУБД PostgreSQL:
5432) — для баз БП 2.0, работающих через платформу 8.3.13.5433) — для баз БП 3.0 и ЗУП 3.1, работающих через платформу 8.3.15+.Такой подход полностью исключит взаимное влияние настроек СУБД и предотвратит деградацию планов запросов в устаревшей конфигурации.
Шаг 3. Подключение пользователей к базам.
При добавлении баз в список информационных баз на клиентских компьютерах необходимо явно указывать порты подключения:
ИмяСервера (так как используются порты по умолчанию).ИмяСервера:1641.Благодаря предложенной схеме вы сможете безболезненно поддерживать legacy-системы и одновременно развивать современные конфигурации 1С на передовом системном софте.