При обновлении технологической платформы «1С:Предприятие» или попытке внести изменения в конфигурацию разработчики и администраторы часто сталкиваются с неожиданной блокирующей ошибкой. Конфигуратор выдает сообщение следующего вида: РегистрСведений.НастройкаПовторенияБизнесПроцессов.Команда.ОткрытьСписок: Имя команды не может совпадать с именем стандартной команды. При этом объект метаданных может находиться на поддержке (под замком), что исключает возможность его быстрого редактирования.
В этой статье мы подробно проанализируем причины возникновения этой проблемы, выясним, почему платформа начала вести себя более строго, и рассмотрим несколько эффективных способов решения проблемы — от официального обновления до ручного исправления метаданных.
Давайте разберем внутреннюю логику работы платформы. Начиная с версий 8.3.11 (в частности, с релиза 8.3.11.2867) и 8.3.12, компания «1С» существенно ужесточила правила валидации метаданных. Был введен строгий контроль уникальности: имена пользовательских (произвольных) команд объектов не должны пересекаться с именами стандартных команд этих же объектов.
Стандартные команды — это предопределенные действия, которые платформа генерирует для объектов автоматически (например, ОткрытьСписок, Создать, Импорт, Редактировать). Если в старых версиях конфигураций разработчики создавали собственные команды с аналогичными именами, старая платформа игнорировала этот конфликт. Однако при переходе на новые релизы платформы конфигуратор обнаруживает дублирование имен и полностью блокирует обновление базы данных.
В случае с конфигурацией «1С:Документооборот 2.1» (особенно на релизах около 2.1.12.2) разработчики типового решения создали свою команду под названием ОткрытьСписок для регистра сведений НастройкаПовторенияБизнесПроцессов. Новая платформа видит в этом конфликт со стандартной командой списка регистра и выдает ошибку.
Проанализируем ситуации, при которых данная ошибка заявляет о себе:
Рассмотрим подробнее четыре практических метода устранения этой ошибки.
Поскольку эта проблема носила массовый характер для пользователей «1С:Документооборот 2.1», фирма «1С» оперативно выпустила исправление в последующих релизах. Разработчики переименовали конфликтующие команды на уровне типового кода.
Если у вас есть возможность обновить конфигурацию «1С:Документооборот» до актуального релиза (вышедшего после версии 2.1.12.2), сделайте это. После обновления метаданные придут в соответствие с новыми требованиями платформы, и ошибка исчезнет сама собой.
Если конфигурацию невозможно обновить быстро, а работу необходимо продолжить прямо сейчас, придется временно или постоянно разрешить изменения для проблемного объекта метаданных. Выполним следующие шаги:
НастройкаПовторенияБизнесПроцессов.ОткрытьСписок и переименуйте ее (например, в ОткрытьСписокНастроек или ОткрытьСписокПовторений).После переименования команды платформа успешно проведет реструктуризацию и применит изменения.
Если вам нужно срочно внести доработки в базу, а конфигурация должна оставаться полностью «на замке» (без снятия с поддержки), можно временно обойти строгость контроля платформы. Для этого выполните откат платформы на более раннюю версию (например, на ветку 8.3.10 или младшие релизы 8.3.11), выполните необходимые изменения и обновите базу данных. На старых версиях платформы проверка уникальности имен команд не заблокирует вашу работу.
Если ошибка возникает исключительно при подключении или изменении расширений конфигурации, проанализируйте свойства расширения. Часто программисты устанавливают режим совместимости расширения выше, чем у основной конфигурации, либо отключают его вовсе. Чтобы избежать детальной проверки старых объектов основной конфигурации, установите в свойствах расширения режим совместимости, в точности соответствующий режиму совместимости вашей основной конфигурации (например, «8.3.8»). В этом случае платформа снизит уровень строгости валидации.
Чтобы не допускать подобных коллизий при создании собственных решений, всегда придерживайтесь правила уникального именования объектов и их реквизитов. Избегайте использования зарезервированных платформой слов в качестве имен элементов управления и команд.
Например, если вам нужно программно вызвать форму списка с применением вашей кастомной логики, лучше назвать команду уникальным именем и вызвать ее из модуля команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// Используем уникальное имя команды во избежание конфликтов с платформой
ОткрытьФорму("РегистрСведений.НастройкаПовторенияБизнесПроцессов.ФормаСписка", , ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры
Применение этого простого правила гарантирует, что ваши доработки успешно пройдут проверку на любых будущих обновлениях технологической платформы «1С:Предприятие».