Во время выполнения обмена данными между конфигурациями (например, при переносе справочника контрагентов из «1С:Управление торговлей» в «1С:Бухгалтерию предприятия») пользователи и разработчики могут столкнуться с критическим сбоем. Система прерывает работу с сообщением: «Ошибка при выполнении запроса POST к ресурсу /e1cib/logForm: На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто».
Разберем детально, почему возникает эта ошибка, как диагностировать источник падения и какими способами можно восстановить стабильную работу обмена в клиент-серверном режиме.
Проанализируем основные факторы, которые приводят к аварийному завершению серверного процесса rphost в момент загрузки объектов:
rphost ограничен адресным пространством в 2–3 ГБ. Длительный серверный вызов с обработкой сотен объектов переполняет память и вызывает сбой./e1cib/logForm.srvinfo после обновления конфигураций может нарушать сопоставление типов.Посмотрим на алгоритм проверки строковых данных. Чтобы исключить падение парсера XML при чтении или записи реквизитов контрагента, реализуем вспомогательную функцию. Она использует встроенный метод платформы НайтиНедопустимыеСимволыXML и заменяет некорректные вхождения безопасными кодами:
Функция ЗаменитьНедопустимыеСимволы(Текст) Экспорт
ПозицияСимвола = 1;
Пока Истина Цикл
ПозицияСимвола = НайтиНедопустимыеСимволыXML(Текст, ПозицияСимвола);
Если ПозицияСимвола = 0 Тогда
Прервать;
КонецЕсли;
Текст = Сред(Текст, 1, ПозицияСимвола - 1) + "&" + Строка(КодСимвола(Сред(Текст, ПозицияСимвола, 1))) + Сред(Текст, ПозицияСимвола + 1);
КонецЦикла;
Возврат Текст;
КонецФункции
Разберем по шагам, как применить данную функцию в обработке обмена или правилах конвертации данных:
Наименование, НаименованиеПолное, ЮридическийАдрес) пропустите строковые значения через функцию ЗаменитьНедопустимыеСимволы.Контрагенты в исходной базе, выполнив очистку недопустимых символов в наименованиях и контактной информации.Рассмотрим ситуацию, когда в файловом варианте база отрабатывает без ошибок, а на сервере 1С вызов завершается аварийно. Это типичный симптом исчерпания виртуальной памяти рабочего процесса. Выполним следующие настройки администратора:
x86-64. Это снимет жесткое ограничение в 2 ГБ оперативной памяти на процесс rphost.Если проблема сохраняется, выполним очистку временных структур и локализуем сбой:
1C:Enterprise Server Agent. Перейдите в рабочий каталог сервера (по умолчанию каталог srvinfo) и удалите временные каталоги сеансов с расширением .snccntx. После этого запустите службу заново.logcfg.xml со сбором событий EXCP, EXCPCNTX и CALL. Это позволит увидеть точную строку программного модуля, на которой сервер генерирует критическое исключение.