Как запустить 1С:Бухгалтерию 2.0 на современных платформах 1С и PostgreSQL 11 без ошибок и тормозов

Системный администратор 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Перевод и поддержка устаревших конфигураций 1С, таких как 1С:Бухгалтерия предприятия 2.0 (или 1С:Управление производственным предприятием 1.3), на современном серверном окружении часто превращается в настоящий квест. Администраторы сталкиваются с дилеммой: новые базы (например, БП 3.0 или ЗУП 3.1) требуют актуальных версий платформы 1С и СУБД, в то время как старые базы намертво привязаны к прежним релизам.

В этой статье мы подробно проанализируем, почему возникают критические ошибки при открытии управляемых форм в БП 2.0, по какой причине СУБД PostgreSQL 11+ отказывается нормально проводить документы на старых платформах и как правильно настроить совместную работу конфигураций («зоопарк платформ») на одном физическом сервере.

Проблема 1: Ошибка POST-запроса к ресурсу /e1cib/logForm и падение сервера

При использовании платформы 1С версии 8.3.14 и выше в конфигурации БП 2.0 при попытке открыть управляемую форму (например, «Настройки ЭДО», «Прочие контролируемые сделки» или встроенную форму «Нерекомендуемая версия конфигурации») программа аварийно завершает работу с сообщением:

«Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm. По причине: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто».

Давайте выясним истинные причины этого поведения:

  1. Переход платформы на движок WebKit. Начиная с версии 8.3.14, разработчики 1С отказались от использования системного COM-объекта Internet Explorer под Windows и перевели отображение HTML-документов на встроенную библиотеку WebKit. Легаси-код БП 2.0 содержит формы, жестко завязанные на старые скрипты и свойства разметки IE. При попытке их рендеринга новый движок WebKit вызывает критический сбой в рабочем процессе сервера rphost. Именно поэтому фирма 1С ограничила рекомендуемую версию платформы для БП 2.0 релизом 8.3.13.1865.
  2. Разрядность серверных процессов. Использование 32-битного сервера 1С:Предприятия усугубляет проблему. При сериализации сложных управляемых форм в XML память процесса быстро фрагментируется, что приводит к падению сервера по ошибке обращения к памяти (Access Violation). Переход на полностью 64-битное серверное окружение (как сервера приложений, так и СУБД) стабилизирует систему, предотвращая мгновенное закрытие процесса.
  3. Проблемы лицензирования в виртуальных средах. В некоторых релизах платформ 8.3.14/15 наблюдалась некорректная обработка аппаратных или программных лицензий в виртуальных машинах (например, под VirtualBox). Вместо штатного сообщения о нехватке лицензий сервер выбрасывал ошибку аварийного завершения именно в момент обращения к ресурсу /e1cib/logForm.

Проблема 2: Дикие тормоза при проведении документов на PostgreSQL 11 и платформе 8.3.13

Если в попытке обойти проблему с 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.

Решение: Настройка мультиверсионного сервера 1С

Чтобы обеспечить стабильную и быструю работу БП 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:

Такой подход полностью исключит взаимное влияние настроек СУБД и предотвратит деградацию планов запросов в устаревшей конфигурации.

Шаг 3. Подключение пользователей к базам.

При добавлении баз в список информационных баз на клиентских компьютерах необходимо явно указывать порты подключения:

Благодаря предложенной схеме вы сможете безболезненно поддерживать legacy-системы и одновременно развивать современные конфигурации 1С на передовом системном софте.

← На главную