From e1e2572310e908156e27eb63b6375f5970e38a6c Mon Sep 17 00:00:00 2001 From: tsvetkoff Date: Wed, 12 Aug 2026 16:05:34 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=BC=D0=B8=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.project | 18 + .../.settings/org.eclipse.core.resources.prefs | 2 + .../DT-INF/PROJECT.PMF | 3 + .../src/Catalogs/ПС_КатегорииНастроек/ПС_КатегорииНастроек.mdo | 22 + .../src/Catalogs/Пользователи/Пользователи.mdo | 15 + .../src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo | 56 +++ .../src/CommonModules/ПС_Описание/Module.bsl | 120 +++++ .../src/CommonModules/ПС_Описание/ПС_Описание.mdo | 9 + .../src/CommonModules/ПС_РаботаСНастройками/Module.bsl | 445 ++++++++++++++++++ .../src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.mdo | 11 + .../src/Configuration/Configuration.mdo | 56 +++ .../src/Configuration/ExternalConnectionModule.bsl | 14 + .../src/Configuration/ManagedApplicationModule.bsl | 22 + .../src/Configuration/SessionModule.bsl | 18 + .../src/DefinedTypes/ПС_ТипыЗначенийНастроек/ПС_ТипыЗначенийНастроек.mdo | 26 + .../src/InformationRegisters/ПС_Настройки/ManagerModule.bsl | 30 ++ .../src/InformationRegisters/ПС_Настройки/RecordSetModule.bsl | 38 ++ .../src/InformationRegisters/ПС_Настройки/ПС_Настройки.mdo | 71 +++ .../src/Roles/ПС_ЗаписьНастроек/Rights.rights | 6 + .../src/Roles/ПС_ЗаписьНастроек/ПС_ЗаписьНастроек.mdo | 8 + .../src/Roles/ПС_ЧтениеНастроек/Rights.rights | 6 + .../src/Roles/ПС_ЧтениеНастроек/ПС_ЧтениеНастроек.mdo | 8 + 22 files changed, 1004 insertions(+) create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.project create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.settings/org.eclipse.core.resources.prefs create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/DT-INF/PROJECT.PMF create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/ПС_КатегорииНастроек/ПС_КатегорииНастроек.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/Пользователи/Пользователи.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/Module.bsl create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/ПС_Описание.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/Module.bsl create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/Configuration.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ExternalConnectionModule.bsl create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ManagedApplicationModule.bsl create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/SessionModule.bsl create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/DefinedTypes/ПС_ТипыЗначенийНастроек/ПС_ТипыЗначенийНастроек.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ManagerModule.bsl create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/RecordSetModule.bsl create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ПС_Настройки.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/Rights.rights create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/ПС_ЗаписьНастроек.mdo create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/Rights.rights create mode 100644 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/ПС_ЧтениеНастроек.mdo diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.project b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.project new file mode 100644 index 0000000..c4dfa54 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.project @@ -0,0 +1,18 @@ + + + 101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + com._1c.g5.v8.dt.core.V8ExtensionNature + + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.settings/org.eclipse.core.resources.prefs b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/DT-INF/PROJECT.PMF b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/DT-INF/PROJECT.PMF new file mode 100644 index 0000000..e669936 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/DT-INF/PROJECT.PMF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Runtime-Version: 8.5.1 +Base-Project: 101_ЦМСЧ_ЗиКГУ diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/ПС_КатегорииНастроек/ПС_КатегорииНастроек.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/ПС_КатегорииНастроек/ПС_КатегорииНастроек.mdo new file mode 100644 index 0000000..9bff62d --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/ПС_КатегорииНастроек/ПС_КатегорииНастроек.mdo @@ -0,0 +1,22 @@ + + + + + + + + + + ПС_КатегорииНастроек + + ru + Категории настроек + + Логическое разделение видов настроек по функциональным областям + true + 9 + 100 + Variable + true + true + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/Пользователи/Пользователи.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/Пользователи/Пользователи.mdo new file mode 100644 index 0000000..db31bdd --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Catalogs/Пользователи/Пользователи.mdo @@ -0,0 +1,15 @@ + + + + + + + + + + Пользователи + Adopted + + Checked + + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo new file mode 100644 index 0000000..c06370e --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo @@ -0,0 +1,56 @@ + + + + + + + + + + + ПС_ВидыНастроек + + ru + Виды настроек + + Хранение видов настроек с типизацией значений + + DefinedType.ПС_ТипыЗначенийНастроек + + true + true + 9 + Variable + 100 + true + true + + Имя + + ru + Имя + + + String + + 50 + + + + + + + + Категория + + ru + Категория + + + CatalogRef.ПС_КатегорииНастроек + + + + + + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/Module.bsl b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/Module.bsl new file mode 100644 index 0000000..cacce84 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/Module.bsl @@ -0,0 +1,120 @@ +// @strict-types + +//////////////////////////////////////////////////////////////////////////////// +// Расширение «ПС_ПериодическиеНастройки» +// Универсальная подсистема хранения настроек с историей изменений +//////////////////////////////////////////////////////////////////////////////// +// +// НАЗНАЧЕНИЕ +// Подсистема предоставляет механизм хранения произвольных настроек +// с историей изменений по дням. Реализована как расширение конфигурации +// и может быть подключена к любой ИБ 1С:Предприятие 8.3.24+. +// +// СОСТАВ ПОДСИСТЕМЫ +// +// Определяемый тип: +// ПС_ТипыЗначенийНастроек — составной тип: Булево, Число, Строка, Дата +// +// Справочники: +// ПС_КатегорииНастроек — категории настроек (иерархический) +// Пользователи (заимствован из родительской конфигурации) +// +// План видов характеристик: +// ПС_ВидыНастроек — виды настроек с типизацией значений +// Реквизиты: Имя (Строка 50), Категория (СправочникСсылка) +// +// Регистр сведений: +// ПС_Настройки — значения настроек с историей по дням +// Измерение: ВидНастройки +// Ресурс: Значение (определяемый тип) +// +// Роли: +// ПС_ОсновнаяРоль — основная роль расширения +// ПС_ЗаписьНастроек — запись настроек +// ПС_ЧтениеНастроек — чтение настроек +// +// Общие модули: +// ПС_РаботаСНастройками — программный интерфейс (Сервер) +// ПС_Описание — настоящий модуль документации +// +// ПРИНЦИП ЗАПИСИ БЕЗ УКАЗАНИЯ ПЕРИОДА +// +// При вызове ЗаписатьЗначениеНастройки указывается только значение и +// необязательная дата. Период действия определяется автоматически: +// значение считается действующим с указанной даты до следующего изменения. +// +// Пример: +// ПС_РаботаСНастройками.ЗаписатьЗначениеНастройки("УчетнаяПолитика", Истина); +// +// При вызове без даты записывается на текущую дату сеанса. +// +// ИСТОРИЯ ЗНАЧЕНИЙ +// +// Каждое изменение создаёт новую запись регистра. Получить актуальное +// значение на дату — срез последних. Получить историю — запрос к регистру. +// +// ПРОГРАММНЫЙ ИНТЕРФЕЙС (ПС_РаботаСНастройками) +// +// Получение значений: +// ПолучитьЗначениеНастройки(ИмяНастройки, ДатаЗначения = Неопределено) +// Возвращает значение на дату (по умолчанию — текущее). +// +// ПолучитьИсториюНастройки(ИмяНастройки, ДатаНачала, ДатаОкончания = Неопределено) +// Возвращает таблицу значений за период. +// +// Запись значений: +// ЗаписатьЗначениеНастройки(ИмяНастройки, Значение, ДатаЗначения = Неопределено) +// Создаёт запись на указанную дату (по умолчанию — текущую). +// +// Управление видами настроек: +// ПолучитьВидНастройки(ИмяНастройки) +// ВидНастройкиСуществует(ИмяНастройки) +// ПолучитьВидыНастроек(Родитель = Неопределено) — ДеревоЗначений +// СоздатьВидНастройки(Имя, Наименование, Категория = Неопределено, Родитель = Неопределено) +// +// Управление категориями: +// ПолучитьКатегориюНастроек(Наименование) +// СоздатьКатегориюНастроек(Наименование, Родитель = Неопределено) +// +// Групповая обработка: +// ПолучитьНастройкиКатегории(Категория, ДатаЗначения = Неопределено) +// Возвращает таблицу значений всех настроек указанной категории. +// +// ПолучитьНастройкиГруппыИерархии(ГруппаИерархии, ДатаЗначения = Неопределено) +// Возвращает таблицу значений всех настроек группы иерархии с вложениями. +// +// ПРИМЕР ИСПОЛЬЗОВАНИЯ +// +// // Создать категорию +// Кат = ПС_РаботаСНастройками.СоздатьКатегориюНастроек("Учётная политика"); +// +// // Создать вид настройки +// Вид = ПС_РаботаСНастройками.СоздатьВидНастройки("ПрименятьУСН", +// "Применять УСН", +// Кат); +// +// // Записать значение +// ПС_РаботаСНастройками.ЗаписатьЗначениеНастройки("ПрименятьУСН", Истина, Дата(2026, 1, 1)); +// +// // Получить текущее значение +// Если ПС_РаботаСНастройками.ПолучитьЗначениеНастройки("ПрименятьУСН") Тогда +// // ... +// КонецЕсли; +// +// // Получить историю +// История = ПС_РаботаСНастройками.ПолучитьИсториюНастройки("ПрименятьУСН", +// Дата(2026, 1, 1), +// Дата(2026, 12, 31)); +// +// // Получить все настройки категории на дату +// Таблица = ПС_РаботаСНастройками.ПолучитьНастройкиКатегории(Кат, Дата(2026, 1, 1)); +// +// ОГРАНИЧЕНИЯ +// +// - Изменение настройки возможно не чаще одного раза в день (периодичность +// регистра — День). +// - 4 типа значений: Булево, Число, Строка, Дата. +// - Иерархия групп используется только для логического разделения, +// наследование настроек не поддерживается. +// +//////////////////////////////////////////////////////////////////////////////// diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/ПС_Описание.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/ПС_Описание.mdo new file mode 100644 index 0000000..e724519 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_Описание/ПС_Описание.mdo @@ -0,0 +1,9 @@ + + + ПС_Описание + + ru + Описание + + true + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/Module.bsl b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/Module.bsl new file mode 100644 index 0000000..74129e0 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/Module.bsl @@ -0,0 +1,445 @@ +// @strict-types + +#Область ПрограммныйИнтерфейс + +// Получает значение настройки на указанную дату. +// Если дата не указана - возвращается текущее (последнее) значение. +// +// Параметры: +// ИмяНастройки - Строка - уникальное имя вида настройки (реквизит Имя ПВХ ПС_ВидыНастроек). +// ДатаЗначения - Дата - дата, на которую нужно получить значение. +// Если не указана - текущая дата. +// +// Возвращаемое значение: +// - Булево, Число, Строка, Дата, Неопределено - значение настройки на дату. +// Неопределено, если значение не найдено. +// +// Пример: +// Значение = ПС_РаботаСНастройками.ПолучитьЗначениеНастройки("УчетнаяПолитикаОрганизации", Дата(2026, 1, 1)); +// +Функция ПолучитьЗначениеНастройки(ИмяНастройки, ДатаЗначения = Неопределено) Экспорт + + Если ДатаЗначения = Неопределено Тогда + ДатаЗначения = ТекущаяДатаСеанса(); + КонецЕсли; + + ВидНастройки = ПолучитьВидНастройки(ИмяНастройки); + Если НЕ ЗначениеЗаполнено(ВидНастройки) Тогда + Возврат Неопределено; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ПС_Настройки.Значение КАК Значение + |ИЗ + | РегистрСведений.ПС_Настройки.СрезПоследних(&ДатаСреза, ВидНастройки = &ВидНастройки) КАК ПС_Настройки"; + Запрос.УстановитьПараметр("ДатаСреза", ДатаЗначения); + Запрос.УстановитьПараметр("ВидНастройки", ВидНастройки); + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат Неопределено; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + Возврат Выборка.Значение; + +КонецФункции + +// Записывает значение настройки на указанную дату. +// Период действия не указывается - определяется автоматически: +// значение считается действующим с указанной даты до следующего изменения. +// Если дата не указана - записывается на текущую дату. +// +// Параметры: +// ИмяНастройки - Строка - уникальное имя вида настройки. +// Значение - Булево, Число, Строка, Дата - новое значение настройки. +// ДатаЗначения - Дата - дата установки значения. +// Если не указана - текущая дата. +// +// Пример: +// ПС_РаботаСНастройками.ЗаписатьЗначениеНастройки("УчетнаяПолитикаОрганизации", Истина, Дата(2026, 1, 1)); +// +Процедура ЗаписатьЗначениеНастройки(ИмяНастройки, Значение, ДатаЗначения = Неопределено) Экспорт + + Если ДатаЗначения = Неопределено Тогда + ДатаЗначения = ТекущаяДатаСеанса(); + КонецЕсли; + + ВидНастройки = ПолучитьВидНастройки(ИмяНастройки); + Если НЕ ЗначениеЗаполнено(ВидНастройки) Тогда + ВызватьИсключение СтрШаблон("Вид настройки с именем %1 не найден", ИмяНастройки); + КонецЕсли; + + Запись = РегистрыСведений.ПС_Настройки.СоздатьМенеджерЗаписи(); + Запись.Период = ДатаЗначения; + Запись.ВидНастройки = ВидНастройки; + Запись.Значение = Значение; + Запись.Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь(); + Запись.Записать(); + +КонецПроцедуры + +// Получает историю значений настройки за период. +// +// Параметры: +// ИмяНастройки - Строка - уникальное имя вида настройки. +// ДатаНачала - Дата - начало периода истории. +// ДатаОкончания - Дата - конец периода истории. Если не указана - текущая дата. +// +// Возвращаемое значение: +// - ТаблицаЗначений - таблица с колонками: +// * Период - Дата - дата установки значения, +// * Значение - Произвольный - значение настройки, +// * Пользователь - СправочникСсылка.Пользователи - пользователь, изменивший значение. +// +Функция ПолучитьИсториюНастройки(ИмяНастройки, ДатаНачала, ДатаОкончания = Неопределено) Экспорт + + Если ДатаОкончания = Неопределено Тогда + ДатаОкончания = ТекущаяДатаСеанса(); + КонецЕсли; + + ВидНастройки = ПолучитьВидНастройки(ИмяНастройки); + Если НЕ ЗначениеЗаполнено(ВидНастройки) Тогда + Возврат Новый ТаблицаЗначений; + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПС_Настройки.Период КАК Период, + | ПС_Настройки.Значение КАК Значение, + | ПС_Настройки.Пользователь КАК Пользователь + |ИЗ + | РегистрСведений.ПС_Настройки КАК ПС_Настройки + |ГДЕ + | ПС_Настройки.ВидНастройки = &ВидНастройки + | И ПС_Настройки.Период МЕЖДУ &ДатаНачала И &ДатаОкончания + | + |УПОРЯДОЧИТЬ ПО + | Период"; + Запрос.УстановитьПараметр("ВидНастройки", ВидНастройки); + Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); + Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания); + + Возврат Запрос.Выполнить().Выгрузить(); + +КонецФункции + +// Возвращает вид настройки по имени. +// +// Параметры: +// ИмяНастройки - Строка - уникальное имя вида настройки. +// +// Возвращаемое значение: +// - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек, Неопределено +// +Функция ПолучитьВидНастройки(ИмяНастройки) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ПС_ВидыНастроек.Ссылка КАК Ссылка + |ИЗ + | ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек + |ГДЕ + | ПС_ВидыНастроек.Имя = &Имя"; + Запрос.УстановитьПараметр("Имя", ИмяНастройки); + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат Неопределено; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + Возврат Выборка.Ссылка; + +КонецФункции + +// Проверяет существование вида настройки. +// +// Параметры: +// ИмяНастройки - Строка - уникальное имя вида настройки. +// +// Возвращаемое значение: +// - Булево - Истина, если вид настройки существует. +// +Функция ВидНастройкиСуществует(ИмяНастройки) Экспорт + + Возврат ЗначениеЗаполнено(ПолучитьВидНастройки(ИмяНастройки)); + +КонецФункции + +// Возвращает дерево видов настроек. +// +// Параметры: +// Родитель - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - родительский вид или группа. +// +// Возвращаемое значение: +// - ДеревоЗначений с колонками: Ссылка, Наименование, Имя, Категория +// +Функция ПолучитьВидыНастроек(Родитель = Неопределено) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПС_ВидыНастроек.Ссылка КАК Ссылка, + | ПС_ВидыНастроек.Наименование КАК Наименование, + | ПС_ВидыНастроек.Имя КАК Имя, + | ПС_ВидыНастроек.Категория КАК Категория, + | ПС_ВидыНастроек.Родитель КАК Родитель, + | ПС_ВидыНастроек.ЭтоГруппа КАК ЭтоГруппа + |ИЗ + | ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек + |УПОРЯДОЧИТЬ ПО + | Наименование ИЕРАРХИЯ"; + + РезультатЗапроса = Запрос.Выполнить(); + + Дерево = Новый ДеревоЗначений; + Дерево.Колонки.Добавить("Ссылка"); + Дерево.Колонки.Добавить("Наименование"); + Дерево.Колонки.Добавить("Имя"); + Дерево.Колонки.Добавить("Категория"); + + Если РезультатЗапроса.Пустой() Тогда + Возврат Дерево; + КонецЕсли; + + СоответствиеСсылок = Новый Соответствие; + Выборка = РезультатЗапроса.Выбрать(); + Пока Выборка.Следующий() Цикл + Строка = Неопределено; + Если ЗначениеЗаполнено(Выборка.Родитель) И Выборка.Родитель <> Выборка.Ссылка Тогда + Строка = СоответствиеСсылок[Выборка.Родитель]; + КонецЕсли; + Если Строка = Неопределено Тогда + Строка = Дерево.Строки.Добавить(); + Иначе + Строка = Строка.Строки.Добавить(); + КонецЕсли; + ЗаполнитьЗначенияСвойств(Строка, Выборка, "Ссылка, Наименование, Имя, Категория"); + СоответствиеСсылок.Вставить(Выборка.Ссылка, Строка); + КонецЦикла; + + Возврат Дерево; + +КонецФункции + +// Создает новый вид настройки. +// +// Параметры: +// Имя - Строка - уникальное имя для разработчиков (реквизит Имя). +// Наименование - Строка - наименование для пользователей. +// Категория - СправочникСсылка.ПС_КатегорииНастроек - категория. +// Родитель - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - родитель (для иерархии). +// +// Возвращаемое значение: +// - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - созданный вид настройки. +// +Функция СоздатьВидНастройки(Имя, Наименование, Категория = Неопределено, Родитель = Неопределено) Экспорт + + Если ВидНастройкиСуществует(Имя) Тогда + ВызватьИсключение СтрШаблон("Вид настройки с именем %1 уже существует", Имя); + КонецЕсли; + + ВидНастройкиОбъект = ПланыВидовХарактеристик.ПС_ВидыНастроек.СоздатьЭлемент(); + ВидНастройкиОбъект.Имя = Имя; + ВидНастройкиОбъект.Наименование = Наименование; + ВидНастройкиОбъект.Категория = Категория; + Если ЗначениеЗаполнено(Родитель) Тогда + ВидНастройкиОбъект.Родитель = Родитель; + КонецЕсли; + ВидНастройкиОбъект.Записать(); + + Возврат ВидНастройкиОбъект.Ссылка; + +КонецФункции + +// Возвращает все значения настроек указанной категории на дату. +// +// Параметры: +// Категория - СправочникСсылка.ПС_КатегорииНастроек - категория. +// ДатаЗначения - Дата - дата, на которую нужны значения. Если не указана - текущая дата. +// +// Возвращаемое значение: +// - ТаблицаЗначений с колонками: ВидНастройки, Имя, Наименование, Значение. +// +Функция ПолучитьНастройкиКатегории(Категория, ДатаЗначения = Неопределено) Экспорт + + Если ДатаЗначения = Неопределено Тогда + ДатаЗначения = ТекущаяДатаСеанса(); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПС_ВидыНастроек.Ссылка КАК ВидНастройки, + | ПС_ВидыНастроек.Имя КАК Имя, + | ПС_ВидыНастроек.Наименование КАК Наименование + |ИЗ + | ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек + |ГДЕ + | ПС_ВидыНастроек.Категория = &Категория + | И ПС_ВидыНастроек.ЭтоГруппа = ЛОЖЬ + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПС_НастройкиСрезПоследних.ВидНастройки КАК ВидНастройки, + | ПС_НастройкиСрезПоследних.Значение КАК Значение + |ИЗ + | РегистрСведений.ПС_Настройки.СрезПоследних(&ДатаСреза, ) КАК ПС_НастройкиСрезПоследних"; + Запрос.УстановитьПараметр("Категория", Категория); + Запрос.УстановитьПараметр("ДатаСреза", ДатаЗначения); + + РезультатПакета = Запрос.ВыполнитьПакет(); + + ВидыНастроек = РезультатПакета[0].Выгрузить(); + СрезЗначений = РезультатПакета[1].Выгрузить(); + + Результат = ВидыНастроек.Скопировать(); + Результат.Колонки.Добавить("Значение"); + Результат.ЗаполнитьЗначения(Неопределено, "Значение"); + + СоответствиеЗначений = Новый Соответствие; + Для Каждого Стр Из СрезЗначений Цикл + СоответствиеЗначений.Вставить(Стр.ВидНастройки, Стр.Значение); + КонецЦикла; + + Для Каждого Стр Из Результат Цикл + Стр.Значение = СоответствиеЗначений[Стр.ВидНастройки]; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Возвращает все значения настроек указанной группы иерархии (с вложениями) на дату. +// +// Параметры: +// ГруппаИерархии - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - группа (ЭтоГруппа = Истина). +// ДатаЗначения - Дата - дата. Если не указана - текущая дата. +// +// Возвращаемое значение: +// - ТаблицаЗначений с колонками: ВидНастройки, Имя, Наименование, Значение. +// +Функция ПолучитьНастройкиГруппыИерархии(ГруппаИерархии, ДатаЗначения = Неопределено) Экспорт + + Если ДатаЗначения = Неопределено Тогда + ДатаЗначения = ТекущаяДатаСеанса(); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПС_ВидыНастроек.Ссылка КАК ВидНастройки, + | ПС_ВидыНастроек.Имя КАК Имя, + | ПС_ВидыНастроек.Наименование КАК Наименование + |ИЗ + | ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек + |ГДЕ + | ПС_ВидыНастроек.Ссылка В ИЕРАРХИИ (&ГруппаИерархии) + | И ПС_ВидыНастроек.ЭтоГруппа = ЛОЖЬ + |; + | + |//////////////////////////////////////////////////////////////////////////////// + |ВЫБРАТЬ + | ПС_НастройкиСрезПоследних.ВидНастройки КАК ВидНастройки, + | ПС_НастройкиСрезПоследних.Значение КАК Значение + |ИЗ + | РегистрСведений.ПС_Настройки.СрезПоследних(&ДатаСреза, ) КАК ПС_НастройкиСрезПоследних"; + Запрос.УстановитьПараметр("ГруппаИерархии", ГруппаИерархии); + Запрос.УстановитьПараметр("ДатаСреза", ДатаЗначения); + + РезультатПакета = Запрос.ВыполнитьПакет(); + + ВидыНастроек = РезультатПакета[0].Выгрузить(); + СрезЗначений = РезультатПакета[1].Выгрузить(); + + Результат = ВидыНастроек.Скопировать(); + Результат.Колонки.Добавить("Значение"); + Результат.ЗаполнитьЗначения(Неопределено, "Значение"); + + СоответствиеЗначений = Новый Соответствие; + Для Каждого Стр Из СрезЗначений Цикл + СоответствиеЗначений.Вставить(Стр.ВидНастройки, Стр.Значение); + КонецЦикла; + + Для Каждого Стр Из Результат Цикл + Стр.Значение = СоответствиеЗначений[Стр.ВидНастройки]; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Создает новую категорию настроек. +// +// Параметры: +// Наименование - Строка - наименование категории. +// Родитель - СправочникСсылка.ПС_КатегорииНастроек - родительская категория (для иерархии). +// +// Возвращаемое значение: +// - СправочникСсылка.ПС_КатегорииНастроек - созданная категория. +// +Функция СоздатьКатегориюНастроек(Наименование, Родитель = Неопределено) Экспорт + + КатегорияОбъект = Справочники.ПС_КатегорииНастроек.СоздатьЭлемент(); + КатегорияОбъект.Наименование = Наименование; + Если ЗначениеЗаполнено(Родитель) Тогда + КатегорияОбъект.Родитель = Родитель; + КонецЕсли; + КатегорияОбъект.Записать(); + + Возврат КатегорияОбъект.Ссылка; + +КонецФункции + +// Возвращает категорию настроек по наименованию. +// +// Параметры: +// Наименование - Строка - наименование категории. +// +// Возвращаемое значение: +// - СправочникСсылка.ПС_КатегорииНастроек, Неопределено +// +Функция ПолучитьКатегориюНастроек(Наименование) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ ПЕРВЫЕ 1 + | ПС_КатегорииНастроек.Ссылка КАК Ссылка + |ИЗ + | Справочник.ПС_КатегорииНастроек КАК ПС_КатегорииНастроек + |ГДЕ + | ПС_КатегорииНастроек.Наименование = &Наименование"; + Запрос.УстановитьПараметр("Наименование", Наименование); + + РезультатЗапроса = Запрос.Выполнить(); + Если РезультатЗапроса.Пустой() Тогда + Возврат Неопределено; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + Выборка.Следующий(); + Возврат Выборка.Ссылка; + +КонецФункции + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Код процедур и функций + +#КонецОбласти diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.mdo new file mode 100644 index 0000000..d4eae03 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/CommonModules/ПС_РаботаСНастройками/ПС_РаботаСНастройками.mdo @@ -0,0 +1,11 @@ + + + ПС_РаботаСНастройками + + ru + Работа с настройками + + true + true + true + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/Configuration.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/Configuration.mdo new file mode 100644 index 0000000..8e2b052 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/Configuration.mdo @@ -0,0 +1,56 @@ + + + ПС_ПериодическиеНастройки + + ru + Периодические настройки + + Adopted + + Checked + Checked + Extended + Extended + Extended + Checked + Checked + Checked + Extended + + + + + + + + + true + ПС_ + 8.3.24 + Customization + ManagedApplication + PersonalComputer + Russian + Role.ПС_ЗаписьНастроек + Language.Русский + TaxiEnableVersion8_2 + 8.3.24 + + Русский + Adopted + + Checked + Checked + + ru + + Role.ПС_ЗаписьНастроек + Role.ПС_ЧтениеНастроек + CommonModule.ПС_Описание + CommonModule.ПС_РаботаСНастройками + DefinedType.ПС_ТипыЗначенийНастроек + Catalog.Пользователи + Catalog.ПС_КатегорииНастроек + InformationRegister.ПС_Настройки + ChartOfCharacteristicTypes.ПС_ВидыНастроек + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ExternalConnectionModule.bsl b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ExternalConnectionModule.bsl new file mode 100644 index 0000000..6ed4d22 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ExternalConnectionModule.bsl @@ -0,0 +1,14 @@ +// @strict-types + + +#Область ОбработчикиСобытий + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Код процедур и функций + +#КонецОбласти diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ManagedApplicationModule.bsl b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ManagedApplicationModule.bsl new file mode 100644 index 0000000..59e406a --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/ManagedApplicationModule.bsl @@ -0,0 +1,22 @@ +// @strict-types + + +#Область ОписаниеПеременных + +#КонецОбласти + +#Область ОбработчикиСобытий + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Код процедур и функций + +#КонецОбласти + +#Область Инициализация + +#КонецОбласти diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/SessionModule.bsl b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/SessionModule.bsl new file mode 100644 index 0000000..b96eacf --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Configuration/SessionModule.bsl @@ -0,0 +1,18 @@ +// @strict-types + + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОбработчикиСобытий + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Код процедур и функций + +#КонецОбласти + +#КонецЕсли diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/DefinedTypes/ПС_ТипыЗначенийНастроек/ПС_ТипыЗначенийНастроек.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/DefinedTypes/ПС_ТипыЗначенийНастроек/ПС_ТипыЗначенийНастроек.mdo new file mode 100644 index 0000000..818ecfd --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/DefinedTypes/ПС_ТипыЗначенийНастроек/ПС_ТипыЗначенийНастроек.mdo @@ -0,0 +1,26 @@ + + + + + + ПС_ТипыЗначенийНастроек + + ru + Типы значений настроек + + + Boolean + String + Date + Number + + 10 + + + 10 + + + Date + + + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ManagerModule.bsl b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ManagerModule.bsl new file mode 100644 index 0000000..e27d3b2 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ManagerModule.bsl @@ -0,0 +1,30 @@ +// @strict-types + + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ПрограммныйИнтерфейс + +// Код процедур и функций + +#КонецОбласти + +#Область ОбработчикиСобытий + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Код процедур и функций + +#КонецОбласти + +#КонецЕсли diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/RecordSetModule.bsl b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/RecordSetModule.bsl new file mode 100644 index 0000000..c809419 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/RecordSetModule.bsl @@ -0,0 +1,38 @@ +// @strict-types + + +#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда + +#Область ОписаниеПеременных + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +// Код процедур и функций + +#КонецОбласти + +#Область ОбработчикиСобытий + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныйПрограммныйИнтерфейс + +// Код процедур и функций + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +// Код процедур и функций + +#КонецОбласти + +#Область Инициализация + +#КонецОбласти + +#КонецЕсли diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ПС_Настройки.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ПС_Настройки.mdo new file mode 100644 index 0000000..03f8f30 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/InformationRegisters/ПС_Настройки/ПС_Настройки.mdo @@ -0,0 +1,71 @@ + + + + + + + + + + + + ПС_Настройки + + ru + Настройки + + true + InDialog + Day + true + Managed + + Значение + + ru + Значение + + + DefinedType.ПС_ТипыЗначенийНастроек + + + + + InformationRegister.ПС_Настройки.Dimension.ВидНастройки + + Use + Use + + + + Пользователь + + ru + Пользователь + + + Catalog.Пользователи + + Use + Use + + + + ВидНастройки + + ru + Вид настройки + + + ChartOfCharacteristicTypesRef.ПС_ВидыНастроек + + + + Use + Use + true + + true + true + + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/Rights.rights b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/Rights.rights new file mode 100644 index 0000000..051e9d0 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/Rights.rights @@ -0,0 +1,6 @@ + + + true + true + false + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/ПС_ЗаписьНастроек.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/ПС_ЗаписьНастроек.mdo new file mode 100644 index 0000000..27a1e63 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЗаписьНастроек/ПС_ЗаписьНастроек.mdo @@ -0,0 +1,8 @@ + + + ПС_ЗаписьНастроек + + ru + Запись настроек + + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/Rights.rights b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/Rights.rights new file mode 100644 index 0000000..4096fe8 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/Rights.rights @@ -0,0 +1,6 @@ + + + false + true + false + diff --git a/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/ПС_ЧтениеНастроек.mdo b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/ПС_ЧтениеНастроек.mdo new file mode 100644 index 0000000..5211379 --- /dev/null +++ b/101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки/src/Roles/ПС_ЧтениеНастроек/ПС_ЧтениеНастроек.mdo @@ -0,0 +1,8 @@ + + + ПС_ЧтениеНастроек + + ru + Чтение настроек + +