После обновления платформы до версии 8.3.22.2239 многие разработчики столкнулись с неприятной ситуацией: при попытке выполнить сравнение или объединение основной конфигурации с хранилищем (особенно в тяжелых решениях, таких как УПП 1.3) процесс прерывается неочевидной ошибкой. Дерево объектов выводится корректно, но при попытке выбрать конкретную форму документа для объединения система выдает сбой, который не диагностируется стандартными средствами поиска.
В этой статье мы подробно разберем причины возникновения данной проблемы, проанализируем механизмы работы платформы 8.3.22 и предложим последовательность шагов для восстановления стабильной работы разработчика.
Проанализируем ситуацию. Проблема чаще всего проявляется на конфигурациях с большим количеством обычных форм и низким режимом совместимости (например, 8.2.13 или 8.2.16). В ветке платформ 8.3.22 компания 1С существенно переработала внутренние механизмы парсинга метаданных и отрисовки диалоговых окон сравнения. Это привело к тому, что при работе с перегруженными объектами (в которых сотни реквизитов и элементов управления на формах) стандартный механизм сравнения «Клиент — Сервер хранилища» начинает вести себя нестабильно.
Выясним основную причину: при сравнении объектов платформа пытается собрать временный файл конфигурации из фрагментов, хранящихся в базе данных хранилища. Если хранилище работает через crserver.exe, обмен данными может прерываться из-за внутренних таймаутов или ошибок выделения памяти в процессе rphost. Ошибка часто возникает именно на этапе десериализации сложных форм.
Прежде чем переходить к радикальным мерам, выполним стандартные процедуры обслуживания хранилища, которые помогают в большинстве случаев «замусоривания» данных. Рассмотрим действия по шагам:
Если эти действия не помогли, значит проблема кроется глубже — во взаимодействии версий клиента и сервера.
Разберем важный нюанс, о котором часто забывают системные администраторы. При обновлении платформы на рабочих станциях разработчиков необходимо синхронно обновлять и службу сервера хранилища. Если ваш crserver.exe остался на старой версии (например, 8.3.20), а клиент использует 8.3.22, возникнет конфликт протоколов при передаче сложных структур метаданных.
Рекомендуемый алгоритм действий на сервере:
1C:Enterprise 8.3 Configuration Repository Server.Temp или путь, указанный в параметрах запуска). Полностью удалим содержимое этих папок.Также стоит проверить работу сервера хранилища с параметром -reindex. Это принудительно восстановит индексы внутренней базы данных хранилища. Для этого в командной строке выполним:
crserver.exe -d "C:\PathToStorage" -reindex
Проанализируем результаты тестов: если сравнение напрямую с хранилищем выдает ошибку, но сравнение с файлом .cf проходит успешно, мы можем использовать это как стабильный обходной путь. Поскольку платформа 8.3.22.2239 имеет подтвержденные баги в модуле сетевого сравнения, этот метод является наиболее надежным для завершения срочных задач по обновлению.
Разберем последовательность действий:
temp.cf).temp.cf.Этот метод исключает прямое обращение к crserver.exe в момент тяжелой операции сравнения форм, перекладывая всю нагрузку на локальные ресурсы компьютера разработчика.
Если ваша работа тесно связана с постоянным внесением изменений в УПП 1.3 или другие конфигурации на обычных формах, проанализируем возможность изменения версии платформы. Ошибки в парсинге форм в ветке 8.3.22 были частично исправлены в более поздних сборках.
Наши рекомендации:
Таким образом, мы выяснили, что проблема носит платформенный характер и связана с обработкой сложных структур метаданных. Сочетание очистки кэша, синхронизации версий серверной части и использования промежуточных cf-файлов позволяет успешно обходить данные ограничения до момента установки стабильного патча платформы.