Как обновить «1С:Управление торговлей 11» при наличии сторонних модулей и двух конфигураций поставщика?

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

Обновление сильно устаревших или нетиповых конфигураций «1С:Предприятие» — это всегда серьезный вызов для разработчика. Ситуация значительно усложняется, когда база находится на поддержке сразу у нескольких поставщиков. Например, помимо стандартной конфигурации УправлениеТорговлей, в базу интегрирован сторонний коммерческий продукт — модуль интеграции с CRM-системой (например, amoCRM). При попытке обновить такую базу «в лоб» через стандартный поиск обновлений разработчики часто сталкиваются с целым букетом ошибок: от невозможности удалить устаревшие объекты до появления пугающих дублей метаданных в дереве конфигурации.

В этой статье мы подробно разберем, почему возникают подобные конфликты при переходе между редакциями (например, с УТ 11.1 на УТ 11.2), как устроена логика сопоставления объектов платформой, и пошагово решим все сопутствующие проблемы.

Почему возникают дубли объектов и сбои при обновлении?

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

Если в вашей базе зарегистрировано несколько конфигураций поставщика (в нашем случае — «1С» и «amoCRM»), правила поддержки могут конфликтовать. Сторонние разработчики модулей интеграции иногда совершают грубую ошибку: включают в свой файл поставки стандартные объекты основной конфигурации 1С (например, общие картинки, определяемые типы или даже целые справочники и регистры) или системные настройки (например, язык интерфейса ru).

Когда вы запускаете обновление основной конфигурации УТ, платформа пытается сопоставить объекты нового релиза с существующими. Из-за некорректных правил поддержки стороннего модуля GUID объектов перекрещиваются. Если при сравнении и объединении снять флажок «Разрешить удаление объектов основной конфигурации», система вместо корректного обновления или удаления старых объектов создает их дубликаты. Один объект остается привязанным к неизмененной поддержке стороннего поставщика, а второй создается заново для новой версии УТ.

Шаг 1. Изоляция и исправление правил поддержки стороннего поставщика

Для того чтобы успешно обновить основную конфигурацию, нам необходимо временно изолировать влияние стороннего поставщика. Рассмотрим, как правильно это сделать:

  1. Перейдем в меню Конфигурация — Поддержка — Настройка поддержки.
  2. Проанализируем список конфигураций поставщиков. Мы увидим две строки: например, УправлениеТорговлей и amoCRM.
  3. Для конфигурации стороннего поставщика (amoCRM) временно снимем объекты с поддержки. Обратите внимание: мы не удаляем сами объекты и данные из базы! Мы лишь разрываем связь метаданных с правилами обновления стороннего поставщика. Для этого выделим строку сторонней конфигурации и нажмем кнопку «Снять с поддержки».
  4. Если какие-то объекты стороннего модуля содержат уникальные данные (например, специфические регистры сведений с логами интеграции), убедимся, что для них установлено правило Редактируется с сохранением поддержки или они полностью переведены в статус нетиповых объектов основной конфигурации.

После этого основная конфигурация УТ перестанет конфликтовать со сторонним модулем при сопоставлении GUID.

Шаг 2. Разрешение конфликтов удаления системных подсистем

При переходе между крупными редакциями (например, с УТ 11.1 на УТ 11.2) разработчики фирмы «1С» кардинально перерабатывают архитектуру решения. Некоторые подсистемы признаются устаревшими и полностью удаляются. В частности, в редакции 11.2 была ликвидирована подсистема УправлениеТорговлей (в которую ранее входили объекты, не включенные в ERP), а также сильно изменена структура подсистемы РегламентированныйУчет.

Во время обновления мы можем увидеть сообщения об ошибках следующего вида: «На удаляемый объект ОбщаяКоманда.ПанельОтчетовРегламентированныйУчет есть ссылки в объектах основной конфигурации: Подсистема.РегламентированныйУчет.Состав».

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

Разберем по шагам, как решить эту проблему в окне сравнения/объединения конфигураций:

  1. В окне сравнения конфигураций найдем проблемные «красные» подсистемы (например, РегламентированныйУчет или ОтчетыИМониторинг).
  2. Установим флажки на этих подсистемах, чтобы принудительно обновить их состав в соответствии с конфигурацией нового поставщика.
  3. Если автоматическое объединение все равно выдает ошибку, перейдем непосредственно в дерево метаданных нашей основной конфигурации (до запуска процесса обновления).
  4. Найдем подсистему, на которую ругается система (например, РегламентированныйУчет), откроем ее свойства и перейдем в категорию «Состав».
  5. Вручную снимем флажки с тех объектов, которые помечаются платформой на удаление (например, со старых общих команд или неиспользуемых регистров сведений, таких как УдалитьНастройкаУчетаНДС).

После ручной очистки состава подсистем ссылки будут разорваны, и платформа беспрепятственно удалит устаревшие объекты метаданных.

Шаг 3. Обход жестких проверок платформы (Использование версии 8.3.11)

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

Старые версии платформ (например, линейка 8.3.11) относились к таким архитектурным ошибкам более лояльно. Они позволяли успешно завершить обновление базы данных, игнорируя незначительные конфликты сопоставления.

Если вы застряли на обновлении старого релиза и новые платформы сыплют бесконечными ошибками сопоставления, применим проверенный технический прием:

  1. Установим на рабочий компьютер платформу версии 8.3.11.3133 (или близкую к ней версию из ветки 8.3.11/8.3.12).
  2. Запустим конфигуратор нашей базы данных именно под этой версией платформы.
  3. Выполним сравнение и объединение с файлом обновления (CF/CFU) нового релиза.
  4. Убедимся, что обновление конфигурации базы данных (клавиша F7) прошло успешно и без критических ошибок валидации.

Важное предупреждение! Использование старой платформы для обхода ошибок — это лишь промежуточный шаг («костыль»). Ошибки в структуре метаданных никуда не исчезают, они просто временно игнорируются системой. Поэтому сразу после успешного обновления на версии 8.3.11 необходимо выполнить глубокое тестирование базы данных:

  1. Перейдем в меню Администрирование — Тестирование и исправление....
  2. Установим флажки напротив пунктов:
    • Проверка логической целостности конфигурации;
    • Проверка ссылочной целостности базы данных;
    • Реиндексация таблиц информационной базы.
  3. В случае обнаружения битых ссылок выберем вариант «Очищать объекты» или «Создавать дефолтные элементы» в зависимости от критичности данных.
  4. Только после полной очистки структуры мы можем вернуть базу на работу под актуальной версией платформы (например, 8.3.20+ или 8.3.22+).

Шаг 4. Устранение ошибки БИД «Имя команды не может совпадать с именем стандартной команды»

Еще одна частая ошибка, которая прерывает обновление при переходе на новые платформы, связана с Библиотекой интеграции с Документооборотом (БИД), встроенной в УТ. Ошибка выглядит так:
Обработка.ПанельАдминистрированияБИД.Команда.Открыть: Имя команды не может совпадать с именем стандартной команды.

Причина кроется в том, что в старых версиях БИД разработчики назвали пользовательскую команду простым словом Открыть. Однако в современных версиях платформы «1С» были ужесточены правила именования: теперь платформе запрещено создавать команды объектов, имена которых полностью дублируют системные (стандартные) команды (такие как Открыть, Создать, Записать).

Посмотрим, как быстро решить эту проблему вручную:

  1. Найдем в дереве метаданных объект: Обработки — ПанельАдминистрированияБИД — Команды — Открыть.
  2. Если объект находится на поддержке без возможности редактирования, перейдем в настройки поддержки и разрешим изменение для этой конкретной обработки (установим режим Редактируется с сохранением поддержки).
  3. Откроем свойства команды Открыть и переименуем ее в нейтральное имя, например, ОткрытьПанель или ОткрытьПанельАдминистрирования.
  4. В свойствах команды очистим или скорректируем синоним, если это необходимо.

После переименования платформенная проверка на уникальность имен команд будет успешно пройдена.

Рекомендация на будущее: Переход на механизм расширений

Чтобы раз и навсегда обезопасить себя от подобных проблем при последующих обновлениях «1С:Управление торговлей», настоятельно рекомендуется полностью отказаться от внедрения стороннего кода и метаданных непосредственно в основную конфигурацию.

Современным стандартом кастомизации решений на платформе «1С:Предприятие 8.3» являются расширения конфигурации (файлы .cfe). Перенесите все доработки сторонних модулей (включая amoCRM) в профильные расширения. В этом случае основная конфигурация УТ останется абсолютно типовой (на «замочке»), и вы сможете обновлять ее в автоматическом режиме за пару кликов, а все сторонние модули будут подключаться динамически, не нарушая целостность основной базы данных.

← На главную