«Чистые» доработки: как обновить доработанную роль в поставляемом расширении 1С | infolimp.ru

«Чистые» доработки: как обновить доработанную роль в поставляемом расширении 1С

26 июня 2026 · infolimp.ru

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

Почему стандартное обновление ролей — проблема

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

Как устроены роли в расширениях

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

Совет: не пытайтесь править роль непосредственно в расширении, если планируете его обновлять. Все доработки выносите в отдельный, «свой» модуль прав.

Стратегия «чистых» доработок

Основная идея — создать отдельное (дочернее) расширение, которое будет содержать только изменённые права. Это расширение накладывается поверх поставляемого и переопределяет нужные разрешения. При обновлении поставки ваше расширение остаётся нетронутым, а изменения в правах не теряются.

Алгоритм перехода на чистый подход

  1. Выгрузите текущую конфигурацию (расширение + основная конфигурация) в файлы через меню «Конфигурация → Выгрузить конфигурацию в файлы».
  2. Найдите в выгруженных файлах XML-представления всех ролей, которые вы дорабатывали. Скопируйте их в отдельную папку «мои_роли».
  3. Создайте новое расширение (например, «МоиПрава»). В качестве конфигурации-родителя укажите основную конфигурацию (не поставляемое расширение).
  4. Перенесите в новое расширение только те роли, которые вы изменяли, предварительно удалив из них права, дублирующие исходные. Оставьте только те строки прав, которые были добавлены вами.
  5. Убедитесь, что новое расширение стоит выше поставляемого в списке расширений (диалог «Конфигурация - Расширения конфигурации»): выберите своё расширение и используйте кнопки перемещения вверх/вниз.
  6. Протестируйте работу - при совпадении ролей в обоих расширениях приоритет отдаётся тому, которое стоит выше в списке расширений конфигурации.

Пример: программное чтение и сравнение XML-ролей

Процедура ПрочитатьПраваИзФайла(ПутьКФайлу, СоответствиеПрав)
    Чтение = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);
    Текст = Чтение.Прочитать();
    Чтение.Закрыть();
    
    // Упрощённый разбор XML (для реальной задачи используйте ЧтениеXML)
    Начало = Найти(Текст, "<Право Имя="");
    Пока Начало > 0 Цикл
        КонецСтроки = Найти(Текст, "" />", Начало);
        Если КонецСтроки = 0 Тогда
            Прервать;
        КонецЕсли;
        ИмяПрава = Сред(Текст, Начало+13, КонецСтроки - Начало - 13);
        СоответствиеПрав.Вставить(ИмяПрава, Истина);
        Начало = Найти(Текст, "<Право Имя="", КонецСтроки+5);
    КонецЦикла;
КонецПроцедуры
В реальном проекте используйте объект «ЧтениеXML» и DOM-модель. Приведённый код — иллюстрация принципа.

Практическое руководство: что делать прямо сейчас

Чек-лист для перехода на чистые доработки

Типичные ошибки

ОшибкаПоследствие
Править роли в поставляемом расширении напрямуюИзменения теряются при обновлении
Создать дочернее расширение, но не исключить дублирующие праваКонфликт двух одинаковых ролей, приоритет неопределённый
Не проверить порядок расширенийВаше расширение может быть отключено или перекрыто другим
Использовать одну и ту же роль в двух расширениях с разным набором правРезультирующие права непредсказуемы

Сравнение подходов к доработке ролей

ПодходСложность внедренияУстойчивость к обновлениямРекомендуемая область применения
Изменение исходного расширенияНизкаяНетПрототипирование, разовые доработки
Отдельное дочернее расширениеСредняяДаШтатные внедрения, типовые конфигурации
Набор обработок, динамически меняющих праваВысокаяДа (при правильной архитектуре)Сложные AUX-системы, тонкая настройка по пользователю
Первый способ допустим только при полном отказе от обновлений расширения. Второй — современный стандарт «чистых доработок».

Заключение

Методика «чистых доработок» ролей в расширениях 1С — это простой и надёжный способ защитить свои изменения от перезаписи при обновлении. Вынося все правки в собственное расширение, вы сохраняете возможность легко получать новые версии поставки, не опасаясь потери донастроек. Рекомендуем внедрить этот подход во всех проектах, где используются поставляемые расширения.

Расширение «НОПик» для 1С — встраиваемый коннектор к внешнему AI с интеллектуальным поиском по базе. Задавайте вопросы обычными словами - AI сам найдёт нужное. 45 дней бесплатно.

Попробовать НОПик →