← Назад к вопросам

Что такое расширения?

1.0 Junior🔥 141 комментариев
#Расширения

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Расширения в 1С

Расширение это отдельная конфигурация, которая дополняет или модифицирует основную конфигурацию, не меняя её напрямую. Это механизм для неинвазивного расширения функционала.

Определение

Расширение это:

  • Отдельный файл конфигурации (.cfe)
  • Дополнительный слой функционала поверх основной конфигурации
  • Может добавлять новые объекты и модифицировать существующие
  • Не нарушает целостность базовой конфигурации
  • Легко включается и отключается

Типы расширений

1. Простое расширение (добавление новых объектов)

Основная конфигурация:
├─ Справочник Организации
├─ Справочник Контрагенты
└─ Документ Счета

Расширение добавляет:
├─ Справочник ОКПО (новый)
└─ Документ АктПриемки (новый)

2. Модифицирующее расширение (изменение существующих)

Основная конфигурация:
├─ Справочник Товары
│  └─ Реквизиты: Наименование, Цена

Расширение добавляет в Справочник Товары:
└─ Новый реквизит: КодПоставщика
└─ Новый реквизит: ТипУпаковки

Создание расширения

Конфигуратор → Конфигурация → Создать расширение

Параметры:
- Имя: "МояБизнесЛогика"
- Название: "Расширение пользовательской бизнес-логики"
- Описание: "Добавляет логику учёта по проектам"

Практический пример 1: Добавление реквизитов

// В расширении модифицируем Справочник Контрагенты
// (в основной конфигурации он остаётся неизменным)

// Конфигуратор → Справочники → Контрагенты → Реквизиты
// Добавляем новый реквизит:
// Имя: КодДостава
// Тип: Число(5,0)
// Описание: Код службы доставки

// В модуле объекта расширения:
Процедура ПриУстановкеНовогоКодаДостав()
    // Логика валидации нового поля
    Если КодДостава < 10000 Или КодДостава > 99999 Тогда
        ВызватьИсключение("Неверный формат кода");
    КонецЕсли;
КонецПроцедуры

Практический пример 2: Добавление команд в форму

// В расширении добавляем команды в форму Справочника Товары

// Новая команда: "Синхронизировать с каталогом"
Процедура СинхронизироватьСКаталогомНажатие()
    
    // Получить данные из внешнего источника
    Данные = ПолучитьДанныеИзКаталога(Объект.ВнешнийID);
    
    // Обновить реквизиты
    Объект.Наименование = Данные.Наименование;
    Объект.Описание = Данные.Описание;
    Объект.Цена = Данные.Цена;
    
    // Сохранить
    Объект.Записать();
    
    Сообщить("Синхронизация завершена");
КонецПроцедуры

Практический пример 3: Расширение функционала документа

// В расширении добавляем новые табличные части
// к документу Счет

// В конфигураторе расширения:
// Документ Счет → Таблицы → добавляем "ФактическиеДаты"
// Колонки:
//  - Товар (ссылка на Товары)
//  - ПланируемаяДата (дата)
//  - ФактическаяДата (дата)

Процедура ПриПроведенииРасширение(ПроведениеОтмена)
    
    // Валидация фактических дат
    Для каждого Строка Из ФактическиеДаты Цикл
        Если Строка.ФактическаяДата > ТекущаяДата() Тогда
            ВызватьИсключение("Фактическая дата не может быть в будущем");
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

Преимущества расширений

1. Неинвазивность
   - Основная конфигурация остаётся чистой
   - Легко откатить расширение
   - Не нарушается целостность оригинала

2. Гибкость
   - Можно включать/отключать расширения
   - Несколько расширений могут работать вместе
   - Легко развивать функционал

3. Управляемость
   - Четкая граница между базой и расширениями
   - Проще обновлять конфигурацию поставщика
   - Конфликты обновлений решаются проще

4. Переносимость
   - Расширение можно применить к другой ИБ
   - Можно делиться расширениями между проектами

Ограничения расширений

1. Нельзя удалить объекты из основной конфигурации
   - Можно только скрыть
   - Нельзя удалить реквизит
   - Нельзя удалить таблицу

2. Нельзя переименовать объекты основной конфигурации
   - Имена остаются от оригинала
   - Можно только изменить представление

3. Производительность
   - Расширение может замедлить работу
   - Множественные слои логики сложнее отлаживать

4. Совместимость
   - Некоторые объекты нельзя расширять
   - Есть ограничения на тип изменений

Как работают расширения

1. Включение расширения:
   Администрирование → Расширения конфигурации
   → Выбрать файл (.cfe)
   → Применить расширение

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

3. Отключение расширения:
   Администрирование → Расширения конфигурации
   → Выбрать → Удалить расширение

Практический пример 4: Несколько расширений вместе

Основная конфигурация:
├─ Справочник Организации
├─ Справочник Контрагенты
└─ Документ Счета

Расширение 1 (Учёт по проектам):
├─ Добавляет поле Проект в Счета
└─ Добавляет Справочник Проектов

Расширение 2 (Интеграция с 1С:ЭДО):
├─ Добавляет команду "Отправить в ЭДО"
└─ Добавляет поле ТипДокумента

Расширение 3 (Мобильное приложение):
├─ Добавляет синхронизацию с облаком
└─ Добавляет поле Синхронизирован

Все три расширения работают независимо!

Обновление конфигурации при наличии расширений

// При обновлении поставщика конфигурации:

1. Сделать резервную копию
   Администрирование → Резервные копии

2. Отключить все расширения
   Администрирование → Расширения конфигурации
   → Удалить все

3. Обновить основную конфигурацию
   Конфигурация → Загрузить из файла
   → Выбрать новую версию

4. Применить расширения обратно
   Администрирование → Расширения конфигурации
   → Добавить расширение
   → Выбрать .cfe файл

5. Проверить совместимость
   Проверить синтаксис (F7)
   Протестировать функционал

Типичные ошибки при работе с расширениями

1. Забыли отключить расширение перед обновлением
   → Конфликты с новыми версиями

2. Расширение добавляет логику в основной модуль
   → Сложно отлаживать
   → Трудно поддерживать

3. Множество расширений создают беспорядок
   → Трудно разобраться, откуда функция
   → Производительность падает

4. Расширение повторяет функционал основной конфигурации
   → Путаница в коде
   → Баги

5. Документация расширения отсутствует
   → Другим разработчикам сложно понять

Best Practices при разработке расширений

1. Давайте расширению осмысленное имя
   "БизнесЛогикаУчётаПроектов" вместо "РасширениеV1"

2. Документируйте что делает расширение
   - Какие объекты добавляет
   - Какие реквизиты добавляет
   - Какие зависимости от других расширений

3. Минимизируйте размер расширения
   - Одно расширение = одна функция
   - Не смешивайте несвязанный функционал

4. Тестируйте на разных версиях ИБ
   - На разных версиях конфигурации
   - С разными наборами расширений

5. Версионируйте расширения
   - Сохраняйте старые версии
   - Указывайте номер версии в имени файла

6. Создавайте инструкции по применению
   - Шаги для установки
   - Резервная копия перед применением
   - Как откатить в случае проблем

Экспорт и импорт расширений

// Сохранить расширение:
Администрирование → Расширения конфигурации
→ Выбрать расширение
→ Экспортировать
→ Сохранить .cfe файл

// Применить расширение к другой ИБ:
Администрирование → Расширения конфигурации
→ Импортировать
→ Выбрать .cfe файл

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