Расширения 1С без хаоса: как дорабатывать типовую и не получить второй конфигуратор

09.06.26

Разработка - Механизмы платформы 1С

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

Расширения в 1С — один из тех инструментов, которые сначала выглядят как спасение.

Типовую конфигурацию можно не снимать с поддержки. Изменения можно вынести отдельно. Обновления проходят спокойнее. Разработчик не лезет напрямую в конфигурацию поставщика. Руководитель доволен: “делаем аккуратно”. Пользователи довольны: “доработка появилась быстро”.

Но через год-два в некоторых базах появляется другая картина:

  • расширений стало много, но никто не помнит, зачем каждое из них создавалось;
  • в одном расширении лежат и печатные формы, и изменения ролей, и перехваты форм, и служебные регистры;
  • часть расширений отключать страшно;
  • после обновления типовой конфигурации что-то ломается, но непонятно где;
  • новый разработчик открывает расширение и видит “маленькую вторую конфигурацию”;
  • владельца у расширения нет, документации нет, проверки перед релизом нет;
  • все знают, что “надо бы разобрать”, но пока работает — не трогаем.

Так расширения из инструмента аккуратной доработки превращаются в отдельный слой хаоса.

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

 

Расширение — это не “маленькая доработка”

Главная ошибка — воспринимать расширение как что-то легкое и безопасное само по себе.

Мол, если не трогаем основную конфигурацию, значит всё хорошо.

На практике расширение может влиять на систему очень серьезно:

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

То есть расширение — это не просто “внешний файлик рядом с базой”. Это часть архитектуры решения.

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

Да, расширение помогает сохранить типовую конфигурацию на поддержке. Но оно не отменяет проектирование, тестирование, code review, документацию и ответственность.

 

Почему расширения превращаются в хаос

 

1. Расширение создают “на одну задачу”, а потом продолжают складывать туда всё подряд

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

Потом туда добавляют печатную форму. Потом — команду на форме документа. Потом — общий модуль. Потом — регистр сведений для настроек. Потом — перехват заполнения. Потом — временную логику “до нормальной реализации”.

Через полгода расширение называется примерно так:

“Расширение_Доработки_Для_Бухгалтерии_Новое_2_Финал”

А внутри лежит всё, что не успели нормально разложить.

Проблема не в самом расширении. Проблема в отсутствии границ.

 

2. Нет владельца

У расширения должен быть владелец.

Не обязательно один разработчик на всю жизнь. Но должна быть понятная ответственность:

  • кто понимает назначение расширения;
  • кто принимает решение о его изменении;
  • кто проверяет его после обновления;
  • кто может объяснить, можно ли его удалить;
  • кто знает, какие бизнес-процессы оно затрагивает.

Если владельца нет, расширение постепенно становится ничейным. А ничейные артефакты в 1С обычно живут дольше всех и ломаются в самый неудобный момент.

 

3. Нет реестра расширений

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

Список расширений без контекста не отвечает на главные вопросы:

  • зачем оно нужно;
  • какой процесс затрагивает;
  • кто заказчик;
  • есть ли документация;
  • какие объекты типовой конфигурации расширены;
  • какие сценарии нужно проверить после обновления;
  • можно ли отключить расширение;
  • есть ли замена или план вывода из эксплуатации.

Без реестра расширения превращаются в набор “черных коробок”.

 

4. Расширения не участвуют в релизном процессе

Бывает так: конфигурацию обновили, пользовательские сценарии проверили, основные документы открыли, обмены посмотрели. А расширения — “ну они же подключены, значит работают”.

Потом в рабочей базе выясняется:

  • перехватчик формы перестал срабатывать;
  • типовой реквизит изменился;
  • команда исчезла или стала недоступна;
  • права больше не дают открыть форму;
  • печать падает из-за изменения макета;
  • расширенный объект конфликтует с изменениями поставщика.

Расширения должны быть частью релизного чек-листа. Иначе они становятся скрытым источником риска.

 

Когда расширение оправдано

Расширение — хороший инструмент, если оно решает понятную задачу и его границы ясны.

Например, расширение оправдано, когда нужно:

  • добавить небольшие реквизиты и команды без изменения типовой конфигурации;
  • адаптировать форму под внутренний процесс;
  • добавить печатную форму или отчет;
  • реализовать локальное поведение для конкретной организации;
  • добавить служебную проверку или контроль;
  • расширить интерфейс без глубокой переработки типовой логики;
  • вынести проектную доработку отдельно от основной конфигурации;
  • быстро поставить изменение, которое не должно мешать обновлению типовой.

Хороший признак: расширение можно описать одной фразой.

“Это расширение добавляет контроль заполнения реквизитов договора перед запуском согласования”.

Или:

“Это расширение добавляет печатную форму и команду вывода для внутреннего акта”.

Если описание превращается в длинный список из десяти разных направлений, это сигнал: расширение стало контейнером для всего подряд.

 

Когда расширение — плохой выбор

Расширение не всегда лучший вариант.

Иногда его используют просто потому, что “так безопаснее”. Но безопаснее не всегда означает правильнее.

Расширение может быть плохим выбором, если:

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

Особенно осторожно стоит относиться к расширениям, которые перехватывают типовое поведение в критичных учетных процессах.

Например:

  • проведение документов;
  • закрытие месяца;
  • расчет зарплаты;
  • обмены с внешними системами;
  • формирование регламентированной отчетности;
  • маршруты согласования в 1С:Документооборот;
  • права доступа и RLS;
  • массовые фоновые операции.

Это не значит, что расширения там запрещены. Но цена ошибки выше, а значит нужны более строгие правила проверки.

 

Матрица выбора: расширение, внешняя обработка, настройка или изменение конфигурации

Перед созданием расширения полезно задать простой вопрос:

Мы точно решаем эту задачу расширением, потому что это лучший вариант, а не потому что так быстрее прямо сейчас?

Для быстрой оценки можно использовать такую матрицу.

 

Ситуация Лучший вариант Почему
Нужно добавить печатную форму или отчет Внешний отчет/обработка или расширение Если изменение автономное — лучше внешний артефакт. Если нужна плотная интеграция с формой — расширение
Нужно добавить реквизит на форму Расширение Хороший сценарий для расширения, если логика локальная и понятная
Нужно изменить маршрут согласования Сначала типовые настройки, потом расширение В 1С:Документооборот часто часть задачи решается настройками без разработки
Нужно изменить проведение документа Осторожно: анализировать отдельно Высокий риск влияния на учет и обновления
Нужно сделать разовую загрузку данных Внешняя обработка Расширение не нужно, если задача разовая или сервисная
Нужно добавить интеграцию по API Зависит от сценария Для постоянного процесса можно расширение/подсистема, для диагностики — внешняя обработка
Нужно временное решение на 1–2 недели Лучше внешний артефакт или отдельное временное расширение с датой вывода Временные решения часто становятся постоянными
Нужно изменить права Типовые роли/настройки, затем расширение Права должны быть проверяемыми и понятными для сопровождения

 

Матрица не заменяет проектирование, но помогает не создавать расширение автоматически на каждую просьбу.

 

 

Минимальные правила для расширений

Чтобы расширения не превращались в хаос, не нужно сразу писать регламент на 40 страниц.

Для начала достаточно нескольких правил.

 

Правило 1. У каждого расширения должно быть назначение

Расширение должно отвечать на вопрос: “Зачем оно существует?”

Хорошо:

  • “Контроль заполнения реквизитов договора в 1С:Документооборот”.
  • “Дополнительные печатные формы для кадровых заявлений”.
  • “Интеграция с внутренним сервисом проверки контрагентов”.
  • “Адаптация формы заявки на оплату под внутренний процесс”.

Плохо:

  • “Доработки”.
  • “Разное”.
  • “Бухгалтерия”.
  • “Новое расширение”.
  • “Исправления 2025”.

Название и описание должны помогать сопровождению, а не только автору в момент разработки.

 

Правило 2. Не складывать всё в одно расширение

Удобно иметь одно расширение “на все доработки”. Но это удобно только в начале.

Потом такое расширение становится слишком тяжелым:

  • его сложно тестировать;
  • непонятно, какой бизнес-процесс оно затрагивает;
  • сложно оценить влияние изменений;
  • страшно отключить;
  • сложно передать другому разработчику;
  • сложно разделить ответственность.

Лучше группировать расширения по смыслу:

  • по бизнес-процессу;
  • по функциональному блоку;
  • по проекту;
  • по интеграции;
  • по типу доработки, если это действительно удобно.

Но не нужно уходить и в обратную крайность: одно расширение на каждую маленькую кнопку тоже может создать лишний шум.

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

 

Правило 3. Любой перехват — зона повышенного внимания

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

Если расширение перехватывает типовую логику, нужно явно фиксировать:

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

Хорошая практика — в комментарии к нестандартному решению писать не только “что сделано”, но и “почему так”.

 

Правило 4. Расширение должно участвовать в code review

Расширение — это код. Значит, его нужно ревьюить.

Минимальный чек-лист review:

  • понятно ли назначение расширения;
  • нет ли лишних объектов “на будущее”;
  • не дублируется ли типовая логика без необходимости;
  • есть ли обработка ошибок;
  • не зашиты ли пути, пользователи, пароли, адреса серверов;
  • понятно ли, как проверить изменение;
  • не добавлены ли избыточные права;
  • не затронуты ли критичные процессы без отдельной проверки;
  • есть ли комментарии к нестандартным решениям.

Цель review — не придраться к стилю. Цель — не пустить в рабочую базу расширение, которое через месяц станет проблемой.

 

Правило 5. У расширения должен быть сценарий проверки

Для каждого важного расширения нужно знать, как проверить, что оно работает.

Не обязательно писать полноценные автотесты на всё. Но минимальный сценарий должен быть.

Например:

  • открыть форму документа;
  • проверить доступность команды;
  • создать тестовый документ;
  • заполнить реквизиты;
  • запустить согласование;
  • сформировать печатную форму;
  • проверить права пользователя;
  • выполнить обмен;
  • убедиться, что ошибка корректно логируется.

Если у расширения нет сценария проверки, команда каждый раз проверяет его “на ощущениях”.

 

Реестр расширений: что в нем хранить

Реестр расширений — это не бюрократия. Это страховка.

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

  • какие расширения есть;
  • что они делают;
  • что может сломаться;
  • кого спросить;
  • что проверить;
  • что можно отключить;
  • что давно пора разобрать.

Минимальный состав реестра:

 

Поле  Зачем нужно
Наименование расширения  Чтобы понимать, о каком артефакте идет речь
Назначение  Коротко: какую задачу решает
Конфигурация  БП, ЗУП, УНФ, 1С:Документооборот и т.д.
Версия / дата изменения  Чтобы понимать актуальность
Владелец  Кто отвечает за смысл и сопровождение
Заказчик / процесс  Кто использует и какой бизнес-процесс затронут
Расширяемые объекты  Формы, документы, справочники, регистры, роли
Критичность  Высокая, средняя, низкая
Сценарий проверки  Что проверить после обновления
Риски  Что может сломаться
Статус  Активно, временно, на вывод, устарело

 

 

Такой реестр можно вести в 1С, Excel, Confluence, Git-репозитории или даже в простой таблице. Инструмент вторичен. Главное — чтобы информация была актуальна и использовалась перед релизами.

 

 

Как оценивать риск расширения

Не все расширения одинаково опасны.

Расширение с одной печатной формой и расширение, которое меняет поведение проведения документа, нельзя проверять одинаково.

Для быстрой оценки можно использовать три уровня риска.

 

Уровень риска Примеры Как проверять
Низкий Отчет, печатная форма, команда без изменения учета Проверка открытия, формирования, прав доступа
Средний Изменение формы, дополнительные реквизиты, проверки заполнения, обработчики команд Проверка пользовательского сценария, прав, ошибок, совместимости с обновлением
Высокий Перехваты типовой логики, проведение, обмены, права, бизнес-процессы, регламентные задания Отдельный тест-план, code review, проверка на копии базы, контроль после релиза

 

Такая классификация помогает не перегружать простые изменения и не недооценивать опасные.

 

Расширения и обновления типовой конфигурации

Главный момент истины для расширений — обновление.

До обновления всё может выглядеть спокойно. Расширение работает, пользователи не жалуются, разработчик давно забыл, что именно там делал.

После обновления типовой конфигурации может измениться:

  • форма;
  • имя элемента формы;
  • тип реквизита;
  • сигнатура процедуры;
  • поведение обработчика;
  • структура данных;
  • механизм прав;
  • логика типового процесса.

Поэтому перед обновлением стоит пройти минимальный чек-лист.

 

Чек-лист перед обновлением

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

Это не гарантирует, что проблем не будет. Но сильно снижает вероятность сюрпризов в рабочей базе.

 

Временное расширение должно иметь дату смерти

Одна из классических ловушек — временные решения.

Команда делает расширение “на пару недель”, чтобы закрыть срочную боль:

  • обойти ограничение до основной доработки;
  • быстро добавить контроль;
  • временно поменять форму;
  • сделать исключение для одного процесса;
  • поддержать переходный период.

Через год это расширение всё еще подключено. Никто не помнит, почему. Отключать страшно.

Поэтому у временного расширения должны быть:

  • причина создания;
  • дата пересмотра;
  • условие удаления;
  • владелец;
  • план замены или вывода.

Временное решение без даты пересмотра — это будущий постоянный техдолг.

Типовые анти-паттерны расширений

 

Анти-паттерн 1. “Одно расширение на всё”

Такое расширение удобно создать, но сложно сопровождать.

Внутри постепенно появляются несвязанные изменения. Через какое-то время никто не понимает, где заканчивается одна доработка и начинается другая.

 

Анти-паттерн 2. “Расширение без владельца”

Автор давно ушел в другой проект, заказчик не помнит детали, пользователи привыкли, документации нет.

Такое расширение становится рискованным даже без изменения кода.

 

Анти-паттерн 3. “Перехват ради удобства”

Иногда разработчик перехватывает типовую логику, потому что так быстрее.

Но быстрый перехват сегодня может стать дорогой ошибкой при следующем обновлении.

 

Анти-паттерн 4. “Без сценария проверки”

Расширение работает, пока его проверяет автор. Когда автор недоступен, команда не знает, что именно нужно проверить.

 

Анти-паттерн 5. “Расширение вместо разговора с бизнесом”

Иногда техническая доработка закрывает симптом, но не решает проблему процесса.

Например, пользователи неправильно заполняют документ. Можно добавить десять проверок. А можно разобраться, почему они ошибаются: непонятная инструкция, лишние поля, плохой маршрут, нет ответственного, данные приходят слишком поздно.

Расширение не должно заменять анализ процесса.

 

 

Как выглядит здоровый жизненный цикл расширения

У расширения должен быть жизненный цикл.

Не обязательно сложный, но понятный.

 

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

 

Такой подход звучит очевидно. Но именно очевидные вещи чаще всего не фиксируются.

 

Минимальный регламент расширений для команды

Ниже — пример коротких правил, которые можно использовать как основу.

  1. Каждое расширение должно иметь понятное назначение.
  2. У каждого расширения должен быть владелец.
  3. Расширение должно быть внесено в реестр.
  4. Для расширения должен быть определен уровень риска.
  5. Изменения высокого риска проходят обязательное code review.
  6. Для критичных расширений должен быть сценарий проверки.
  7. Расширения участвуют в релизном чек-листе.
  8. Перед обновлением типовой конфигурации проверяются расширения, которые затрагивают измененные объекты.
  9. Временные расширения должны иметь дату пересмотра.
  10. Устаревшие расширения должны выводиться из эксплуатации, а не жить бесконечно “на всякий случай”.

Эти правила не делают команду бюрократической. Они просто помогают не потерять контроль.

 

Что можно начать делать уже завтра

Если расширений в базе уже много, не нужно пытаться за один день построить идеальную систему.

Начать можно с малого.

 

Шаг 1. Выгрузить список расширений

Соберите все активные расширения по базам.

Даже простой список уже даст первое понимание масштаба.

 

Шаг 2. Разделить расширения по критичности

Не надо сразу описывать всё подробно.

Сначала выделите:

  • критичные;
  • средние;
  • низкорисковые;
  • непонятные.

Самая важная категория — “непонятные”. Именно они чаще всего становятся источником сюрпризов.

 

Шаг 3. Найти владельцев

По каждому важному расширению нужно понять, кто может объяснить его назначение.

Если такого человека нет, это уже риск.

 

Шаг 4. Описать сценарии проверки для критичных расширений

Не нужно писать большой документ.

Достаточно короткого списка:

  • что открыть;
  • что нажать;
  • какой документ создать;
  • какой результат увидеть;
  • какую роль пользователя проверить;
  • какую ошибку не получить.

 

Шаг 5. Включить расширения в релизный чек-лист

Перед каждым релизом или обновлением задайте вопросы:

  • какие расширения затронуты;
  • какие из них высокого риска;
  • кто проверяет;
  • что проверяет;
  • что делаем при ошибке.

Это уже сильно снижает хаос.

 

 

Главный вывод

Расширения 1С — хороший инструмент.

Они помогают сохранить типовую конфигурацию на поддержке, быстрее внедрять изменения и аккуратнее отделять проектные доработки от основной конфигурации.

Но расширения не отменяют инженерную дисциплину.

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

Снаружи база может оставаться “типовой на поддержке”. А внутри рядом с ней будет жить вторая, неформальная конфигурация — только хуже документированная и хуже управляемая.

Расширение — это не способ избежать ответственности за доработку. Это способ аккуратно разместить доработку рядом с типовой конфигурацией. Но сопровождать её всё равно придется.

Поэтому здоровый подход простой:

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

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

Вступайте в нашу телеграмм-группу Инфостарт

расширения 1С доработка типовых обновление 1С техдолг сопровождение 1С релизы 1С code review архитектура 1С управляемые формы БСП внешние обработки регистр сведений роли 1С поддержка 1С качество кода

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Механизмы платформы 1С Программист Бесплатно (free)

Разберем 15 мифов о работе платформы «1С:Предприятие 8» – как распространенных, так и малоизвестных. Начнем с классики: «Код, написанный в одну строку, работает быстрее, чем многострочный». Так ли это на самом деле?

16.07.2025    33604    TitanLuchs    108    

149

Механизмы платформы 1С Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Про ООП в 1С и о том, как сделать свой код более кратким и выразительным при помощи использования текучего интерфейса (fluent interface).

03.02.2025    18356    bayselonarrend    127    

68

Механизмы платформы 1С Программист 1С:Предприятие 8 Бесплатно (free)

В этой статье подробно рассматривается работа с JSON в XDTO в 1С:Предприятие. Вы узнаете, как сериализовать и десериализовать объекты XDTO в JSON, интегрировать 1С с веб-сервисами и API, а также корректно обрабатывать данные при обмене. Разбираются особенности работы с коллекциями, использование функций восстановления и частые ошибки при работе с JSON и XDTO.

30.01.2025    23406    user2122906    9    

66

Механизмы платформы 1С Файловый обмен (TXT, XML, DBF), FTP Программист 1С:Предприятие 8 Бесплатно (free)

Этот материал познакомит вас с механизмом XDTO (XML Data Transfer Objects) в 1С и научит эффективно использовать его возможности. Мы разберёмся, как работать с XML-схемами, создавать модели данных, манипулировать объектами XDTO, а также сериализовать и десериализовать их в XML. Вы узнаете, как использовать XDTO для интеграции с внешними системами, избегать типичных ошибок и оптимизировать код. К концу вы будете уверенно применять XDTO для решения сложных задач обмена данными и автоматизации процессов.

17.01.2025    41105    user2122906    12    

62

Механизмы платформы 1С WEB-интеграция Программист 1С:Предприятие 8 Бесплатно (free)

В платформе 8.3.27 появилась возможность использовать WebSocket-клиент. Давайте посмотрим, как это все устроено и чем оно нам полезно.

14.01.2025    34407    dsdred    106    

149

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    30073    bayselonarrend    22    

178

Механизмы платформы 1С Программист Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    16127    dsdred    22    

88
Для отправки сообщения требуется регистрация/авторизация