Всё ли в порядке с расширениями конфигурации: проблемы применения, причина отказа и что каждое расширение меняет в конфигурации

29.09.26

Разработка - Инструментарий разработчика

После обновления типовой расширение может перестать совпадать с конфигурацией, а список расширений БСП всё равно рисует ему зелёную галочку. Обработка показывает состояние каждого расширения словами — подключено, выключено, не подключилось, ждёт перезапуска — и проблемы применения с текстом платформы, в том числе у подключённых расширений. На второй закладке — дерево объектов конфигурации, которые расширения добавили или изменили, до реквизита и формы; косвенные изменения обработка отделяет от настоящих. Если в базе есть БСП — ещё и дополнительные отчёты и обработки с отбором по безопасному режиму. Управляемая форма, без БСП, только чтение. В статье я разбираю код: состояние по трём спискам расширений, ПроверитьВозможностьПрименения, РасширениеКонфигурации и ЕстьИзмененияРасширениямиКонфигурации у объектов метаданных, отделение косвенных изменений через СодержитТип.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Расширения в базе, версия 1.0
.epf 21,65Kb ver:1.0
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

Типовую обновили — и одно из расширений тихо перестало совпадать с конфигурацией. Список расширений в БСП при этом рисует ему зелёную галочку «подключено»: проверку применимости форма не выполняет. А расширению, которое администратор просто выключил, та же форма ставит красный крест с подписью «Не удалось подключить при входе в приложение». Чтобы узнать правду, приходится лезть в Конфигуратор или вспоминать, кто и когда снимал флажок.

Второй вопрос после обновления — что вообще меняют расширения в этой базе. Форма документа ведёт себя странно, реквизит взялся непонятно откуда — в каком расширении искать? Платформа умеет ответить и на это, но в стандартных формах ответа нет.

Обработка «Расширения в базе» собирает оба ответа в одном окне: состояние каждого расширения словами, проблемы применения с текстом платформы и дерево объектов конфигурации, которые расширения добавили или изменили — до реквизита и формы. Форма управляемая, работает только на методах платформы, поэтому открывается и в конфигурации без БСП. Если БСП есть, появляется ещё закладка с дополнительными отчётами и обработками. В базу обработка ничего не пишет, нужны права администратора.

 

Как это выглядит

Список расширений

Сверху — расширения с бедой: не подключившиеся и те, у которых проверка применимости нашла критичную проблему. Колонка «Что меняет» сразу говорит, сколько объектов расширение добавило и изменило. Под списком — полный текст проблем выбранного расширения.

Список расширений с состоянием и проблемами применения «Доработка справочника банков» подключена, но проверка применимости нашла критичную проблему: копия метода в расширении больше не совпадает с методом конфигурации

Та же база в стандартной форме БСП «Расширения»: у этого расширения зелёная галочка, а у выключенных вручную «Отчётов руководителя» — красный крест «Не удалось подключить».

Стандартная форма Расширения в УНФ Для сравнения — стандартная форма «Расширения»: проблемное расширение выглядит подключённым, а выключенное — сломанным.

Расширение, которое действительно не подключилось, обработка показывает с причиной — той, что назвала платформа.

Расширение не подключилось, причина названа «Вес товаров» включён, но не подключился: в конфигурации нет общей картинки, на которую он ссылается

Что меняют расширения

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

Дерево объектов, которые расширения добавили или изменили Добавленный справочник, реквизит расширения в типовой «Номенклатуре», изменённые формы и состав подсистемы

Платформа считает изменёнными гораздо больше объектов, чем расширения трогали на самом деле. Флажок «Косвенные изменения» показывает их с объяснением, откуда взялась отметка.

Косвенные изменения с причиной Косвенные изменения: новый справочник расширения вошёл в составной тип реквизитов регистров и справочников БСП.

Двойной щелчок по расширению в списке открывает дерево только с его объектами.

Что меняет одно расширение Отбор по одному расширению: реквизит «Заметка менеджера» в «Номенклатуре» и изменённая форма элемента

Дополнительные отчёты и обработки

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

Дополнительные отчёты и обработки БСП Доп. обработки: публикация, безопасный режим, файл; под списком — описание выбранной.

 

Как это сделано

Состояние расширения: три списка вместо одного

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

Подключённые = КлючиРасширений(ИсточникРасширенийКонфигурации.СеансАктивные);
Отключённые = КлючиРасширений(ИсточникРасширенийКонфигурации.СеансОтключенные);

Для Каждого Расширение Из РасширенияКонфигурации.Получить() Цикл
	Ключ = КлючРасширения(Расширение);
	Если Подключённые[Ключ] <> Неопределено Тогда
		Состояние = ?(Расширение.Активно, "подключено", "подключено, выключится после перезапуска");
	ИначеЕсли Отключённые[Ключ] <> Неопределено Тогда
		Состояние = ?(Расширение.Активно, "не подключилось", "выключено");
	Иначе
		Состояние = "ждёт перезапуска";
	КонецЕсли;
КонецЦикла;

Функция КлючРасширения(Расширение)
	Возврат Расширение.Имя + "|" + Расширение.ХешСумма + "|" + Расширение.ОбластьДействия;
КонецФункции

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

Выключенное вручную расширение лежит в списке не подключённых с Активно = Ложь, и обработка называет его выключенным. Форма БСП смотрит только на то, в каком списке расширение, поэтому и рисует ему «Не удалось подключить».

Не подключилось или просто ждёт входа

В списке не подключённых с Активно = Истина оказываются два разных случая. Первый — расширение не прошло проверку применимости и платформа его не подключила. Второй — флажок «Активно» поставили уже после входа в программу, и расширение подключится при следующем входе. Проверка применимости их и различает: у настоящего отказа есть критичная проблема.

Критичных = ОписатьПроблемы(Расширение, Запись);
Если Запись.КНеПодключилось И Критичных = 0 Тогда
	Запись.КСостояние = "подключится после перезапуска";
	Запись.КНеПодключилось = Ложь;
КонецЕсли;

Проблемы применения

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

Попытка
	Проблемы = Расширение.ПроверитьВозможностьПрименения();
Исключение
	ЗаписьЖурналаРегистрации("Расширения в базе", УровеньЖурналаРегистрации.Ошибка, , ,
		"Проверка применимости «" + Расширение.Имя + "»: " + ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
	Возврат 1;
КонецПопытки;

Критичных = 0;
Тексты = Новый Массив;
Для Каждого Проблема Из Проблемы Цикл
	Если Проблема.Важность = ВажностьПроблемыПримененияРасширенияКонфигурации.Критичная Тогда
		Критичных = Критичных + 1;
	КонецЕсли;
	Тексты.Добавить(ВажностьСловами(Проблема.Важность) + ": " + Проблема.Описание);
КонецЦикла;

Типичный случай — метод с аннотацией &ИзменениеИКонтроль. Расширение хранит копию исходного метода, и после обновления типовой копия перестаёт совпадать с оригиналом. Я проверял на 8.5: такое расширение продолжает подключаться, а проверка возвращает критичную проблему «Текст метода … не соответствует методу …». Доработка работает, но опирается на старый код, и увидеть это можно только так.

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

Что добавлено и что изменено

У каждого объекта метаданных есть два метода. РасширениеКонфигурации() возвращает расширение, которое добавило объект, — или Неопределено, если объект из конфигурации. ЕстьИзмененияРасширениямиКонфигурации() отвечает, изменён ли объект расширениями. Обработка обходит все коллекции конфигурации и раскладывает объекты на добавленные и изменённые:

Для Каждого ИмяКоллекции Из СтрРазделить(КоллекцииМетаданных(), ",", Ложь) Цикл
	Для Каждого ОбъектМД Из Метаданные[ИмяКоллекции] Цикл
		Расширение = ОбъектМД.РасширениеКонфигурации();
		Если Расширение <> Неопределено Тогда
			Добавленные.Добавить(Новый Структура("Вид,Объект,Расширение", ИмяКоллекции, ОбъектМД, Расширение));
			Если ТипыСсылок.Свойство(ИмяКоллекции) Тогда
				ДобавленныеТипы.Добавить(Новый Структура("Тип,Объект,Расширение",
					Тип(ТипыСсылок[ИмяКоллекции] + "." + ОбъектМД.Имя), ОбъектМД, Расширение));
			КонецЕсли;
		ИначеЕсли ОбъектМД.ЕстьИзмененияРасширениямиКонфигурации() Тогда
			Изменённые.Добавить(Новый Структура("Вид,Объект,Путь", ИмяКоллекции, ОбъектМД, ""));
		КонецЕсли;
	КонецЦикла;
КонецЦикла;

Оба метода дешёвые: обход всей типовой конфигурации с ними занимает доли секунды, поэтому обработка строит дерево сразу при открытии. Попутно обработка запоминает ссылочные типы добавленных объектов — ТипыСсылок сопоставляет коллекции с именами типов, например «Справочники» с «СправочникСсылка». Эти типы нам понадобятся ниже, для косвенных изменений.

Вложенные подсистемы в коллекцию Метаданные.Подсистемы не входят, их обработка обходит рекурсией и подписывает путём «Продажи → Продажи».

Что именно изменено в объекте

Отметка «изменён» у справочника мало что говорит. Обработка спускается к его частям — реквизитам, табличным частям с их реквизитами, формам, командам, макетам — и спрашивает те же два метода у каждой части. Какие части бывают у объекта, она определяет по виду коллекции, а не перебором с исключениями.

Для Каждого ИмяЧастей Из СтрРазделить(ЧастиВида(Вид), ",", Ложь) Цикл
	Для Каждого Часть Из ОбъектМД[ИмяЧастей] Цикл
		Расширение = Часть.РасширениеКонфигурации();
		Если Расширение = Неопределено И НЕ Часть.ЕстьИзмененияРасширениямиКонфигурации() Тогда
			Продолжить;
		КонецЕсли;
		// строка под объектом: «добавлен расширением …» или «изменён»
	КонецЦикла;
КонецЦикла;

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

Каким расширением изменена форма или модуль, платформа не сообщает — только сам факт. Если объект трогают несколько расширений, такое изменение видно в дереве при отборе «Все расширения», но не при отборе по одному из них.

Косвенные изменения

Если расширение добавляет свой справочник, платформа считает изменёнными все объекты, у которых есть реквизит составного типа, куда этот справочник вошёл: «любая ссылка», значение дополнительного свойства и подобные. В типовой конфигурации с БСП это десятки регистров и справочников, которые расширение не трогало. Сами такие реквизиты платформа изменёнными не помечает — только объект.

Чтобы отделить шум от настоящих изменений, обработка проверяет у изменённого объекта без изменённых частей типы реквизитов:

Для Каждого Реквизит Из Реквизиты Цикл
	Для Каждого Добавленный Из ДобавленныеТипы Цикл
		Если Реквизит.Тип.СодержитТип(Добавленный.Тип) Тогда
			Возврат Новый Структура("Текст,Расширение",
				"тип «" + Реквизит.Имя + "» U92; «" + Добавленный.Объект.Синоним + "»",
				Добавленный.Расширение.Имя);
		КонецЕсли;
	КонецЦикла;
КонецЦикла;

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

Дополнительные отчёты и обработки БСП

Справочник БСП чужой: в одной конфигурации его нет вовсе, в другой у него свой набор реквизитов. Поэтому обработка создаёт закладку, только если справочник есть, и берёт в запрос лишь те реквизиты, что в этой базе существуют. Право чтения обработка проверяет заранее, а не ловит исключение запроса.

СправочникМД = Метаданные.Справочники.ДополнительныеОтчетыИОбработки;
Если НЕ ПравоДоступа("Чтение", СправочникМД) Тогда
	Возврат;
КонецЕсли;
Поля = Новый Массив;
Поля.Добавить("Т.Наименование КАК Наименование");
Поля.Добавить("Т.ПометкаУдаления КАК ПометкаУдаления");
Для Каждого Имя Из СтрРазделить("Вид,Версия,Публикация,БезопасныйРежим,ИмяФайла,Ответственный,Информация", ",") Цикл
	Если СправочникМД.Реквизиты.Найти(Имя) = Неопределено Тогда
		Поля.Добавить("NULL КАК " + Имя);
	Иначе
		Поля.Добавить("Т." + Имя + " КАК " + Имя);
	КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос("ВЫБРАТЬ " + СтрСоединить(Поля, ", ")
	+ " ИЗ Справочник.ДополнительныеОтчетыИОбработки КАК Т"
	+ ?(СправочникМД.Иерархический, " ГДЕ НЕ Т.ЭтоГруппа", ""));

Отключённую обработку нам нужно распознать по значению перечисления, которого в конфигурации без БСП нет. ЗНАЧЕНИЕ() в запросе и обращение к Перечисления в коде там не скомпилируются, а представление значения зависит от языка. Здесь помогает XMLСтрока: для значения перечисления она возвращает его имя.

Отключена = (XMLСтрока(Выборка.Публикация) = "Отключена");

 

На чём проверено

Я проверял на платформе 1С:Предприятие 8.5 (8.5.1.1522) и «Управлении нашей фирмой» 3.0 (3.0.14.143). В веб-клиенте, на серверной базе. Без БСП — на своей конфигурации, на той же платформе.

На 8.3 я не проверял. Может, откроется, а может, и нет.

 

Состав поставки

  • RasshireniyaVBaze.epf — внешняя обработка «Расширения в базе», код открыт.

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

расширения конфигурации РасширенияКонфигурации ПроверитьВозможностьПрименения ИзменениеИКонтроль ЕстьИзмененияРасширениямиКонфигурации РасширениеКонфигурации ошибка применения расширения дополнительные отчеты и обработки без БСП

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    80127    409    171    

345

Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    279648    1584    423    

1209

Разработка Инструментарий разработчика Групповая разработка (Git, хранилище) Разработчик Платные (руб)

Практический курс по работе с AI-агентами для разработчиков 1С уровня middle и senior, а также тимлидов команд: от постановки задач и передачи контекста до создания расширений, интеграций, MCP-инструментов, тестов и проверки готового решения.

50000 руб.

10.09.2026    4641    32    0    

21

Инструментарий разработчика Разработка Администрирование веб-серверов Системный администратор Разработчик Аналитик Руководитель проекта 1С 8.3 Платные (руб)

Analyzer 1C сводит выгрузку 1С — основную конфигурацию и все расширения — в единый граф знаний. Любой запрос по связям за доли секунды, с пометками «Доб.» / «Заимств.» / «Переопределено». Новое в 2.0 — обновление поставки: сравнение и объединение версий деревом «как в Конфигураторе» с выгрузкой плана решений; поиск конфликтов из-за перехватов расширений и висячих ссылок; загрузка из бинарных .cf/.cfe; циклические зависимости. Плюс анализ влияния, запросы BSL, роли и RLS, граф вызовов. Минута на развёртывание через Docker без необходимости подключения к Интернет. Любая 1С:Предприятие 8.3+.

14000 руб.

17.04.2026    14182    54    62    

65

Пакетная печать Печатные формы Инструментарий разработчика Разработчик 1С:Предприятие 8 Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм. Обновление версии от 21.04.26

22570 руб.

06.10.2023    42845    118    54    

131

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданным 1С, справке синтакс-помощника и проверки синтаксиса.

15250 руб.

25.08.2025    71809    142    41    

151

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27966    101    46    

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