Вопрос о том, где хранить новые данные — в основной конфигурации или в расширении, является одним из самых дискуссионных в среде разработчиков 1С. С одной стороны, расширения позволяют оставить типовую конфигурацию «чистой», что значительно упрощает процесс обновления. С другой стороны, механизмы платформы по работе с данными в расширениях имеют свои особенности и скрытые риски. Проанализируем эту ситуацию подробно, разберем технические нюансы и выработаем оптимальную стратегию разработки.
Для начала разберем, как именно платформа 1С:Предприятие хранит данные, добавленные через расширение. В отличие от основной конфигурации, где таблицы СУБД имеют стандартные имена (например, _Reference10), данные расширений выносятся в отдельные таблицы. Эти таблицы получают специальные префиксы, такие как _ExtX, где X — внутренний идентификатор расширения.
Рассмотрим, к чему это может привести. Если по какой-то причине расширение будет удалено и загружено заново как «новое» (например, при случайной смене внутреннего уникального идентификатора или некорректном переносе между базами), связь между расширением и существующими таблицами в СУБД будет разорвана. Платформа просто «забудет», что эти данные принадлежат данному объекту. В результате при проведении процедуры Тестирование и исправление (ТиИ) система может посчитать эти таблицы «сиротскими» и очистить их, что приведет к необратимой потере информации.
Проанализируем ситуацию с обновлением типовых решений. Механизм расширений задумывался как средство адаптации, но он накладывает серьезные ограничения на поддержку:
СуммаДоставки для документа «Реализация товаров и услуг». Через полгода фирма «1С» выпускает обновление, где в этот же документ добавлен типовой реквизит с точно таким же именем СуммаДоставки. При попытке применить расширение к новой версии конфигурации возникнет критический конфликт имен, который может заблокировать работу базы.Разберем подробнее, почему Тестирование и исправление может удалять данные. Если в расширении вы добавляете новый тип данных в реквизит основной конфигурации (например, расширяете состав типов для поля «ДокументОснование»), платформа создает сложные связи. Если в момент запуска ТиИ расширение не прошло проверку применимости или было временно отключено, система воспримет ссылки на объекты расширения как «битые» (Object not found). При включенной опции «Очищать ссылки» все накопленные данные в этих полях будут безвозвратно удалены.
Посмотрим на пример работы с планами обмена. Если вы добавили новый справочник в расширение, его крайне сложно включить в типовые планы обмена для синхронизации, например, между «1С:ERP» и «1С:Бухгалтерией». Типовые правила обмена и механизмы регистрации изменений часто не «видят» объекты расширений «из коробки», что требует написания сложного программного кода в обход стандартных механизмов.
Проанализируем, как использование данных в расширениях влияет на работу системы в целом:
Выясним, какой стратегии лучше придерживаться современному разработчику. Мы рекомендуем разделять все вносимые изменения на две категории по степени критичности:
К этой категории относятся данные, потеря которых не является критичной для бизнеса, или те, что носят временный характер. Их можно добавлять через расширения:
Эти данные настоятельно рекомендуется добавлять только в основную конфигурацию, даже если это потребует снятия базы с полной поддержки (с сохранением поддержки с возможностью редактирования):
Подводя итог, можно сказать: принцип «Новые данные добавляем в конфигурацию, всё остальное — через расширение» остается актуальным даже для последних версий платформы 8.3.18–8.3.25. Расширения идеально подходят для изменения алгоритмов (процедур и функций) и кастомизации интерфейса, но пока не являются на 100% надежным хранилищем для критически важной информации.
Совместная работа над архитектурой системы требует взвешенного подхода. Помните, что минутная выгода от «чистой» конфигурации при обновлении может обернуться часами восстановления данных после неудачного ТиИ или конфликта имен в новом релизе. Рассмотрим каждый случай индивидуально и выберем наиболее безопасный путь для стабильной работы вашей системы 1С.