commit 3dc3db205848e01b3e9d4bc04340c97b40602376 Author: Профи-Софт Date: Thu Jul 16 05:51:01 2026 +0000 v3.0.0.1: Универсальное хранение настроек - первая сборка расширения - Регистр ПС_Настройки с составным типом (10 корневых узлов ссылочных типов) - ПВХ ПС_ВидыНастроек - 3 роли: Чтение, Просмотр, Полный доступ - Модуль ПС_РаботаСНастройками - 3 формы - Совместимость: Version8_3_27 - Логотип: LogoPS.png - Автор: 1С:Франчайзи ООО Профи-Софт (42575-13) - Соавтор: AI-ассистент MiMoCode diff --git a/PS_Nastrojki.cfe b/PS_Nastrojki.cfe new file mode 100755 index 0000000..a64595e Binary files /dev/null and b/PS_Nastrojki.cfe differ diff --git a/docs/plans/План_выноса_ПС_настроек_в_расширение.md b/docs/plans/План_выноса_ПС_настроек_в_расширение.md new file mode 100644 index 0000000..5b79b0f --- /dev/null +++ b/docs/plans/План_выноса_ПС_настроек_в_расширение.md @@ -0,0 +1,314 @@ +# План выноса контекста «Настройки» в отдельное расширение + +**Дата:** 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/* diff --git a/docs/tasks/Задание на вынос настроек в отдельное расширение.md b/docs/tasks/Задание на вынос настроек в отдельное расширение.md new file mode 100644 index 0000000..4004cff --- /dev/null +++ b/docs/tasks/Задание на вынос настроек в отдельное расширение.md @@ -0,0 +1,22 @@ +# Задание на планирование выноса доработки по настройкам в отдельное расширение + +**Дата:** 15 июля 2026 г. +**Версия документа:** 1.0 + +--- + +## 1. Краткое описание задания + В организации используется доработанная конфигурация 1С БП КОРП. + В том числе разработана система хранения настроек в регистре сведений "ПС_Настройки". + Необходимо спланировать перенос места хранения (регистры, Планы видов характеристик, специальные) и всю логику по работе с настройками вынести в отдельное расширение. + Из основной конфигурации всё, что перенесено необходимо убрать. + При проектировании руководствоваться идеологией DDD. + +## 2. Файлы для изучения + + - Выгрузка доработанной конфигурации (путь: \netfolder-43\БП_КОРП-ПС\PS-CF-XML) + - Выгрузка типовой конфигурации (путь: \netfolder-43\БП_КОРП-ПС\CF-XML) + +## 3. Ожидаемый результат + + Документ с детальным планом по решению задачи. (путь: \netfolder-43\БП_КОРП-ПС\ПС_Настройки\docs\plans) diff --git a/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаРедактированияНастроек/Form.xml b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаРедактированияНастроек/Form.xml new file mode 100755 index 0000000..606c6df --- /dev/null +++ b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаРедактированияНастроек/Form.xml @@ -0,0 +1,93 @@ + +
+ LockOwnerWindow + None + Items + + + ПриСозданииНаСервере + + + + Объект.Code + false + EnterOnInput + + + + + Объект.Parent + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа настроек</v8:content> + </v8:item> + + EnterOnInput + + + + + Объект.Description + EnterOnInput + style:FieldSelectionBackColor + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Для разработчиков</v8:content> + </v8:item> + + + + ru + Группа для разработчиков + + + Vertical + Collapsible + true + StrongSeparation + + + + Объект.Имя + + + + + Объект.ValueType + + + + + + + ТекущееЗначение + style:SpecialTextColor + + + + + + + + cfg:ChartOfCharacteristicTypesObject.ПС_ВидыНастроек + + true + true + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Текущее значение</v8:content> + </v8:item> + + + + + \ No newline at end of file diff --git a/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаРедактированияНастроек/Module.bsl b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаРедактированияНастроек/Module.bsl new file mode 100755 index 0000000..7c7ead4 --- /dev/null +++ b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаРедактированияНастроек/Module.bsl @@ -0,0 +1,5 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ТекущееЗначение = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(КонецДня(ТекущаяДата()),Новый Структура("ВидНастройки",Объект.Ссылка)).ЗначениеНастройки; +КонецПроцедуры diff --git a/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаСписка/Form.xml b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаСписка/Form.xml new file mode 100755 index 0000000..24dc8a0 --- /dev/null +++ b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаСписка/Form.xml @@ -0,0 +1,186 @@ + +
+ + + ПриСозданииНаСервере + + + + ПоказыватьНеиспользуемыеНастройки + Right + Auto + + + + ПоказыватьНеиспользуемыеНастройкиПриИзменении + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа пользовательских настроек</v8:content> + </v8:item> + + false + Vertical + Usual + false + + + + None + true + ExpandTopLevel + true + true + Список + Список.DefaultPicture + false + 60 + + Custom + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Items + false + + true + false + Auto + СписокКомпоновщикНастроекПользовательскиеНастройки + true + + + false + + + + + Список + SearchStringRepresentation + + + + + + + Список + ViewStatusRepresentation + + + + + + + Список + SearchControl + + + + + + + Список.Код + false + + + + + Список.Наименование + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Настройка</v8:content> + </v8:item> + + + + + + Список.ЗначениеНастройки + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Значение</v8:content> + </v8:item> + + + + + + Список.ТипЗначения + true + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Тип</v8:content> + </v8:item> + + + + + +
+
+ + + + cfg:DynamicList + + true + + true + true + ВЫБРАТЬ + ПланВидовХарактеристикПС_ВидыНастроек.Ссылка КАК Ссылка, + ПланВидовХарактеристикПС_ВидыНастроек.ПометкаУдаления КАК ПометкаУдаления, + ПланВидовХарактеристикПС_ВидыНастроек.Родитель КАК Родитель, + ПланВидовХарактеристикПС_ВидыНастроек.ЭтоГруппа КАК ЭтоГруппа, + ПланВидовХарактеристикПС_ВидыНастроек.Код КАК Код, + ПланВидовХарактеристикПС_ВидыНастроек.Наименование КАК Наименование, + ПланВидовХарактеристикПС_ВидыНастроек.ТипЗначения КАК ТипЗначения, + ПланВидовХарактеристикПС_ВидыНастроек.Предопределенный КАК Предопределенный, + ПланВидовХарактеристикПС_ВидыНастроек.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных, + ПС_НастройкиСрезПоследних.ЗначениеНастройки КАК ЗначениеНастройки +ИЗ + ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПланВидовХарактеристикПС_ВидыНастроек + ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПС_Настройки.СрезПоследних КАК ПС_НастройкиСрезПоследних + ПО ПС_НастройкиСрезПоследних.ВидНастройки = ПланВидовХарактеристикПС_ВидыНастроек.Ссылка +ГДЕ + (НЕ ПланВидовХарактеристикПС_ВидыНастроек.ПометкаУдаления + ИЛИ ПланВидовХарактеристикПС_ВидыНастроек.ПометкаУдаления + И &ПоказыватьНеиспользуемыеНастройки) + ChartOfCharacteristicTypes.ПС_ВидыНастроек + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Показывать неиспользуемые настройки</v8:content> + </v8:item> + + + xs:boolean + + + + \ No newline at end of file diff --git a/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаСписка/Module.bsl b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаСписка/Module.bsl new file mode 100755 index 0000000..bde5864 --- /dev/null +++ b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/Ext/Form/ФормаСписка/Module.bsl @@ -0,0 +1,15 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + ОбновитьПараметрыСписка(); +КонецПроцедуры + +&НаСервере +Процедура ОбновитьПараметрыСписка() + Список.Параметры.УстановитьЗначениеПараметра("ПоказыватьНеиспользуемыеНастройки",ПоказыватьНеиспользуемыеНастройки); +КонецПроцедуры + +&НаКлиенте +Процедура ПоказыватьНеиспользуемыеНастройкиПриИзменении(Элемент) + ОбновитьПараметрыСписка(); +КонецПроцедуры diff --git a/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.xml b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.xml new file mode 100755 index 0000000..2c331a2 --- /dev/null +++ b/extension/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.xml @@ -0,0 +1,187 @@ + + + + + + 8d5a99cd-d7ca-445d-a8e9-e7fd2ee4eda9 + 5b6c191f-635e-47bf-988d-6b89e02c21df + + + 67eaa487-1ab2-4c5d-9b69-307a0c5807e2 + c0478010-5618-402d-bcc5-3efdf575661d + + + 51e77e14-cd35-4b1c-96f5-2f423fe9205b + af42f2bb-5094-4fb3-a086-8572e9c4c357 + + + a513673c-c4bf-4fc1-9600-7b2b0b721003 + 23416a9b-3280-49f3-a37d-8d656406377f + + + 6856a5fc-5441-43d7-b052-1b37118f639e + 3ee47073-477d-4353-a355-740914fa9603 + + + c8e5c8c4-f917-488b-a662-fd90197bcbda + 0b101c09-1ca3-4f6c-bda0-c14f60f2b0c7 + + + + ПС_ВидыНастроек + + + ru + Виды настроек + + + + true + false + + + cfg:CatalogRef.Склады + cfg:CatalogRef.ПС_ВидыТехники + cfg:CatalogRef.ПС_ТиповыеКонфигурации1СПредприятие + cfg:CatalogRef.ПС_ВидыРасходныхМатериаловДляВидовРабот + cfg:CatalogRef.ТарифныеПланы + cfg:CatalogRef.Сотрудники + cfg:CatalogRef.ПС_Конфигурации1СПредприятиеКонтрагентов + cfg:CatalogRef.ДоговорыКонтрагентов + cfg:CatalogRef.ПС_Техника + cfg:CatalogRef.ПС_РасходныеМатериалы + xs:boolean + cfg:CatalogRef.ПС_ВидыКартриджей + cfg:CatalogRef.КонтактныеЛица + cfg:CatalogRef.НоменклатурныеГруппы + cfg:CatalogRef.ПС_ВидыРабот + xs:string + cfg:CatalogRef.Контрагенты + cfg:CatalogRef.ПС_Картриджи + xs:dateTime + cfg:CatalogRef.ПС_ФирмыПроизводителиПрограммногоОбеспечения + cfg:CatalogRef.ПС_РолиПользователей + xs:decimal + cfg:CatalogRef.ПС_Конфигурации1СПредприятиеОрганизации + cfg:CatalogRef.Пользователи + cfg:CatalogRef.СтатьиЗатрат + cfg:CatalogRef.Организации + cfg:CatalogRef.ПС_МоделиТехники + cfg:CatalogRef.Номенклатура + cfg:CatalogRef.ПС_ФирмыПроизводителиТехники + cfg:CatalogRef.ПС_МоделиКартриджей + cfg:CatalogRef.ФизическиеЛица + + 10 + 0 + Any + + + 250 + Variable + + + Date + + + true + true + 9 + Variable + 100 + WholeCharacteristicKind + true + true + AsDescription + + Auto + InDialog + false + BothWays + + ChartOfCharacteristicTypes.ПС_ВидыНастроек.StandardAttribute.Description + ChartOfCharacteristicTypes.ПС_ВидыНастроек.StandardAttribute.Code + + DontUse + Begin + Directly + DontUse + Auto + ChartOfCharacteristicTypes.ПС_ВидыНастроек.Form.ФормаРедактированияНастроек + + ChartOfCharacteristicTypes.ПС_ВидыНастроек.Form.ФормаСписка + + + + + + + + + + Managed + Use + + + + + ru + Редактирование настроек + + + + + DontUse + false + false + + + + + Имя + + + ru + Наименование для разработчиков + + + + + xs:string + + 50 + Variable + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + Auto + Index + ForItem + Use + Use + + +
ФормаРедактированияНастроек
+
ФормаСписка
+
+
+
\ No newline at end of file diff --git a/extension/src/CommonModules/ПС_РаботаСНастройками/Ext/Module.bsl b/extension/src/CommonModules/ПС_РаботаСНастройками/Ext/Module.bsl new file mode 100755 index 0000000..a0809b3 --- /dev/null +++ b/extension/src/CommonModules/ПС_РаботаСНастройками/Ext/Module.bsl @@ -0,0 +1,551 @@ +Функция ТекущееЗначениеНастройки(Настройка) Экспорт + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("ВидНастройки",Настройка)).ЗначениеНастройки; +КонецФункции // ЗначениеНастройки(Настройка) + +Функция ТекущееЗначениеНастройкиПоИмени(Имя) Экспорт + Настройка = ПланыВидовХарактеристик.ПС_ВидыНастроек.НайтиПоРеквизиту("Имя",Имя); + Если Настройка.Пустая() Тогда + Возврат Неопределено + Иначе + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ТекущаяДата(), Новый Структура("ВидНастройки",Настройка)).ЗначениеНастройки; + КонецЕсли; +КонецФункции // ЗначениеНастройки(Настройка) + +Функция ЗаписатьТекущееЗначениеНастройкиПоИмени(Имя,Значение) Экспорт + РезультатЗаписи = Истина; + Настройка = ПланыВидовХарактеристик.ПС_ВидыНастроек.НайтиПоРеквизиту("Имя",Имя); + Если Настройка.Пустая() Тогда + РезультатЗаписи = Ложь; + Иначе + Попытка + ДанныеНастроек = РегистрыСведений.ПС_Настройки.СоздатьМенеджерЗаписи(); + ДанныеНастроек.ВидНастройки = Настройка; + ДанныеНастроек.Период = ТекущаяДата(); + ДанныеНастроек.ЗначениеНастройки = Значение; + ДанныеНастроек.Записать(); + Исключение + РезультатЗаписи = Ложь; + КонецПопытки; + КонецЕсли; + Возврат РезультатЗаписи; +КонецФункции // ЗначениеНастройки(Настройка) + +Функция ЗначениеНастройкиНаДату(Настройка, Дата) Экспорт + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(Дата, Новый Структура("ВидНастройки",Настройка)).ЗначениеНастройки; +КонецФункции // ЗначениеНастройкиНаДату(Настройка) + +Функция ЗначениеНастройкиПоИмениНаДату(Имя, Дата) Экспорт + Настройка = ПланыВидовХарактеристик.ПС_ВидыНастроек.НайтиПоРеквизиту("Имя",Имя); + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(Дата, Новый Структура("ВидНастройки",Настройка)).ЗначениеНастройки; +КонецФункции // ЗначениеНастройкиНаДату(Настройка) + +Функция ЗаписатьТекущееЗначениеНастройкиПоИмениНаДату(Имя,Значение,Дата) Экспорт + РезультатЗаписи = Истина; + Настройка = ПланыВидовХарактеристик.ПС_ВидыНастроек.НайтиПоРеквизиту("Имя",Имя); + Если Настройка.Пустая() Тогда + РезультатЗаписи = Ложь; + Иначе + Попытка + ДанныеНастроек = РегистрыСведений.ПС_Настройки.СоздатьМенеджерЗаписи(); + ДанныеНастроек.ВидНастройки = Настройка; + ДанныеНастроек.Период = Дата; + ДанныеНастроек.ЗначениеНастройки = Значение; + ДанныеНастроек.Записать(); + Исключение + РезультатЗаписи = Ложь; + КонецПопытки; + КонецЕсли; + Возврат РезультатЗаписи; +КонецФункции // ЗначениеНастройки(Настройка) + +Функция ДатаЗапретаРедактированияДанныхСервиса(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ДатаЗапретаРедактированияДанныхСервиса); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ОрганизацияПоУмолчанию(Дата = Неопределено) + +Функция ДатаВРазрешенномПериодеРедактирования(ПроверяемаяДата) Экспорт + Возврат НачалоДня(ПроверяемаяДата) > НачалоДня(ДатаЗапретаРедактированияДанныхСервиса(ТекущаяДата())); +КонецФункции // ДатаВЗапрещенномПериодеРедактирования() + + +Функция ОсновнаяОрганизация(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ОсновнаяОрганизация); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ОрганизацияПоУмолчанию(Дата = Неопределено) + +Функция ОсновнойСкладРасходныхМатериалов(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.СкладРасходныхМатериалов); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ОрганизацияПоУмолчанию(Дата = Неопределено) + +Функция НоменклатурнаяГруппаДляОбслуживанияПКИОргтехники(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляОбслуживанияПКИОргтехники); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияПКИОргтехники(Дата = Неопределено) + +Функция ВидРаботПоЗаправкеКартриджа(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ВидРаботПоЗаправкеКартриджа); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + +#Область НоменклатурныеГруппыОбслуживанияФизическихЛиц +Функция НоменклатурнаяГруппаДляРаботПоКартриджуФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоКартриджуФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоТехникеФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоТехникеФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоМонтажуЛВСФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоМонтажуЛВСФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоМонтажуСистемыВидеонаблюденияФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоМонтажуСистемыВидеонаблюденияФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоКурсамФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоКурсамФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляВыездныхРаботПо1СФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляВыездныхРаботПо1СФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляВыездныхРаботПоПКиОргтехникеФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляВыездныхРаботПоПКиОргтехникеФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоРазработкеСайтаФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоРазработкеСайтаФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоПрочимРаботамФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоПрочимРаботамФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + +#КонецОбласти + +#Область НоменклатурныеГруппыОбслуживания +Функция НоменклатурнаяГруппаДляРаботПоКартриджу(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоКартриджу); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоТехнике(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоТехнике); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоМонтажуЛВС(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоМонтажуЛВС); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоМонтажуСистемыВидеонаблюдения(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоМонтажуСистемыВидеонаблюдения); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоКурсам(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоКурсам); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляВыездныхРаботПо1С(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляВыездныхРаботПо1С); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляВыездныхРаботПоПКиОргтехнике(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляВыездныхРаботПоПКиОргтехнике); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоРазработкеСайта(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоРазработкеСайта); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция НоменклатурнаяГруппаДляРаботПоПрочимРаботам(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.НоменклатурнаяГруппаДляРаботПоПрочимРаботам); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //НоменклатурнаяГруппаДляОбслуживанияФизическихЛиц(Дата = Неопределено) + +#КонецОбласти + +#Область ТарифныеПланыОбслуживанияФизическихЛиц +Функция ТарифныйПланДляРаботПоКартриджуФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляРаботПоКартриджуФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляРаботПоТехникеФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляРаботПоТехникеФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляРаботПоМонтажуЛВСФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляРаботПоМонтажуЛВСФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляРаботПоМонтажуСистемыВидеонаблюденияФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляРаботПоМонтажуСистемыВидеонаблюденияФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляРаботПоКурсамФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляРаботПоКурсамФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляВыездныхРаботПо1СФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляВыездныхРаботПо1СФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляВыездныхРаботПоПКиОргтехникеФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляВыездныхРаботПоПКиОргтехникеФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляРаботПоРазработкеСайтаФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляРаботПоРазработкеСайтаФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + + +Функция ТарифныйПланДляРаботПоПрочимРаботамФизическихЛиц(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ТарифныйПланДляРаботПоПрочимРаботамФизическихЛиц); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ТарифныйПланДляОбслуживанияФизическихЛиц(Дата = Неопределено) + +#КонецОбласти + +Функция НачалоРабочегоДня(ДатаПолученияНастройки = Неопределено) Экспорт + НастройкаПолученияЧаса = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ЧасНачалаРабочегоДня); + НастройкаПолученияМинуты = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.МинутаНачалаРабочегоДня); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Час = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,НастройкаПолученияЧаса).ЗначениеНастройки; + Если Час = Неопределено Тогда + Час = 0; + КонецЕсли; + Минута = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,НастройкаПолученияМинуты).ЗначениеНастройки; + Если Минута = Неопределено Тогда + Минута = 0; + КонецЕсли; + Возврат Дата(1,1,1,Час,Минута,0); +КонецФункции //НачалоРабочегоДня(ДатаПолученияНастройки = Неопределено) + +Функция ОкончаниеРабочегоДня(ДатаПолученияНастройки = Неопределено) Экспорт + НастройкаПолученияЧаса = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ЧасОкончанияРабочегоДня); + НастройкаПолученияМинуты = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.МинутаОкончанияРабочегоДня); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Час = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,НастройкаПолученияЧаса).ЗначениеНастройки; + Если Час = Неопределено Тогда + Час = 23; + КонецЕсли; + Минута = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,НастройкаПолученияМинуты).ЗначениеНастройки; + Если Минута = Неопределено Тогда + Минута = 59; + КонецЕсли; + Возврат Дата(1,1,1,Час,Минута,0); +КонецФункции //ОкончаниеРабочегоДня(ДатаПолученияНастройки = Неопределено) + +Функция ПрефиксQRКодирования(ДатаПолученияНастройки = Неопределено) Экспорт + НастройкаПолученияПрефикса = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ПрефиксQRКодирования); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Префикс = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,НастройкаПолученияПрефикса).ЗначениеНастройки; + Если Префикс = Неопределено Тогда + Префикс = ""; + КонецЕсли; + Возврат Префикс; +КонецФункции //ПрефиксQRКодирования(ДатаПолученияНастройки = Неопределено) + +Функция КомментироватьСобытия(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.КомментироватьСобытия); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Результат = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; + Если Результат = Неопределено Тогда + Результат = Ложь; + КонецЕсли; + Возврат Результат; +КонецФункции //КомментироватьСобытия(ДатаПолученияНастройки = Неопределено) + +Процедура СообщитьОСобытии(СообщениеОСобытии,Ссылка = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.КомментироватьСобытия); + ДатаПолученияНастройки = ТекущаяДата(); + КомментироватьСобытия = РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; + Если КомментироватьСобытия = Неопределено Тогда + КомментироватьСобытия = Ложь; + КонецЕсли; + Если КомментироватьСобытия Тогда + Сообщение = Новый СообщениеПользователю; + Сообщение.Текст = Строка(СообщениеОСобытии); + Если Ссылка <> Неопределено Тогда + Если ЗначениеЗаполнено(Ссылка) Тогда + Сообщение.КлючДанных = Ссылка; + КонецЕсли; + КонецЕсли; + Сообщение.Сообщить(); + КонецЕсли; + Попытка + ЗаголовокСообщения = "ПС. " + ПараметрыСеанса.ПС_ВерсияРасширения + ". Диагностическое сообщение."; + Исключение + ЗаголовокСообщения = "ПС. Диагностическое сообщение."; + КонецПопытки; + ЗаписьЖурналаРегистрации(ЗаголовокСообщения,,,Ссылка,СообщениеОСобытии); +КонецПроцедуры //СообщитьОСобытии(СообщениеОСобытии) + +Функция НомерМесяца(ПереданныйМесяц) + ВозвращаемыйНомер = 0; + Если ТипЗнч(ПереданныйМесяц) = ТипЗнч(Перечисления.ПС_Месяцы.Январь) Тогда + Если ПереданныйМесяц = Перечисления.ПС_Месяцы.Январь Тогда + ВозвращаемыйНомер = 1; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Февраль Тогда + ВозвращаемыйНомер = 2; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Март Тогда + ВозвращаемыйНомер = 3; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Апрель Тогда + ВозвращаемыйНомер = 4; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Май Тогда + ВозвращаемыйНомер = 5; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Июнь Тогда + ВозвращаемыйНомер = 6; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Июль Тогда + ВозвращаемыйНомер = 7; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Август Тогда + ВозвращаемыйНомер = 8; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Сентябрь Тогда + ВозвращаемыйНомер = 9; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Октябрь Тогда + ВозвращаемыйНомер = 10; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Ноябрь Тогда + ВозвращаемыйНомер = 11; + ИначеЕсли ПереданныйМесяц = Перечисления.ПС_Месяцы.Декабрь Тогда + ВозвращаемыйНомер = 12; + КонецЕсли; + КонецЕсли; + Возврат ВозвращаемыйНомер; +КонецФункции // НомерМесяца() + +Функция ПериодОбслуживаняВСтандартныйПериод(МесяцОбслуживания,ГодОбслуживания) Экспорт + ВозвращаемыйСтандартныйПериод = Новый СтандартныйПериод; + ВозвращаемыйСтандартныйПериод.ДатаНачала = Дата(1,1,1,0,0,0); + ВозвращаемыйСтандартныйПериод.ДатаОкончания = Дата(1,1,1,0,0,0); + НомерМесяцаОбслуживания = НомерМесяца(МесяцОбслуживания); + Если НомерМесяцаОбслуживания > 0 Тогда + Попытка + ВозвращаемыйСтандартныйПериод.ДатаНачала = Дата(ГодОбслуживания,НомерМесяцаОбслуживания,1,0,0,0); + ВозвращаемыйСтандартныйПериод.ДатаОкончания = КонецМесяца(ВозвращаемыйСтандартныйПериод.ДатаНачала); + Исключение + КонецПопытки; + КонецЕсли; + Возврат ВозвращаемыйСтандартныйПериод; +КонецФункции + + +Функция МесяцПоНомеру(ПереданныйНомер) + ВозвращаемыйМесяц = 0; + Если ТипЗнч(ПереданныйНомер) = ТипЗнч(1) Тогда + Если ПереданныйНомер = 1 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Январь; + ИначеЕсли ПереданныйНомер = 2 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Февраль; + ИначеЕсли ПереданныйНомер = 3 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Март; + ИначеЕсли ПереданныйНомер = 4 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Апрель; + ИначеЕсли ПереданныйНомер = 5 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Май; + ИначеЕсли ПереданныйНомер = 6 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Июнь; + ИначеЕсли ПереданныйНомер = 7 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Июль; + ИначеЕсли ПереданныйНомер = 8 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Август; + ИначеЕсли ПереданныйНомер = 9 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Сентябрь; + ИначеЕсли ПереданныйНомер = 10 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Октябрь; + ИначеЕсли ПереданныйНомер = 11 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Ноябрь; + ИначеЕсли ПереданныйНомер = 12 Тогда + ВозвращаемыйМесяц = Перечисления.ПС_Месяцы.Декабрь; + КонецЕсли; + КонецЕсли; + Возврат ВозвращаемыйМесяц; +КонецФункции // НомерМесяца() + + +Функция ДатаОбслуживанияВПериодОбслуживаня(ДатаОбслуживания) Экспорт + ВозвращаемыйПериодОбслуживания = Новый Структура("МесяцОбслуживания,ГодОбслуживания"); + Попытка + ВозвращаемыйПериодОбслуживания.МесяцОбслуживания = МесяцПоНомеру(Месяц(ДатаОбслуживания)); + ВозвращаемыйПериодОбслуживания.ГодОбслуживания = Год(ДатаОбслуживания); + Исключение + КонецПопытки; + Возврат ВозвращаемыйПериодОбслуживания; +КонецФункции + +Функция МаксимальноеКоличествоЧасовНепрерывнойДистанционнойРаботы(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.МаксимальноеКоличествоЧасовНепрерывнойДистанционнойРаботы); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //МаксимальноеКоличествоЧасовНепрерывнойДистанционнойРаботы(Дата = Неопределено) + +Функция ПутьКПапкеСФайломСтатистикиОбращенийУдаленногоОбслуживания(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ПутьКПапкеСФайломСтатистикиОбращенийУдаленногоОбслуживания); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ПутьКПапкеСФайломСтатистикиОбращенийУдаленногоОбслуживания(Дата = Неопределено) + +Функция ПутьКПапкеСФайломСтатистикиСеансовУдаленногоДоступа(ДатаПолученияНастройки = Неопределено) Экспорт + Настройка = Новый Структура("ВидНастройки",ПланыВидовХарактеристик.ПС_ВидыНастроек.ПутьКПапкеСФайломСтатистикиСеансовУдаленногоДоступа); + Если ДатаПолученияНастройки = Неопределено Тогда + ДатаПолученияНастройки = ТекущаяДата() + КонецЕсли; + Возврат РегистрыСведений.ПС_Настройки.ПолучитьПоследнее(ДатаПолученияНастройки,Настройка).ЗначениеНастройки; +КонецФункции //ПутьКПапкеСФайломСтатистикиСеансовУдаленногоДоступа(Дата = Неопределено) diff --git a/extension/src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.xml b/extension/src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.xml new file mode 100755 index 0000000..76f8883 --- /dev/null +++ b/extension/src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.xml @@ -0,0 +1,23 @@ + + + + + ПС_РаботаСНастройками + + + ru + Работа с настройками + + + + false + false + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git a/extension/src/Ext/Logo.xml b/extension/src/Ext/Logo.xml new file mode 100644 index 0000000..9b8e604 --- /dev/null +++ b/extension/src/Ext/Logo.xml @@ -0,0 +1,8 @@ + + + + + PNG + + + diff --git a/extension/src/Ext/Logo/LogoPS.png b/extension/src/Ext/Logo/LogoPS.png new file mode 100644 index 0000000..f415bc4 Binary files /dev/null and b/extension/src/Ext/Logo/LogoPS.png differ diff --git a/extension/src/Extension.xml b/extension/src/Extension.xml new file mode 100755 index 0000000..d2581a2 --- /dev/null +++ b/extension/src/Extension.xml @@ -0,0 +1,77 @@ + + + + + + 9cd510cd-abfc-11d4-9434-004095e12fc7 + b1c2d3e4-f5a6-7890-abcd-ef1234567890 + + + 9fcd25a0-4822-11d4-9414-008048da11f9 + c2d3e4f5-a6b7-8901-bcde-f12345678901 + + + e3687481-0a87-462c-a166-9f34594f9bba + d3e4f5a6-b7c8-9012-cdef-123456789012 + + + 9de14907-ec23-4a07-96f0-85521cb6b53b + e4f5a6b7-c8d9-0123-defa-234567890123 + + + 51f2d5d8-ea4d-4064-8892-82951750031e + f5a6b7c8-d9e0-1234-efab-345678901234 + + + e68182ea-4237-4383-967f-90c1e3370bc7 + a6b7c8d9-e0f1-2345-fabc-456789012345 + + + fb282519-d103-4dd3-bc12-cb271d631dfc + b7c8d9e0-f1a2-3456-abcd-567890123456 + + + + Adopted + Настройки + + + ru + Настройки + + + + + ru + Организация хранения настроек, привязанных к произвольным свойствам и с сохранением истории изменения + + + + + ru + Расширение реализует универсальное хранилище настроек через регистр сведений ПС_Настройки с ключом-ПВХ ПС_ВидыНастроек. Поддерживает все простые типы данных (булево, строка, дата, число) и ссылочные типы дерева метаданных. История изменений настроек сохраняется через периодичность регистра. Иерархия ролей: Чтение (программные вызовы), Просмотр (интерактивный доступ), Полный доступ (управление). Разработано совместно с AI-ассистентом MiMoCode (Xiaomi MiMo Team). + + + + + ru + 1С:Франчайзи ООО "Профи-Софт", код партнера 42575-13 + + + 1С:Франчайзи ООО "Профи-Софт", код партнера 42575-13 + 3.0.0.1 + 2 + ПС_ + ПС_ + Version8_3_27 + + + ПС_ЧтениеНастроек + ПС_ПросмотрНастроек + ПС_ПолныйДоступКНастройкам + ПС_ВидыНастроек + ПС_Настройки + ПС_РаботаСНастройками + + + diff --git a/extension/src/InformationRegisters/ПС_Настройки/Ext/Form/ФормаСписка/Form.xml b/extension/src/InformationRegisters/ПС_Настройки/Ext/Form/ФормаСписка/Form.xml new file mode 100755 index 0000000..da777b4 --- /dev/null +++ b/extension/src/InformationRegisters/ПС_Настройки/Ext/Form/ФормаСписка/Form.xml @@ -0,0 +1,128 @@ + +
+ + + ПриСозданииНаСервере + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Группа пользовательских настроек</v8:content> + </v8:item> + + false + Vertical + Usual + false + + + + List + None + true + ExpandTopLevel + true + ПС_СписокНастроек + ПС_СписокНастроек.DefaultPicture + false + 60 + + Custom + 0001-01-01T00:00:00 + 0001-01-01T00:00:00 + + Items + false + + true + false + Auto + СписокКомпоновщикНастроекПользовательскиеНастройки + true + + + false + + + + + ПС_СписокНастроек + SearchStringRepresentation + + + + + + + ПС_СписокНастроек + ViewStatusRepresentation + + + + + + + ПС_СписокНастроек + SearchControl + + + + + + + ПС_СписокНастроек.Period + true + + + + + ПС_СписокНастроек.ВидНастройки + + + + + ПС_СписокНастроек.ЗначениеНастройки + + + + +
+
+ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>П с список настроек</v8:content> + </v8:item> + + + cfg:DynamicList + + true + + false + true + InformationRegister.ПС_Настройки + + + Normal + dfcece9d-5077-440b-b6b3-45a5cb4538eb + + + Normal + 88619765-ccb3-46c6-ac52-38e9c992ebd4 + + + Normal + b75fecce-942b-4aed-abc9-e6a02e460fb3 + + Normal + 911b6018-f537-43e8-a417-da56b22f9aec + + + + + \ No newline at end of file diff --git a/extension/src/InformationRegisters/ПС_Настройки/Ext/Form/ФормаСписка/Module.bsl b/extension/src/InformationRegisters/ПС_Настройки/Ext/Form/ФормаСписка/Module.bsl new file mode 100755 index 0000000..a06f693 --- /dev/null +++ b/extension/src/InformationRegisters/ПС_Настройки/Ext/Form/ФормаСписка/Module.bsl @@ -0,0 +1,5 @@ + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + //ПС_СписокНастроек.УстановитьОбязательноеИспользование("ВидНастройки",Истина); +КонецПроцедуры diff --git a/extension/src/InformationRegisters/ПС_Настройки/ПС_Настройки.xml b/extension/src/InformationRegisters/ПС_Настройки/ПС_Настройки.xml new file mode 100755 index 0000000..1a2246d --- /dev/null +++ b/extension/src/InformationRegisters/ПС_Настройки/ПС_Настройки.xml @@ -0,0 +1,186 @@ + + + + + + a28d33ef-edaa-4a04-8bfd-d6669f69eeff + 18e64e7a-1c4c-4e9d-ba0e-3622fb97df81 + + + 6ad5a84c-c880-45d3-a54a-55fa66e8aea9 + 2b55dc8d-fb80-4527-97c3-68b39c9f1306 + + + b2d90406-f611-46b2-8f9b-a24a0cfa0174 + de962d72-0133-482e-a8be-d80e24e22a94 + + + 72874cfa-497a-4f59-b202-718d0e558abf + 760fa967-3b5e-4803-8f07-a240daa799a5 + + + 5241194a-31ee-4bb7-adf6-d679ea1495a8 + 179f08e9-1dfc-481a-861f-d61a12b157bb + + + bae90479-5039-46ca-993b-573db33e5716 + 793c69d5-eccd-40ca-9e43-86b3e0fb635e + + + c5a441dd-475a-40bd-9cb6-bffb38bf9f8e + b06c1782-8a61-4513-b340-993d458e1b06 + + + + ПС_Настройки + + + ru + Настройки + + + + true + InDialog + + InformationRegister.ПС_Настройки.Form.ФормаСписка + + + Day + Independent + true + false + Managed + DontUse + false + false + + + + + ru + Значения настроек + + + + + DontUse + false + false + + + + + ЗначениеНастройки + + + ru + Значение настройки + + + + + 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:BusinessProcessRoutePointRef.Ссылка + cfg:TaskRef.Ссылка + + 10 + 0 + Any + + + 250 + Variable + + + DateTime + + + false + + + + false + + false + false + + + false + + DontCheck + Items + + + Auto + Auto + + + InformationRegister.ПС_Настройки.Dimension.ВидНастройки + 0 + + Auto + DontIndex + Use + Use + + + + + ВидНастройки + + + ru + Вид настройки + + + + + cfg:ChartOfCharacteristicTypesRef.ПС_ВидыНастроек + + false + + + + false + + false + false + + + true + + DontCheck + Items + + + Auto + Auto + + + Auto + true + true + true + DontIndex + Use + Use + TransformValues + + +
ФормаСписка
+
+
+
\ No newline at end of file diff --git a/extension/src/Languages/Русский.xml b/extension/src/Languages/Русский.xml new file mode 100644 index 0000000..797e5f3 --- /dev/null +++ b/extension/src/Languages/Русский.xml @@ -0,0 +1,12 @@ + + + + + + + Русский + + ru + + + diff --git a/extension/src/Roles/ПС_ПолныйДоступКНастройкам.xml b/extension/src/Roles/ПС_ПолныйДоступКНастройкам.xml new file mode 100755 index 0000000..d982642 --- /dev/null +++ b/extension/src/Roles/ПС_ПолныйДоступКНастройкам.xml @@ -0,0 +1,13 @@ + + + + ПС_ПолныйДоступКНастройкам + + + ru + ПС: Полный доступ к настройкам + + + + + diff --git a/extension/src/Roles/ПС_ПолныйДоступКНастройкам/Ext/Rights.xml b/extension/src/Roles/ПС_ПолныйДоступКНастройкам/Ext/Rights.xml new file mode 100755 index 0000000..6555829 --- /dev/null +++ b/extension/src/Roles/ПС_ПолныйДоступКНастройкам/Ext/Rights.xml @@ -0,0 +1,80 @@ + + + + Configuration.БухгалтерияПредприятияКОРП + + DataAdministration + true + + + ExclusiveMode + false + + + ThinClient + true + + + WebClient + true + + + MobileClient + true + + + ThickClient + true + + + ExternalConnection + true + + + + InformationRegister.ПС_Настройки + + Read + true + + + View + true + + + Insert + true + + + Update + true + + + Delete + true + + + + ChartOfCharacteristicTypes.ПС_ВидыНастроек + + Read + true + + + View + true + + + Insert + true + + + Update + true + + + Delete + true + + + diff --git a/extension/src/Roles/ПС_ПросмотрНастроек.xml b/extension/src/Roles/ПС_ПросмотрНастроек.xml new file mode 100755 index 0000000..a87ef28 --- /dev/null +++ b/extension/src/Roles/ПС_ПросмотрНастроек.xml @@ -0,0 +1,13 @@ + + + + ПС_ПросмотрНастроек + + + ru + ПС: Просмотр настроек + + + + + diff --git a/extension/src/Roles/ПС_ПросмотрНастроек/Ext/Rights.xml b/extension/src/Roles/ПС_ПросмотрНастроек/Ext/Rights.xml new file mode 100755 index 0000000..9cc6113 --- /dev/null +++ b/extension/src/Roles/ПС_ПросмотрНастроек/Ext/Rights.xml @@ -0,0 +1,56 @@ + + + + Configuration.БухгалтерияПредприятияКОРП + + DataAdministration + false + + + ExclusiveMode + false + + + ThinClient + true + + + WebClient + true + + + MobileClient + true + + + ThickClient + true + + + ExternalConnection + true + + + + InformationRegister.ПС_Настройки + + Read + true + + + View + true + + + + ChartOfCharacteristicTypes.ПС_ВидыНастроек + + Read + true + + + View + true + + + diff --git a/extension/src/Roles/ПС_ЧтениеНастроек.xml b/extension/src/Roles/ПС_ЧтениеНастроек.xml new file mode 100755 index 0000000..248ccaf --- /dev/null +++ b/extension/src/Roles/ПС_ЧтениеНастроек.xml @@ -0,0 +1,13 @@ + + + + ПС_ЧтениеНастроек + + + ru + ПС: Чтение настроек + + + + + diff --git a/extension/src/Roles/ПС_ЧтениеНастроек/Ext/Rights.xml b/extension/src/Roles/ПС_ЧтениеНастроек/Ext/Rights.xml new file mode 100755 index 0000000..fa4387c --- /dev/null +++ b/extension/src/Roles/ПС_ЧтениеНастроек/Ext/Rights.xml @@ -0,0 +1,48 @@ + + + + Configuration.БухгалтерияПредприятияКОРП + + DataAdministration + false + + + ExclusiveMode + false + + + ThinClient + true + + + WebClient + true + + + MobileClient + true + + + ThickClient + true + + + ExternalConnection + true + + + + InformationRegister.ПС_Настройки + + Read + true + + + + ChartOfCharacteristicTypes.ПС_ВидыНастроек + + Read + true + + + diff --git a/Настройки.cfe b/Настройки.cfe new file mode 100644 index 0000000..a64595e Binary files /dev/null and b/Настройки.cfe differ