Что делать, если не работает сравнение и объединение с хранилищем после обновления платформы 1С?

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

После обновления платформы до версии 8.3.22.2239 многие разработчики столкнулись с неприятной ситуацией: при попытке выполнить сравнение или объединение основной конфигурации с хранилищем (особенно в тяжелых решениях, таких как УПП 1.3) процесс прерывается неочевидной ошибкой. Дерево объектов выводится корректно, но при попытке выбрать конкретную форму документа для объединения система выдает сбой, который не диагностируется стандартными средствами поиска.

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

Анализируем причины сбоя: почему это происходит?

Проанализируем ситуацию. Проблема чаще всего проявляется на конфигурациях с большим количеством обычных форм и низким режимом совместимости (например, 8.2.13 или 8.2.16). В ветке платформ 8.3.22 компания 1С существенно переработала внутренние механизмы парсинга метаданных и отрисовки диалоговых окон сравнения. Это привело к тому, что при работе с перегруженными объектами (в которых сотни реквизитов и элементов управления на формах) стандартный механизм сравнения «Клиент — Сервер хранилища» начинает вести себя нестабильно.

Выясним основную причину: при сравнении объектов платформа пытается собрать временный файл конфигурации из фрагментов, хранящихся в базе данных хранилища. Если хранилище работает через crserver.exe, обмен данными может прерываться из-за внутренних таймаутов или ошибок выделения памяти в процессе rphost. Ошибка часто возникает именно на этапе десериализации сложных форм.

Шаг 1: Работа с кэшем хранилища и оптимизация

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

  1. Откроем конфигуратор и перейдем в меню Конфигурация — Хранилище конфигурации — Администрирование.
  2. На последней закладке диалогового окна найдем настройки кэширования. Очистим локальный кэш версий хранилища.
  3. Выполним операцию «Оптимизировать хранилище». Это позволит пересчитать контрольные суммы и сжать базу данных хранилища, что критично для стабильной передачи данных по сети.

Если эти действия не помогли, значит проблема кроется глубже — во взаимодействии версий клиента и сервера.

Шаг 2: Проверка соответствия версий и серверная очистка

Разберем важный нюанс, о котором часто забывают системные администраторы. При обновлении платформы на рабочих станциях разработчиков необходимо синхронно обновлять и службу сервера хранилища. Если ваш crserver.exe остался на старой версии (например, 8.3.20), а клиент использует 8.3.22, возникнет конфликт протоколов при передаче сложных структур метаданных.

Рекомендуемый алгоритм действий на сервере:

  1. Остановим службу 1C:Enterprise 8.3 Configuration Repository Server.
  2. Найдем папку с временными файлами, которую использует служба (обычно это системные папки Temp или путь, указанный в параметрах запуска). Полностью удалим содержимое этих папок.
  3. Запустим службу заново.

Также стоит проверить работу сервера хранилища с параметром -reindex. Это принудительно восстановит индексы внутренней базы данных хранилища. Для этого в командной строке выполним:

crserver.exe -d "C:\PathToStorage" -reindex

Шаг 3: Использование промежуточного файла (Workaround)

Проанализируем результаты тестов: если сравнение напрямую с хранилищем выдает ошибку, но сравнение с файлом .cf проходит успешно, мы можем использовать это как стабильный обходной путь. Поскольку платформа 8.3.22.2239 имеет подтвержденные баги в модуле сетевого сравнения, этот метод является наиболее надежным для завершения срочных задач по обновлению.

Разберем последовательность действий:

  1. Возьмем базу разработчика, которая подключена к хранилищу и имеет актуальные данные.
  2. Выгрузим из нее файл конфигурации через меню Конфигурация — Сохранить конфигурацию в файл... (получаем temp.cf).
  3. В целевой базе (где нужно выполнить объединение) запустим процедуру Сравнить, объединить с конфигурацией из файла..., выбрав наш temp.cf.
  4. Выполним объединение нужных объектов.

Этот метод исключает прямое обращение к crserver.exe в момент тяжелой операции сравнения форм, перекладывая всю нагрузку на локальные ресурсы компьютера разработчика.

Шаг 4: Понижение версии или обновление на патч

Если ваша работа тесно связана с постоянным внесением изменений в УПП 1.3 или другие конфигурации на обычных формах, проанализируем возможность изменения версии платформы. Ошибки в парсинге форм в ветке 8.3.22 были частично исправлены в более поздних сборках.

Наши рекомендации:

Таким образом, мы выяснили, что проблема носит платформенный характер и связана с обработкой сложных структур метаданных. Сочетание очистки кэша, синхронизации версий серверной части и использования промежуточных cf-файлов позволяет успешно обходить данные ограничения до момента установки стабильного патча платформы.

← На главную