Работа с большими конфигурациями в 1С:Предприятие часто превращается в поиск иголки в стоге сена — особенно когда нужно отследить повторяющиеся имена переменных, процедур или реквизитов. Одинаковые названия в коде не просто усложняют чтение: они становятся источником трудноуловимых багов, когда разработчик по ошибке обращается не к тому объекту. К счастью, встроенные механизмы конфигуратора и сторонние расширения позволяют автоматизировать поиск дублей — но далеко не все знают, как их правильно настроить.
Многие 1С-разработчики годами вручную просматривают модули, сравнивая имена через Ctrl+F, хотя платформа предлагает более эффективные инструменты. Эта статья раскроет все актуальные способы подсветки одинаковых слов — от стандартных функций до скриптов на 1Script и внешних утилит. Вы узнаете, как настроить цветовую маркировку для разных типов дублей, почему иногда подсветка не работает, и как обойти ограничения платформы.
Особое внимание уделим скрытому параметру конфигуратора EnableDuplicateHighlighting, который включает расширенную подсветку в последних версиях 1С 8.3.20+ — эту функцию не dokumentируют в официальной справке, но она значительно упрощает анализ кода.
1. Встроенная подсветка дублирующихся имен в конфигураторе 1С
Начиная с версии 1С:Предприятие 8.3.18, платформа получила базовую функциональность для выделения одинаковых идентификаторов в тексте модуля. Эта опция работает "из коробки", но многие разработчики даже не подозревают о её существовании — потому что по умолчанию она отключена.
Чтобы активировать встроенную подсветку:
- Откройте любой модуль в конфигураторе (например, модуль объекта или модуль формы)
- Перейдите в меню
Сервис → Параметры - В разделе
Редактор текстанайдите опцию "Подсвечивать повторяющиеся идентификаторы" - Установите флажок и нажмите
ОК
После активации все повторяющиеся имена переменных, процедур и функций в текущем модуле будут подсвечены жёлтым фоном. Важно понимать, что этот механизм работает только в пределах одного открытого модуля — он не анализирует всю конфигурацию целиком.
Если подсветка не появилась сразу, попробуйте закрыть и снова открыть модуль — иногда требуется перезагрузка редактора текста.
- ✅ Работает без дополнительных настроек
- ✅ Не требует прав администратора
- ⚠️ Подсвечивает только точные совпадения (регистрозависимо)
- ❌ Не показывает дубли в разных модулях
2. Расширенная подсветка через параметр EnableDuplicateHighlighting
Скрытый параметр EnableDuplicateHighlighting, появившийся в версиях 8.3.20+, позволяет включить расширенный режим подсветки, который выделяет не только идентификаторы, но и повторяющиеся строковые литералы, комментарии и даже части сложных выражений. Эта функция не документирована, но активно используется опытными разработчиками.
Чтобы её активировать:
- Закройте все окна конфигуратора
- Откройте файл параметров
1CEStart.cfg(расположен в каталоге пользователя, путь зависит от ОС) - Добавьте строку:
[TextEditor]EnableDuplicateHighlighting=1
- Сохраните файл и перезапустите конфигуратор
После применения изменений вы получите:
- 🔹 Зелёную подсветку для повторяющихся строковых констант (например, одинаковых сообщений об ошибках)
- 🔹 Голубую подсветку для дублирующихся комментариев
- 🔹 Красную подсветку для повторяющихся частей в сложных выражениях (например, одинаковых условий в операторе
Если)
⚠️ Внимание: В некоторых сборках 1С параметр EnableDuplicateHighlighting может конфликтовать с расширениями типа 1С:Скрипт. Если после активации подсветка работает некорректно, попробуйте отключить сторонние плагины.
3. Поиск дублирующихся имен по всей конфигурации
Встроенные механизмы подсветки ограничены текущим модулем, но часто требуется найти повторяющиеся имена во всей конфигурации — например, одинаковые реквизиты в разных справочниках или повторяющиеся имена переменных в разных обработках. Для этого есть два надёжных способа:
Способ 1: Отчёт "Поиск дублирующихся идентификаторов"
- Откройте
Файл → Открыть...и выберите файл конфигурации (.cf) - Перейдите в
Конфигурация → Отчёты → Стандартные отчёты → Поиск дублирующихся идентификаторов - Запустите отчёт и дождитесь завершения анализа
Способ 2: Запрос через консоль запросов
Для опытных пользователей быстрее будет выполнить прямой запрос к метаданным:
ВЫБРАТЬ
Метаданные.Имя КАК ИмяОбъекта,
Метаданные.Тип КАК ТипОбъекта,
КОЛИЧЕСТВО(*) КАК Количество
ИЗ
v8_MetaData КАК Метаданные
ГДЕ
Метаданные.Имя В (
ВЫБРАТЬ
МетаданныеВлож.Имя
ИЗ
v8_MetaData КАК МетаданныеВлож
СГРУППИРОВАТЬ ПО
МетаданныеВлож.Имя
ИМЕЮЩИЕ
КОЛИЧЕСТВО(*) > 1
)
СГРУППИРОВАТЬ ПО
Метаданные.Имя,
Метаданные.Тип
| Метод | Преимущества | Ограничения |
|---|---|---|
| Стандартный отчёт | Не требует знания языка запросов | Медленнее на больших конфигурациях |
| Консоль запросов | Быстрее и гибче | Требует прав на выполнение запросов |
| Внешние утилиты | Максимальная детализация | Нужно устанавливать ПО |
4. Использование расширения "1С:Скрипт" для продвинутой подсветки
Бесплатное расширение 1С:Скрипт (ранее известно как OneScript) предлагает значительно более мощные инструменты для анализа кода, включая подсветку дублирующихся конструкций с учётом контекста. Установить его можно через менеджер пакетов 1С-ПАК или вручную с GitHub.
После установки:
- Откройте модуль в конфигураторе
- В панели инструментов 1С:Скрипт выберите
Анализ → Поиск дубликатов кода - Настройте параметры поиска (можно искать дубли по строкам, блокам или целым процедурам)
- Запустите анализ — результаты отобразятся в отдельной панели с цветовой маркировкой
Преимущества этого метода:
- 🔍 Анализирует синтаксическую структуру кода, а не только текстовые совпадения
- 🎨 Позволяет настраивать цветовые схемы подсветки
- 📊 Строит статистику повторяемости по типам объектов
- 🔄 Может автоматически заменять дубли на вызов процедур
Сделать резервную копию конфигурации|Закрыть все несохранённые модули|Отключить антивирус (может блокировать анализ)|Настроить исключения для системных процедур-->
⚠️ Внимание: При анализе больших конфигураций (более 500 модулей) 1С:Скрипт может потреблять до 2 ГБ оперативной памяти. Закройте другие приложения перед запуском полного сканирования.
5. Скрипты на 1Script для автоматической маркировки дублей
Для разработчиков, предпочитающих автоматизацию, существует возможность написать собственный скрипт на 1Script, который будет просматривать все модули конфигурации и помечать повторяющиеся конструкции специальными комментариями. Пример такого скрипта:
Перем мДубли;
Процедура ОбработатьМодуль(Модуль)
Текст = Модуль.ПолучитьТекст();
Строки = СтрокиТекста(Текст);
Для Каждого Строка Из Строки Цикл
Если НайтиДубли(Строка) Тогда
НомерСтроки = Строки.Индекс(Строка) + 1;
Модуль.ВставитьСтроку(НомерСтроки, "// ДУБЛЬ: " + мДубли[Строка]);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Функция НайтиДубли(Строка)
Если мДубли.СодержитКлюч(Строка) Тогда
мДубли[Строка] = мДубли[Строка] + 1;
Возврат Истина;
Иначе
мДубли.Вставить(Строка, 1);
Возврат Ложь;
КонецЕсли;
КонецФункции
Этот скрипт:
- Собирает все строки из модуля в коллекцию
- Отмечает повторяющиеся строки комментарием
// ДУБЛЬ: - Сохраняет изменения обратно в модуль
Для запуска скрипта понадобится:
- 📁 Установить 1Script Engine
- 📝 Создать файл с расширением
.os - 🖱️ Запустить через контекстное меню
Выполнить скрипт
Как модифицировать скрипт для поиска дублей в конкретных процедурах
Чтобы искать дубли не по строкам, а по целым процедурам, нужно:
1. Добавить парсер для выделения процедур (использовать регулярные выражения)
2. Хранить в мДубли не строки, а хэши содержимого процедур
3. Сравнивать хэши вместо текста
Пример регулярного выражения для выделения процедур:
Процедура\s+([^\s(]+).+?КонецПроцедуры
6. Внешние утилиты для глубокого анализа кода 1С
Когда встроенных средств недостаточно, на помощь приходят специализированные внешние инструменты. Они позволяют не только находить дубли, но и визуализировать связи между объектами, строить карты зависимостей и даже автоматически рефакторить код.
Топ-3 утилиты для работы с дублями в 1С:
- 🔧 1С:Анализ кода (от фирмы 1С) — официальный инструмент с возможностью настройки правил поиска дубликатов и генерации отчётов в формате
.mxl - 🔍 SonarQube с плагином для 1С — система статического анализа, которая интегрируется с CI/CD и отмечает дубли как "code smells"
- 📊 V8CodeProfiler — бесплатная утилита с открытым исходным кодом, визуализирует повторяющиеся блоки кода в виде диаграмм
Пример работы с 1С:Анализ кода:
- Установите утилиту через 1С:Дистрибутив
- Создайте новую задачу анализа, указав путь к файлу конфигурации
- В настройках правила выберите
Поиск дублирующегося кода - Установите пороговое значение повторяемости (например, 3+ вхождений)
- Запустите анализ и экспортируйте результаты в
ExcelилиHTML
⚠️ Внимание: Внешние утилиты могут требовать лицензирования для коммерческого использования. Перед внедрением в рабочий процесс проверьте условия лицензионного соглашения на официальных сайтах разработчиков.
Для регулярного использования лучше комбинировать встроенные средства 1С (для оперативной работы) и внешние утилиты (для глубокого анализа перед рефакторингом).
FAQ: Частые вопросы по подсветке дублирующихся слов
Почему встроенная подсветка не работает в моей версии 1С?
Скорее всего, у вас версия ниже 8.3.18 — в более старых редакциях эта функция отсутствует. Обновите платформу через Помощник обновления 1С или вручную скачайте дистрибутив с сайта пользователей. Также проверьте, что в параметрах редактора текста включена опция Подсвечивать повторяющиеся идентификаторы.
Можно ли настроить цвета подсветки?
Цвета встроенной подсветки жёстко заданы в платформе и не настраиваются через интерфейс. Однако если использовать расширение 1С:Скрипт или внешние утилиты, вы сможете выбрать собственную цветовую схему. В файле 1CEStart.cfg тоже можно экспериментировать с недокументированными параметрами типа DuplicateColor1, но это требует глубоких знаний структуры конфигурационных файлов.
Как найти дубли не только по именам, но и по логике кода?
Для поиска семантических дубликатов (когда код выполняет одинаковые действия, но написан по-разному) нужны инструменты статического анализа типа SonarQube или PVS-Studio для 1С. Они используют абстрактное синтаксическое дерево (AST) для сравнения логики, а не текста. Настройка таких инструментов требует опыт: придётся задавать правила для игнорирования стандартных конструкций (например, типичных обработчиков событий).
Безопасно ли использовать недокументированные параметры вроде EnableDuplicateHighlighting?
Да, безопасно — эти параметры тестируются в внутренних сборках 1С перед выпуском. Однако их поведение может меняться между версиями платформы. Например, в 8.3.22 параметр EnableDuplicateHighlighting начал конфликтовать с механизмом автодополнения. Если после активации появились артефакты в работе редактора, просто удалите строку из конфигурационного файла.
Как автоматизировать проверку на дубли при командной разработке?
Для командной работы настройте:
- Прекоммитные хуки в Git, которые запускают скрипт анализа дубликатов
- Интеграцию SonarQube с вашей системой CI (например, Jenkins или GitLab CI)
- Периодические задачи в 1С:Анализ кода с экспортом отчётов в общий чат (например, Telegram или Slack)
Минимальный порог для блокировки коммита — 5+ повторений одного блока кода.