Обновление сильно устаревших или нетиповых конфигураций «1С:Предприятие» — это всегда серьезный вызов для разработчика. Ситуация значительно усложняется, когда база находится на поддержке сразу у нескольких поставщиков. Например, помимо стандартной конфигурации УправлениеТорговлей, в базу интегрирован сторонний коммерческий продукт — модуль интеграции с CRM-системой (например, amoCRM). При попытке обновить такую базу «в лоб» через стандартный поиск обновлений разработчики часто сталкиваются с целым букетом ошибок: от невозможности удалить устаревшие объекты до появления пугающих дублей метаданных в дереве конфигурации.
В этой статье мы подробно разберем, почему возникают подобные конфликты при переходе между редакциями (например, с УТ 11.1 на УТ 11.2), как устроена логика сопоставления объектов платформой, и пошагово решим все сопутствующие проблемы.
Для начала выясним первопричину странного поведения платформы, когда в конфигурации внезапно появляются по два одинаковых объекта (один под «замочком» поставщика, а другой — без него). В штатном режиме платформа «1С:Предприятие» идентифицирует объекты метаданных не по их именам, а по уникальным внутренним идентификаторам — GUID (UUID).
Если в вашей базе зарегистрировано несколько конфигураций поставщика (в нашем случае — «1С» и «amoCRM»), правила поддержки могут конфликтовать. Сторонние разработчики модулей интеграции иногда совершают грубую ошибку: включают в свой файл поставки стандартные объекты основной конфигурации 1С (например, общие картинки, определяемые типы или даже целые справочники и регистры) или системные настройки (например, язык интерфейса ru).
Когда вы запускаете обновление основной конфигурации УТ, платформа пытается сопоставить объекты нового релиза с существующими. Из-за некорректных правил поддержки стороннего модуля GUID объектов перекрещиваются. Если при сравнении и объединении снять флажок «Разрешить удаление объектов основной конфигурации», система вместо корректного обновления или удаления старых объектов создает их дубликаты. Один объект остается привязанным к неизмененной поддержке стороннего поставщика, а второй создается заново для новой версии УТ.
Для того чтобы успешно обновить основную конфигурацию, нам необходимо временно изолировать влияние стороннего поставщика. Рассмотрим, как правильно это сделать:
УправлениеТорговлей и amoCRM.Редактируется с сохранением поддержки или они полностью переведены в статус нетиповых объектов основной конфигурации.После этого основная конфигурация УТ перестанет конфликтовать со сторонним модулем при сопоставлении GUID.
При переходе между крупными редакциями (например, с УТ 11.1 на УТ 11.2) разработчики фирмы «1С» кардинально перерабатывают архитектуру решения. Некоторые подсистемы признаются устаревшими и полностью удаляются. В частности, в редакции 11.2 была ликвидирована подсистема УправлениеТорговлей (в которую ранее входили объекты, не включенные в ERP), а также сильно изменена структура подсистемы РегламентированныйУчет.
Во время обновления мы можем увидеть сообщения об ошибках следующего вида: «На удаляемый объект ОбщаяКоманда.ПанельОтчетовРегламентированныйУчет есть ссылки в объектах основной конфигурации: Подсистема.РегламентированныйУчет.Состав».
Выясним, почему это происходит. Платформа пытается удалить устаревший объект (например, общую команду), так как его больше нет в новом релизе поставщика. Однако в вашей основной (измененной) конфигурации этот объект все еще включен в состав родительской подсистемы. Платформа не может завершить операцию, чтобы не нарушить логическую целостность базы данных.
Разберем по шагам, как решить эту проблему в окне сравнения/объединения конфигураций:
РегламентированныйУчет или ОтчетыИМониторинг).РегламентированныйУчет), откроем ее свойства и перейдем в категорию «Состав».УдалитьНастройкаУчетаНДС).После ручной очистки состава подсистем ссылки будут разорваны, и платформа беспрепятственно удалит устаревшие объекты метаданных.
Интересной особенностью современных версий платформы «1С:Предприятие» (начиная с 8.3.13 и выше) является внедрение крайне строгого механизма валидации метаданных при сравнении и обновлении конфигураций. Новые платформы «на лету» блокируют любые операции, если находят малейшие логические нестыковки, дубли или висячие ссылки в правилах поддержки.
Старые версии платформ (например, линейка 8.3.11) относились к таким архитектурным ошибкам более лояльно. Они позволяли успешно завершить обновление базы данных, игнорируя незначительные конфликты сопоставления.
Если вы застряли на обновлении старого релиза и новые платформы сыплют бесконечными ошибками сопоставления, применим проверенный технический прием:
8.3.11.3133 (или близкую к ней версию из ветки 8.3.11/8.3.12).Важное предупреждение! Использование старой платформы для обхода ошибок — это лишь промежуточный шаг («костыль»). Ошибки в структуре метаданных никуда не исчезают, они просто временно игнорируются системой. Поэтому сразу после успешного обновления на версии 8.3.11 необходимо выполнить глубокое тестирование базы данных:
Проверка логической целостности конфигурации;Проверка ссылочной целостности базы данных;Реиндексация таблиц информационной базы.Еще одна частая ошибка, которая прерывает обновление при переходе на новые платформы, связана с Библиотекой интеграции с Документооборотом (БИД), встроенной в УТ. Ошибка выглядит так:
Обработка.ПанельАдминистрированияБИД.Команда.Открыть: Имя команды не может совпадать с именем стандартной команды.
Причина кроется в том, что в старых версиях БИД разработчики назвали пользовательскую команду простым словом Открыть. Однако в современных версиях платформы «1С» были ужесточены правила именования: теперь платформе запрещено создавать команды объектов, имена которых полностью дублируют системные (стандартные) команды (такие как Открыть, Создать, Записать).
Посмотрим, как быстро решить эту проблему вручную:
Обработки — ПанельАдминистрированияБИД — Команды — Открыть.Редактируется с сохранением поддержки).Открыть и переименуем ее в нейтральное имя, например, ОткрытьПанель или ОткрытьПанельАдминистрирования.После переименования платформенная проверка на уникальность имен команд будет успешно пройдена.
Чтобы раз и навсегда обезопасить себя от подобных проблем при последующих обновлениях «1С:Управление торговлей», настоятельно рекомендуется полностью отказаться от внедрения стороннего кода и метаданных непосредственно в основную конфигурацию.
Современным стандартом кастомизации решений на платформе «1С:Предприятие 8.3» являются расширения конфигурации (файлы .cfe). Перенесите все доработки сторонних модулей (включая amoCRM) в профильные расширения. В этом случае основная конфигурация УТ останется абсолютно типовой (на «замочке»), и вы сможете обновлять ее в автоматическом режиме за пару кликов, а все сторонние модули будут подключаться динамически, не нарушая целостность основной базы данных.