Files
ps-nastroyki/docs/plans/План_выноса_ПС_настроек_в_расширение.md
Профи-Софт 3dc3db2058 v3.0.0.1: Универсальное хранение настроек - первая сборка расширения
- Регистр ПС_Настройки с составным типом (10 корневых узлов ссылочных типов)
- ПВХ ПС_ВидыНастроек
- 3 роли: Чтение, Просмотр, Полный доступ
- Модуль ПС_РаботаСНастройками
- 3 формы
- Совместимость: Version8_3_27
- Логотип: LogoPS.png
- Автор: 1С:Франчайзи ООО Профи-Софт (42575-13)
- Соавтор: AI-ассистент MiMoCode
2026-07-16 05:51:01 +00:00

29 KiB
Raw Permalink Blame History

План выноса контекста «Настройки» в отдельное расширение

Дата: 15 июля 2026 г.
Версия документа: 2.0
Конфигурация: БухгалтерияПредприятияКОРП 3.0.199.13
Целевая совместимость: Version8_5_1
Фокус: контекст «Настройки» (ПС_Настройки + ПС_ВидыНастроек)


1. Резюме

Доработанная конфигурация БП КОРП содержит систему «ПС_Настройки» — механизм хранения пользовательских настроек через регистр сведений ПС_Настройки и план видов характеристик ПС_ВидыНастроек.

Цель пилотной задачи: вынести контекст «Настройки» в отдельное расширение (CFE), решить проблему типа AnyIBRef в ресурсе ЗначениеНастройки заменой на составной тип с корневыми узлами ссылочных типов дерева метаданных.


2. Инвентаризация кастомных объектов

2.1. Полный перечень объектов метаданных с префиксом ПС_

Тип объекта Количество Объекты
Регистры сведений 1 ПС_Настройки
Планы видов характеристик 1 ПС_ВидыНастроек
Справочники 19 ПС_ВидыИзмененияПланируемыхДействий, ПС_ВидыКартриджей, ПС_ВидыОбъектовQRКодирования, ПС_ВидыОтменыПланируемыхДействий, ПС_ВидыПланирумыхДействий, ПС_ВидыРабот, ПС_ВидыРасходныхМатериаловДляВидовРабот, ПС_ВидыТехники, ПС_ВидыТехническихЗаданий, ПС_Картриджи, ПС_МоделиКартриджей, ПС_МоделиТехники, ПС_ПланируемыеДействия, ПС_РасходныеМатериалы, ПС_РолиПользователей, ПС_Техника, ПС_ТехническиеЗадания, ПС_ФирмыПроизводителиТехники, ТарифныеПланы*
Документы 22 ПС_ВозвратКартриджей, ПС_ВходящийДокумент, ПС_ГрупповоеЗакрытиеМесяца, ПС_ДоговорОбслуживания, ПС_ЗагрузкаДанныхИз1СКоннект, ПС_ЗакрытиеМесяцаОбслуживанияПоКонтрагенту, ПС_ЗакрытиеМесяцаОбслуживанияПоСотруднику, ПС_ИзменениеПланируемыхДействий, ПС_ИнвентаризацияРасходныхМатериалов, ПС_ИсходящийДокумент, ПС_НарядНаЗаправкуКартриджа, ПС_НарядНаОбслуживаниеЗаказчика, ПС_НарядНаРаботыПоТехнике, ПС_НачальнаяЗадолженностьКонтрагентовПоОбслуживанию, ПС_ОтменаПланируемыхДействий, ПС_ОтчетОбУдаленнойРаботеСЗаказчиком, ПС_ПоступлениеКартриджей, ПС_ПрекращениеДействияДоговораОбслуживания, ПС_ПриказНаУтверждениеСтавокСотрудникам, ПС_ПриказНаУтверждениеТарифногоПлана, ПС_ПриказОНазначенииОтветственных, ПС_РегистрацияПланируемыхДействий
Общие модули 11 ПС_РаботаСQRКодами, ПС_РаботаСДаннымиНарядовКлиент, ПС_РаботаСДаннымиНарядовСервер, ПС_РаботаСНастройками, ПС_РаботаСРолямиПользователей, ПС_РаботаСоСканеромШККлиент, ПС_РаботаСоСканеромШКСервер, ПС_РегламентПоДокументам, ПС_РегламентПоДокументамКлиент, ПС_ЦенообразованиеКлиент, ПС_ЦенообразованиеСервер
Общие формы 5 ПС_Планировщик, ПС_СозданиеНовогоФизическогоЛица, ПС_ФормаВыбораДляПриказаНаУстановкуЦенРаботПоКартриджу, ПС_ФормаНачисленийИОплатПоДоговору, ПС_ФормаОплатПоСчету
Обработки 2 ПС_ГрупповоеПланированиеДействий, ПС_НаполнениеСведенийОбОбъектахQRКодирования
Итого объектов 61

*ТарифныеПланы — справочник без префикса ПС_, но относится к бизнес-домену «Обслуживание».

2.2. Модифицированные типовые объекты (ссылки на ПС_ из типового кода)

Тип объекта Объекты с изменениями Суть изменений
Общие модули ЗаполнениеБухгалтерскойОтчетностиИтоги, ЗаполнениеБухгалтерскойОтчетностиПереопределяемый, УчетРасходовУменьшающихОтдельныеНалоги, УчетУСН, УчетСтраховыхВзносов, МобильнаяБухгалтерия, УчетДоходовИРасходовПредпринимателя, РасчетыСБюджетом, ПлатежиВБюджетКлиентСерверПереопределяемый, УчетСтраховыхВзносовИП Добавлены вызовы ПС_-модулей или обращения к ПС_-объектам
Общие формы ВыборФайловСведенийФизическихЛиц, ЗагрузкаФайловОтчета Модуль формы содержит обращения к ПС_-объектам
Справочники КонтрагентыПрисоединенныеФайлы Добавлен в доработанной конфигурации (не ПС_-префикс)

3. Архитектурный анализ (DDD)

3.1. Выделение bounded context

Система «ПС_Настройки» — это service-domain (домен обслуживания техники и картриджей), изолированный от типовой бухгалтерской логики. Ядро домена:

  • Контекст «Настройки»: ПС_Настройки (регистр) + ПС_ВидыНастроек (ПВХ) — универсальное хранилище пар ключ-значение
  • Контекст «Обслуживание»: ДоговорыОбслуживания, Наряды, Техника, Картриджи, РасходныеМатериалы
  • Контекст «Планирование»: ПланируемыеДействия, ТехническиеЗадания
  • Контекст «Ценообразование»: ТарифныеПланы, Ставки, Приказы

3.2. Модель ролей доступа к настройкам

Текущее состояние: одна роль ПС_ЧтениеНастроек — программный Read+View на все объекты настроек.

Целевое состояние: три роли в расширении:

Роль Назначение Права на ПС_Настройки Права на ПС_ВидыНастроек Пример использования
ПС_ЧтениеНастроек Программные вызовы (модули, обработки) Read (без View) Read (без View) Модуль ПС_РаботаСНастройками читает значение настройки
ПС_ПросмотрНастроек Интерактивный просмотр (список, форма) Read + View Read + View Пользователь открывает форму списка настроек
ПС_ПолныйДоступКНастройкам Полный доступ (создание, изменение, удаление) Read + View + Insert + Update + Delete Read + View + Insert + Update + Delete Администратор управляет настройками через форму

Иерархия: ПС_ПолныйДоступКНастройкам ⊃ ПС_ПросмотрНастроек ⊃ ПС_ЧтениеНастроек

Реализация:

  • В XML расширения создаются три объекта <Role> с уникальными UUID
  • Каждая роль содержит <Rights> для InformationRegister.ПС_Настройки и ChartOfCharacteristicTypes.ПС_ВидыНастроек
  • Дополнительно каждая роль наследует базовые права конфигурации (ThinClient, WebClient, DataAdministration и т.д.)

3.3. Зависимости от типовой конфигурации

ПС_-объекты ссылаются на типовые объекты:

  • CatalogRef.Контрагенты, CatalogRef.ДоговорыКонтрагентов
  • CatalogRef.Сотрудники, CatalogRef.ФизическиеЛица
  • CatalogRef.Организации, CatalogRef.Пользователи
  • CatalogRef.Номенклатура, CatalogRef.Склады
  • CatalogRef.СтатьиЗатрат, CatalogRef.НоменклатурныеГруппы

Эти ссылки допустимы в расширениях через заимствование (borrow).

3.3. Типы данных в ресурсе ПС_Настройки.ЗначениеНастройки

Текущий состав типа ресурса:

  • xs:boolean
  • xs:string (длина 250, переменная)
  • xs:dateTime
  • xs:decimal (10 знаков, 0 десятичных)
  • cfg:AnyIBRef ← проблемный для расширений

Решение: заменить cfg:AnyIBRef на составной тип, содержащий все корневые узлы ссылочных типов дерева метаданных 1С:

<!-- Простые типы (оставляем как есть) -->
<v8:Type>xs:boolean</v8:Type>
<v8:Type>xs:string</v8:Type>
<v8:Type>xs:dateTime</v8:Type>
<v8:Type>xs:decimal</v8:Type>

<!-- Ссылочные типы — корневые узлы (вместо AnyIBRef) -->
<v8:Type>cfg:CatalogRef.Ссылка</v8:Type>
<v8:Type>cfg:DocumentRef.Ссылка</v8:Type>
<v8:Type>cfg:ChartOfCharacteristicTypesRef.Ссылка</v8:Type>
<v8:Type>cfg:ChartOfAccountsRef.Ссылка</v8:Type>
<v8:Type>cfg:ChartOfCalculationTypesRef.Ссылка</v8:Type>
<v8:Type>cfg:EnumRef.Ссылка</v8:Type>
<v8:Type>cfg:ExchangePlanRef.Ссылка</v8:Type>
<v8:Type>cfg:BusinessProcessRef.Ссылка</v8:Type>
<v8:Type>cfg:TaskRef.Ссылка</v8:Type>

Примечание: Точный список корневых узлов определяется платформой. В XML-выгрузке они представляются как СправочникСсылка, ДокументСсылка и т.д. Конкретные имена могут отличаться в зависимости от версии платформы и формата выгрузки.


4. План реализации (контекст «Настройки»)

Фаза 1: Подготовка и анализ (1-2 дня)

# Задача Результат
1.1 Определить список корневых узлов ссылочных типов в XML-выгрузке (СправочникСсылка, ДокументСсылка и т.д.) Список типов для составного типа
1.2 Согласовать формулу расчёта ЗначениеНастройки в расширении (составной тип vs маппинг) Решение по архитектуре типа
1.3 Проверить, что ПС_ВидыНастроек не содержит ссылок на ПС_Настройки (односторонняя зависимость) Подтверждение изоляции

Фаза 2: Создание расширения (1-2 дня)

# Задача Результат
2.1 Создать пустое расширение через ibcmd CFE骨架
2.2 Завести ПС_ВидыНастроек (ПВХ) в расширение с заимствованием типовых справочников из Type ПВХ в расширении
2.3 Завести ПС_Настройки (регистр сведений) в расширение Регистр в расширении
2.4 Заменить тип ресурса ЗначениеНастройки: убрать cfg:AnyIBRef, добавить составной тип с корневыми узлами ссылочных типов Обновлённый XML ресурса
2.5 Создать роль ПС_ЧтениеНастроек (Read на ПС_Настройки + ПС_ВидыНастроек) Роль для программных вызовов
2.6 Создать роль ПС_ПросмотрНастроек (Read+View на ПС_Настройки + ПС_ВидыНастроек) Роль для интерактивного просмотра
2.7 Создать роль ПС_ПолныйДоступКНастройкам (Read+View+Insert+Update+Delete) Роль для администратора
2.8 Перенести общий модуль ПС_РаботаСНастройками Модуль в расширении
2.9 Перенести форму ФормаСписка ПС_Настройки Форма в расширении
2.10 Перенести формы ФормаРедактированияНастроек и ФормаСписка ПС_ВидыНастроек Формы в расширении

Фаза 3: Сборка и первичное тестирование (1 день)

# Задача Результат
3.1 Собрать .cfe через ibcmd Файл расширения
3.2 Загрузить расширение в тестовую ИБ (поверх основной конфигурации, ДО удаления старых объектов) Расширение загружено
3.3 Проверить: сохранение настройки с простым типом (boolean, string, decimal, dateTime) Простые типы работают
3.4 Проверить: сохранение настройки со ссылочным типом (CatalogRef, DocumentRef и др.) Ссылочные типы работают

Фаза 4: Миграция данных и удаление инфраструктуры из основной конфигурации (1-2 дня)

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

# Задача Результат
4.1 Создать резервную копию ИБ (выгрузка .dt или файловой копии) Бэкап перед миграцией
4.2 Подключить расширение к рабочей ИБ (не к тестовой!) Расширение активно в рабочей базе
4.3 Проверить чтение данных: убедиться, что расширение корректно читает данные из регистра ПС_Настройки, который пока ещё находится в основной конфигурации Чтение работает
4.4 Экспорт данных настроек — выгрузить все записи регистра ПС_Настройки и предопределённые элементы ПС_ВидыНастроек во временное хранилище (XML/JSON/temp-таблица) Бэкап данных настроек
4.5 Удалить инфраструктуру настроек из основной конфигурации (пошагово):
4.5.1 Удалить регистр сведений ПС_Настройки из основной CF Регистр удалён
4.5.2 Удалить план видов характеристик ПС_ВидыНастроек из основной CF ПВХ удалён
4.5.3 Удалить роль ПС_ЧтениеНастроек из основной CF Роль удалена
4.5.4 Удалить общий модуль ПС_РаботаСНастройками из основной CF Модуль удалён
4.5.5 Удалить формы ФормаСписка (ПС_Настройки) и ФормаРедактированияНастроек, ФормаСписка (ПС_ВидыНастроек) из основной CF Формы удалены
4.5.6 Проверить, что нет ссылок на удалённые объекты из других ПС_-объектов (если остаются в CF) Нет сломанных ссылок
4.6 Перезаписать данные в новый регистр (теперь уже из расширения) — импортировать данные, сохранённые на шаге 4.4 Данные мигрированы
4.7 Проверить целостность данных: убедиться, что все настройки доступны через расширение Данные на месте
4.8 Проверить чтение/запись настроек через расширение (не через основную CF) Расширение работает автономно

Фаза 5: Финальное тестирование (0.5 дня)

# Задача Результат
5.1 Проверить: основная конфигурация без расширения работает штатно (нет ссылок на удалённые объекты) Типовая не сломана
5.2 Проверить: расширение загружается на чистую тестовую ИБ (без предварительных данных) Чистая установка работает
5.3 Проверить: миграция данных на чистой ИБ (шаг 4.6 на другой базе) Процедура миграции воспроизводима

Фаза 6: Документирование (0.5 дня)

# Задача Результат
6.1 Описать структуру расширения и состав типа ЗначениеНастройки README.md расширения
6.2 Описать процедуру миграции данных (шаги 4.1–4.8) Руководство по миграции
6.3 Зафиксировать версии: конфигурация 3.0.199.13, расширение v1.0 Метаданные

5. Оценка трудозатрат

Фаза Дни Примечание
Фаза 1: Подготовка 1-2 Определение типа + анализ зависимостей
Фаза 2: Расширение 1-2 3 объекта + модуль + формы
Фаза 3: Сборка + первичное тестирование 1 Проверка на ИБ без удаления
Фаза 4: Миграция данных + удаление из CF 1-2 Критичная — порядок шагов
Фаза 5: Финальное тестирование 0.5 Чистая установка + миграция
Фаза 6: Документация 0.5 README + руководство по миграции
Итого 4-7

6. Риски и митигация

Риск Вероятность Влияние Меры
Составной тип ЗначениеНастройки не покрывает все нужные ссылочные типы Средняя Среднее Аудит всех обращений к ресурсу из ПС_-модулей
Потеря данных настроек при миграции Низкая Высокое Бэкап (шаг 4.1) + верификация после импорта (шаг 4.7)
Сломанные ссылки после удаления объектов из CF Средняя Среднее Проверка ссылок перед удалением (шаг 4.5.5), пошаговое удаление
Расширение не видит данные, записанные через основную CF Средняя Среднее Порядок: сначала подключение расширения → проверка чтения → удаление из CF
Невоспроизводимость процедуры миграции Низкая Среднее Документирование (шаг 6.2) + тест на чистой ИБ (шаг 5.3)

7. Детали замены типа ресурса

7.1. Текущее состояние (XML-выгрузка)

<!-- InformationRegisters/ПС_Настройки.xml → Resource.ЗначениеНастройки -->
<Type>
    <v8:Type>xs:boolean</v8:Type>
    <v8:Type>xs:string</v8:Type>
    <v8:Type>xs:dateTime</v8:Type>
    <v8:Type>xs:decimal</v8:Type>
    <v8:TypeSet>cfg:AnyIBRef</v8:TypeSet>  <!-- ← проблемный -->
    ...
</Type>

7.2. Целевое состояние (расширение)

Заменяем cfg:AnyIBRef на перечисление корневых узлов ссылочных типов дерева метаданных:

<Type>
    <!-- Простые типы (без изменений) -->
    <v8:Type>xs:boolean</v8:Type>
    <v8:Type>xs:string</v8:Type>
    <v8:Type>xs:dateTime</v8:Type>
    <v8:Type>xs:decimal</v8:Type>

    <!-- Ссылочные типы — корневые узлы (вместо AnyIBRef) -->
    <v8:Type>cfg:CatalogRef.Ссылка</v8:Type>              <!-- СправочникСсылка -->
    <v8:Type>cfg:DocumentRef.Ссылка</v8:Type>              <!-- ДокументСсылка -->
    <v8:Type>cfg:ChartOfCharacteristicTypesRef.Ссылка</v8:Type>  <!-- ПланВидовХарактеристикСсылка -->
    <v8:Type>cfg:ChartOfAccountsRef.Ссылка</v8:Type>       <!-- ПланСчетовСсылка -->
    <v8:Type>cfg:ChartOfCalculationTypesRef.Ссылка</v8:Type> <!-- ПланВидовРасчетаСсылка -->
    <v8:Type>cfg:EnumRef.Ссылка</v8:Type>                  <!-- ПеречислениеСсылка -->
    <v8:Type>cfg:ExchangePlanRef.Ссылка</v8:Type>          <!-- ПланОбменаСсылка -->
    <v8:Type>cfg:BusinessProcessRef.Ссылка</v8:Type>       <!-- БизнесПроцессСсылка -->
    <v8:Type>cfg:TaskRef.Ссылка</v8:Type>                  <!-- ЗадачаСсылка -->
    <v8:Type>cfg:AccumulationRegisterRecordKey.Ссылка</v8:Type> <!-- (опционально) -->
    <v8:Type>cfg:InformationRegisterRecordKey.Ссылка</v8:Type>  <!-- (опционально) -->
    ...
</Type>

7.3. Маппинг корневых узлов

Корневой узел дерева метаданных XML-тип в расширении Пример использования
СправочникСсылка CatalogRef.Ссылка Ссылки на Контрагентов, Договоры, Сотрудников
ДокументСсылка DocumentRef.Ссылка Ссылки на документы учёта
ПланВидовХарактеристикСсылка ChartOfCharacteristicTypesRef.Ссылка Ссылки на ПВХ (в т.ч. ПС_ВидыНастроек)
ПланСчетовСсылка ChartOfAccountsRef.Ссылка Ссылки на план счетов
ПланВидовРасчетаСсылка ChartOfCalculationTypesRef.Ссылка Ссылки на планы видов расчёта
ПеречислениеСсылка EnumRef.Ссылка Ссылки на перечисления
ПланОбменаСсылка ExchangePlanRef.Ссылка Ссылки на планы обмена
БизнесПроцессСсылка BusinessProcessRef.Ссылка Ссылки на бизнес-процессы
ЗадачаСсылка TaskRef.Ссылка Ссылки на задачи

8. Чек-лист готовности

Расширение

  • Определён полный список корневых узлов ссылочных типов для составного типа
  • Тип AnyIBRef заменён на составной тип в ПС_Настройки.ЗначениеНастройки
  • Создана роль ПС_ЧтениеНастроек (Read на регистр + ПВХ)
  • Создана роль ПС_ПросмотрНастроек (Read+View на регистр + ПВХ)
  • Создана роль ПС_ПолныйДоступКНастройкам (полные права)
  • Расширение содержит: ПС_ВидыНастроек (ПВХ) + ПС_Настройки (регистр) + 3 роли + ПС_РаботаСНастройками (модуль) + 3 формы
  • Расширение собирается в .cfe без ошибок
  • Расширение загружается на тестовую ИБ
  • Сохранение/чтение настроек работает для простых типов
  • Сохранение/чтение настроек работает для ссылочных типов
  • Роли корректно ограничивают доступ (тест через разные профили)

Миграция данных

  • Бэкап ИБ создан перед миграцией
  • Расширение подключено к рабочей ИБ (поверх основной CF)
  • Расширение корректно читает данные из старого регистра (в основной CF)
  • Экспорт данных настроек выполнен (XML/JSON)
  • Инфраструктура настроек удалена из основной CF (ПС_Настройки, ПС_ВидыНастроек, ПС_РаботаСНастройками, 3 формы)
  • Данные импортированы в регистр расширения
  • Целостность данных проверена (все настройки на месте)
  • Чтение/запись через расширение работает автономно

Валидация

  • Основная CF без расширения работает штатно
  • Расширение загружается на чистую ИБ (чистая установка)
  • Процедура миграции воспроизводима на другой ИБ

Документ подготовлен на основе анализа XML-выгрузок конфигураций:

  • Доработанная: /netfolder-43/БП_КОРП-ПС/CF-XML/
  • Типовая: /netfolder-43/БП_КОРП-ПС/PS-CF-XML/