- Регистр ПС_Настройки с составным типом (10 корневых узлов ссылочных типов) - ПВХ ПС_ВидыНастроек - 3 роли: Чтение, Просмотр, Полный доступ - Модуль ПС_РаботаСНастройками - 3 формы - Совместимость: Version8_3_27 - Логотип: LogoPS.png - Автор: 1С:Франчайзи ООО Профи-Софт (42575-13) - Соавтор: AI-ассистент MiMoCode
29 KiB
План выноса контекста «Настройки» в отдельное расширение
Дата: 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:booleanxs:string(длина 250, переменная)xs:dateTimexs: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/