Почему вылетает ERP при интеграции с Документооборотом на платформе 8.3.22.1709 и как это исправить?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

Переход на новые версии технологической платформы 1С:Предприятие часто сулит повышение производительности и новые возможности, однако иногда сопровождается неожиданными регрессионными ошибками. Одной из самых резонансных проблем в ветке 8.3.22 (в частности, в сборке 1709) стало нарушение стабильности работы интеграции между 1С:ERP Управление предприятием и 1С:Документооборот. Пользователи столкнулись с тем, что при попытке входа в систему или при открытии начальной страницы сеанс зависает, после чего аварийно завершается с ошибкой в модуле core83.dll.

В рамках данной статьи мы подробно разберем, почему возникает эта проблема, проанализируем механизмы взаимодействия конфигураций через веб-сервисы и рассмотрим несколько способов решения: от оперативного «костыля» в коде до системных административных мер.

Проанализируем причину возникновения ошибки

Для начала выясним причину, по которой безобидное обновление платформы приводит к «падению» всей системы. Проблема кроется в программной ошибке самой платформы, которая была официально зарегистрирована под номером 10238862. Суть ее заключается в некорректной обработке событий динамических списков, данные для которых подтягиваются из внешней системы (в нашем случае — из «1С:Документооборота») через механизмы Библиотеки интеграции с документооборотом (БИД).

Когда в ERP настроена интеграция задач, на начальной странице или в специализированных формах отображается список «Задачи мне». Этот список работает через веб-сервисы. В версии 8.3.22.1709 механизм платформы при определенных условиях начинает бесконечно генерировать событие ПриАктивизацииСтроки. Происходит следующая цепочка действий:

  1. Форма открывается, и динамический список пытается отрисовать первую строку.
  2. Срабатывает событие активации строки, которое инициирует обращение к веб-сервису 1С:ДО для получения подробностей задачи.
  3. Получение данных вызывает обновление состояния интерфейса.
  4. Платформа ошибочно интерпретирует это обновление как повторную активацию строки.
  5. Возникает бесконечная рекурсия.

В результате переполняется стек вызовов или происходит обращение к недопустимому адресу памяти в библиотеке core83.dll, что и приводит к мгновенному закрытию клиентского приложения.

Решение №1: Программное прерывание рекурсии (через расширение)

Если у вас нет возможности немедленно обновить платформу на исправленную версию, наиболее эффективным методом будет внесение небольшого изменения в логику работы формы «Задачи мне». Мы рекомендуем делать это через расширение конфигурации, чтобы сохранить типовую конфигурацию на поддержке.

Рассмотрим по шагам, как реализовать этот механизм. Нам необходимо создать проверку, которая будет определять, действительно ли пользователь перешел на новую строку или событие вызвано программно для той же самой строки.

Во-первых, в модуле формы ЗадачиМне (которая находится в составе объектов интеграции с ДО внутри ERP) нам нужно объявить переменную, которая будет хранить идентификатор последней активированной строки. Разместим её в области описания переменных на клиенте:


#Область ОписаниеПеременных
&НаКлиенте
Перем КлючСтрокиЗадач; // Переменная для хранения идентификатора текущей строки
#КонецОбласти

Во-вторых, проанализируем обработчик события ЗадачиПриАктивизацииСтроки. Нам нужно модифицировать его так, чтобы основной код получения данных выполнялся только при реальной смене строки. Рассмотрим пример реализации:


&НаКлиенте
Процедура ЗадачиПриАктивизацииСтроки(Элемент)
    
    // Проверяем, совпадает ли текущая строка с сохраненной в переменной
    Если Элемент.ТекущаяСтрока = КлючСтрокиЗадач Тогда
        // Если это та же строка, просто выходим из процедуры, прерывая цикл
        Возврат;
    КонецЕсли;
    
    // Если строка новая, запоминаем её ключ
    КлючСтрокиЗадач = Элемент.ТекущаяСтрока;
    
    // Далее следует типовой код обработки...
    // ОбновитьПодробностиЗадачи();
    
КонецПроцедуры

Этот нехитрый прием позволяет «отсечь» лишние срабатывания платформы и стабилизировать работу формы. Обратите внимание, что объект Элемент.ТекущаяСтрока в динамических списках БИД обычно представляет собой идентификатор задачи во внешней системе, поэтому сравнение будет работать корректно.

Решение №2: Обновление платформы до исправленных сборок

Хотя программная правка помогает «здесь и сейчас», стратегически правильным решением будет переход на ту версию платформы, где баг 10238862 был исправлен разработчиками 1С. Рассмотрим список версий, в которых данная проблема уже не наблюдается:

Если ваша организация жестко регламентирует использование конкретных версий ПО, и переход на 8.3.23 пока невозможен, рекомендуется выполнить «даунгрейд» (откат) на стабильную версию 8.3.21.1622 или аналогичную из 21-й ветки. Практика показывает, что 21-я платформа лишена этой специфической ошибки при работе с динамическими списками через веб-сервисы.

Решение №3: Отключение виджетов на начальной странице

Посмотрим на ситуацию со стороны пользователя. Если ERP не запускается вовсе (вылетает сразу после авторизации), это происходит из-за того, что форма «Задачи мне» включена в состав Начальной страницы (Рабочего стола). Чтобы войти в систему и хотя бы выполнить административные действия, можно воспользоваться следующими методами:

  1. Запуск с параметром отключения форм: Можно попробовать запустить тонкий клиент с параметром /ClearCache (иногда помогает проскочить инициализацию) или через веб-клиент.
  2. Настройка начальной страницы под другим пользователем: Администратор может зайти в информационную базу под своей учетной записью (у которой не настроены виджеты ДО), перейти в список «Настройки пользователей и прав» и для проблемного пользователя временно очистить настройки рабочего стола.

После того как пользователь сможет зайти в систему, ему следует через меню «Настройки — Настройка начальной страницы» удалить формы, связанные с 1С:Документооборотом. Это позволит работать с другими подсистемами ERP (склад, производство, продажи) до тех пор, пока программисты не внедрят исправление в код расширения.

Дополнительные рекомендации и использование патчей

Разберем еще один важный момент. Фирма 1С для типовых конфигураций, таких как ERP 2.4/2.5 или Комплексная автоматизация, часто выпускает патчи (исправления). Это небольшие расширения, которые загружаются автоматически через механизм интернет-поддержки.

Проверьте в разделе «Обслуживание — Обновление программы — Установленные исправления (патчи)», нет ли там патча, в описании которого упоминается интеграция с ДО или ошибка ПриАктивизацииСтроки. Если вы работаете в закрытом контуре без доступа к интернету, эти патчи можно скачать вручную с портала ИТС и установить в базу. Обычно они имеют префикс EF_ и код ошибки.

Резюмируем: проблема платформы 8.3.22.1709 является критической для всех, кто использует бесшовную интеграцию. Если вы столкнулись с ошибкой core83.dll, первым делом проверьте версию платформы. Если это 1709 — либо обновляйте её до последней актуальной в ветке 8.3.22, либо внедряйте в расширение проверку ключа строки в событии ЗадачиПриАктивизацииСтроки, как мы рассмотрели выше. Это гарантированно вернет работоспособность интеграции ERP и Документооборота.

← На главную