Как исправить ошибку «Имя команды не может совпадать с именем стандартной команды» в 1С?

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

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

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

Почему возникает эта ошибка?

Давайте разберем внутреннюю логику работы платформы. Начиная с версий 8.3.11 (в частности, с релиза 8.3.11.2867) и 8.3.12, компания «1С» существенно ужесточила правила валидации метаданных. Был введен строгий контроль уникальности: имена пользовательских (произвольных) команд объектов не должны пересекаться с именами стандартных команд этих же объектов.

Стандартные команды — это предопределенные действия, которые платформа генерирует для объектов автоматически (например, ОткрытьСписок, Создать, Импорт, Редактировать). Если в старых версиях конфигураций разработчики создавали собственные команды с аналогичными именами, старая платформа игнорировала этот конфликт. Однако при переходе на новые релизы платформы конфигуратор обнаруживает дублирование имен и полностью блокирует обновление базы данных.

В случае с конфигурацией «1С:Документооборот 2.1» (особенно на релизах около 2.1.12.2) разработчики типового решения создали свою команду под названием ОткрытьСписок для регистра сведений НастройкаПовторенияБизнесПроцессов. Новая платформа видит в этом конфликт со стандартной командой списка регистра и выдает ошибку.

Когда чаще всего проявляется сбой?

Проанализируем ситуации, при которых данная ошибка заявляет о себе:

  1. Обновление версии платформы. Вы просто устанавливаете новую сборку «1С:Предприятие» (например, переходите с 8.3.10 на 8.3.12), запускаете базу в режиме Конфигуратора и при любой попытке обновления конфигурации базы данных получаете ошибку.
  2. Изменение режима совместимости. Если в свойствах конфигурации вы повышаете режим совместимости (например, со значения «8.3.8» на «8.3.12» или «Не использовать»), платформа принудительно включает новые правила проверки метаданных.
  3. Использование расширений конфигурации. Это наиболее частый сценарий для типовых баз, находящихся на поддержке. При добавлении расширения и попытке изменить его свойства или режим совместимости, платформа начинает валидировать всю основную конфигурацию по новым строгим правилам и спотыкается о проблемный типовой регистр.

Рассмотрим подробнее четыре практических метода устранения этой ошибки.

Способ 1: Официальное обновление конфигурации (Рекомендуемый)

Поскольку эта проблема носила массовый характер для пользователей «1С:Документооборот 2.1», фирма «1С» оперативно выпустила исправление в последующих релизах. Разработчики переименовали конфликтующие команды на уровне типового кода.

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

Способ 2: Ручное исправление имени команды (Требуется снятие с поддержки)

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

  1. Откройте Конфигуратор и перейдите в меню Конфигурация -> Поддержка -> Настройка поддержки.
  2. В открывшемся окне нажмите кнопку Включить возможность изменения.
  3. Найдите в дереве объектов регистр сведений НастройкаПовторенияБизнесПроцессов.
  4. Установите для него и его подчиненных объектов правило: Объект поставщика редактируется с сохранением поддержки.
  5. Перейдите в окно метаданных конфигурации, найдите данный регистр сведений, раскройте ветку Команды.
  6. Найдите команду ОткрытьСписок и переименуйте ее (например, в ОткрытьСписокНастроек или ОткрытьСписокПовторений).
  7. Обновите конфигурацию базы данных (клавиша F7).

После переименования команды платформа успешно проведет реструктуризацию и применит изменения.

Способ 3: Временный откат версии платформы

Если вам нужно срочно внести доработки в базу, а конфигурация должна оставаться полностью «на замке» (без снятия с поддержки), можно временно обойти строгость контроля платформы. Для этого выполните откат платформы на более раннюю версию (например, на ветку 8.3.10 или младшие релизы 8.3.11), выполните необходимые изменения и обновите базу данных. На старых версиях платформы проверка уникальности имен команд не заблокирует вашу работу.

Способ 4: Корректировка режима совместимости в расширениях

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

Рекомендация для разработчиков собственных конфигураций

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

Например, если вам нужно программно вызвать форму списка с применением вашей кастомной логики, лучше назвать команду уникальным именем и вызвать ее из модуля команды:


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    // Используем уникальное имя команды во избежание конфликтов с платформой
    ОткрытьФорму("РегистрСведений.НастройкаПовторенияБизнесПроцессов.ФормаСписка", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры

Применение этого простого правила гарантирует, что ваши доработки успешно пройдут проверку на любых будущих обновлениях технологической платформы «1С:Предприятие».

← На главную