Часто перед разработчиком 1С встает задача расширить функциональность типовой конфигурации. Одна из таких задач — необходимость хранить в стандартном регистре сведений информацию по новому, добавленному в систему документу. Классический пример — регистр СтатусыДокументов, где измерение Документ имеет составной тип данных. Возникает вопрос: как лучше добавить наш новый тип документа в этот регистр, чтобы в будущем не столкнуться с проблемами при обновлении конфигурации?
Проанализируем три основных подхода к решению этой задачи, разберем их плюсы, минусы и последствия для системы.
Это самый правильный, безопасный и наименее трудозатратный способ. Суть его заключается в том, чтобы просто добавить нужный нам тип документа в список типов существующего измерения Документ.
Почему этот вариант лучший?
СрезПоследних, продолжат работать корректно без каких-либо доработок. Логика получения данных не меняется.Что нужно сделать?
Вам потребуется внести изменение в сам объект конфигурации (регистр сведений), расширив составной тип данных для измерения. После этого останется только доработать те участки кода, где происходит запись в этот регистр, чтобы обеспечить запись данных для вашего нового документа. Все механизмы чтения данных, отчеты и обработки, которые уже работают с этим регистром, "подхватят" ваши новые данные автоматически.
На первый взгляд, этот вариант может показаться логичным: для нашего документа — наше собственное поле. Однако на практике это худший из возможных подходов, который создает массу скрытых проблем.
Последствия такого решения:
Документ, а ваше новое — пустое, и наоборот. Фактически, вы получаете два разных набора данных в одной таблице, что является грубой архитектурной ошибкой.СрезПоследних. Виртуальная таблица среза напрямую зависит от набора измерений. Старые запросы к СрезПоследних, не учитывающие новое измерение, будут работать неправильно, так как срез будет формироваться по новой, измененной комбинации полей.Вывод по этому варианту: никогда так не делайте. Этот подход ломает логику работы регистра и создает гораздо больше проблем, чем решает.
Этот вариант предполагает, что мы вообще не трогаем типовой регистр, а создаем свой собственный, например, СтатусыДокументов_Наш, со своей структурой, где будем хранить статусы только для нашего нового документа.
Преимущества:
Недостатки:
ОБЪЕДИНИТЬ ВСЕ для объединения данных из двух регистров: типового и вашего. Это усложняет код и может сказаться на производительности.Этот подход имеет право на жизнь, но его стоит применять только в том случае, если логика хранения и обработки статусов для вашего нового документа кардинально отличается от логики для типовых документов, и реализовать ее в рамках существующего регистра невозможно.
Проанализировав все варианты, приходим к однозначному выводу.
Самым правильным, эффективным и профессиональным решением является расширение составного типа существующего измерения. Этот метод гармонично вписывается в типовую архитектуру, требует минимальных доработок и обеспечивает максимальную простоту дальнейшей поддержки и обновления конфигурации.