При обновлении нетиповых конфигураций 1С:Предприятие 8.3 специалисты часто сталкиваются с ситуацией, когда визуально идентичные объекты (например, подсистема АдминистрированиеСервиса, общие модули или регистры) помечаются платформой как удаляемые из основной конфигурации и одновременно добавляемые из конфигурации поставщика. При этом попытка установить соответствие вручную в окне сравнения и объединения заканчивается неудачей: система просто не дает выбрать объект для сопоставления.
В этой статье мы подробно разберем причины возникновения этой ошибки, проанализируем техническую подоплеку процесса и выработаем пошаговый алгоритм решения проблемы, включая методы очистки базы от «фантомных» объектов, которые отказываются удаляться даже при отсутствии видимых ссылок.
Для начала проанализируем ситуацию с точки зрения архитектуры платформы. Для 1С:Предприятие имя объекта метаданных является лишь вторичным признаком. Первичным и главным идентификатором объекта является его UUID (Universally Unique Identifier), или GUID. Этот скрытый код присваивается объекту в момент создания и остается неизменным на протяжении всей «жизни» объекта в конфигурации.
Рассмотрим подробнее механизм обновления. Когда фирма «1С» выпускает новый релиз, платформа сравнивает GUID объектов вашей базы с GUID объектов в файле обновления (.cfu или .cf). Если в новом релизе разработчик (в данном случае специалисты «1С») решил пересоздать объект с нуля вместо изменения существующего, GUID этого объекта изменится. В результате для платформы это будут два совершенно разных объекта, даже если их имена, структура и функции полностью совпадают.
Проблема часто проявляется в подсистемах, связанных с БСП (Библиотекой стандартных подсистем), таких как АдминистрированиеСервиса. В определенных версиях (например, при переходе с 3.0.103 на 3.0.105 в БП) производился рефакторинг, из-за которого внутренние идентификаторы некоторых элементов изменились. Если ваша конфигурация имеет отклонения от типовой (даже минимальные), автоматические правила сопоставления, зашитые в файл поставки, могут не сработать.
Прежде чем приступать к изменениям, проанализируем технические условия проведения обновления. Как показывает практика (сообщение №10), на серверных мощностях может не хватать оперативной памяти для обработки тяжелых конфигураций, таких как Бухгалтерия предприятия 3.0. В этом случае правильным шагом будет выгрузка базы в файловый вариант (.dt) и проведение обновления на более мощной локальной станции.
Важный момент: если вы столкнулись с проблемой нестыковки объектов, не пытайтесь «прожать» обновление любой ценой. Это приведет к потере данных в тех объектах, которые будут удалены, и к неработоспособности кода, ссылающегося на старые GUID.
Разберем алгоритм действий, если стандартное сопоставление в окне «Сравнение, объединение с конфигурацией поставщика» недоступно:
РегистрСведений.ДанныеОбъектовДляРегистрацииВИнформационнойБазе) помечен как удаляемый в основной конфигурации и добавляемый в конфигурации поставщика, закройте окно обновления.Удалить_АдминистрированиеСервиса). Это позволит избежать конфликта имен при добавлении нового объекта из поставки.После выполнения этих действий у вас в системе будут сосуществовать два объекта: старый (переименованный) и новый (из обновления). Теперь ваша задача — перенести данные (если это регистр или справочник) и ссылки.
Часто после обновления переименованные старые объекты не удаляются, даже если поиск ссылок показывает их полное отсутствие. Рассмотрим подробнее, где могут прятаться эти «невидимые» зависимости:
Конфигурация — Поддержка — Настройка поддержки. Найдите ваш объект, нажмите на него правой кнопкой мыши и выберите «Снять с поддержки». Только после этого кнопка «Удалить» в дереве метаданных станет активной.ФункциональнойОпции. Ссылки в них не всегда корректно отображаются при стандартном поиске.Если штатное обновление через механизм поддержки дает сбои, профессиональные разработчики рекомендуют использовать метод сравнения и объединения с полным файлом конфигурации (.cf) нужного релиза. Рассмотрим этот путь:
1. Выгрузите конфигурацию поставщика нужного релиза в файл config.cf.
2. Используйте пункт меню Конфигурация — Сравнить, объединить с конфигурацией из файла.
3. В появившемся окне платформа часто дает больше свободы для ручного сопоставления. Если вы видите два одинаковых объекта, нажмите на один из них правой кнопкой мыши и выберите пункт «Установить соответствие», затем укажите на соответствующий объект в другой колонке.
Если после всех манипуляций и успешного удаления объектов система ведет себя странно (выдает ошибки о несуществующих модулях или объектах), необходимо выполнить очистку кэша. Платформа 1С сохраняет структуру метаданных локально для ускорения работы. При радикальных изменениях GUID кэш может стать неактуальным.
Для очистки кэша на стороне сервера 1С:Предприятие необходимо остановить службу 1C:Enterprise 8.3 Server Agent и очистить содержимое папки reg_1541 (за исключением файла 1CV8Reg.lst). На стороне клиента достаточно удалить базу из списка и добавить её заново — это создаст новую папку кэша с уникальным идентификатором.
Ситуация, когда одинаковые объекты не состыковываются при обновлении, — это не всегда ошибка программиста. Чаще всего это результат эволюции типовых решений «1С», требующий ручного вмешательства. Использование стратегии «Переименование — Снятие с поддержки — Удаление» позволяет корректно пройти через такие «узкие места» без потери данных и нарушения целостности конфигурации. Главное — всегда выполнять такие операции на копии базы и тщательно проверять настройки поддержки для каждого проблемного объекта. При необходимости можно воспользоваться методикой выноса всех доработок в расширение и возврата конфигурации на полную поддержку.