# План выноса контекста «Настройки» в отдельное расширение **Дата:** 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 расширения создаются три объекта `` с уникальными UUID - Каждая роль содержит `` для `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С: ```xml xs:boolean xs:string xs:dateTime xs:decimal cfg:CatalogRef.Ссылка cfg:DocumentRef.Ссылка cfg:ChartOfCharacteristicTypesRef.Ссылка cfg:ChartOfAccountsRef.Ссылка cfg:ChartOfCalculationTypesRef.Ссылка cfg:EnumRef.Ссылка cfg:ExchangePlanRef.Ссылка cfg:BusinessProcessRef.Ссылка cfg:TaskRef.Ссылка ``` > **Примечание:** Точный список корневых узлов определяется платформой. В 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-выгрузка) ```xml xs:boolean xs:string xs:dateTime xs:decimal cfg:AnyIBRef ... ``` ### 7.2. Целевое состояние (расширение) Заменяем `cfg:AnyIBRef` на перечисление корневых узлов ссылочных типов дерева метаданных: ```xml xs:boolean xs:string xs:dateTime xs:decimal cfg:CatalogRef.Ссылка cfg:DocumentRef.Ссылка cfg:ChartOfCharacteristicTypesRef.Ссылка cfg:ChartOfAccountsRef.Ссылка cfg:ChartOfCalculationTypesRef.Ссылка cfg:EnumRef.Ссылка cfg:ExchangePlanRef.Ссылка cfg:BusinessProcessRef.Ссылка cfg:TaskRef.Ссылка cfg:AccumulationRegisterRecordKey.Ссылка cfg:InformationRegisterRecordKey.Ссылка ... ``` ### 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/*