Первый коммит

This commit is contained in:
tsvetkoff
2026-08-12 16:05:34 +05:00
commit e1e2572310
22 changed files with 1004 additions and 0 deletions
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>101_ЦМСЧ_ЗиКГУ.ПС_ПериодическиеНастройки</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
<nature>com._1c.g5.v8.dt.core.V8ExtensionNature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,2 @@
eclipse.preferences.version=1
encoding/<project>=UTF-8
@@ -0,0 +1,3 @@
Manifest-Version: 1.0
Runtime-Version: 8.5.1
Base-Project: 101_ЦМСЧ_ЗиКГУ
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ef922f96-90dc-4f1d-a336-c91a4b1a0400">
<producedTypes>
<objectType typeId="dd7b65ae-bde7-498c-9b3a-0c01a12329d3" valueTypeId="e8377ff2-2048-45ef-a51a-2a18fcd7e546"/>
<refType typeId="9199f622-f14f-450e-a163-a39092e52bd6" valueTypeId="34fcbe30-57e7-46bb-afc2-1558d83268f7"/>
<selectionType typeId="0a3cc92f-1cb0-4a26-9c64-88643d3a6e1f" valueTypeId="d400a273-f00b-4d60-8447-dd4465da9bdd"/>
<listType typeId="a8dba751-41c6-466a-a8c4-1c4c4d6c9b50" valueTypeId="9f7bed7e-5d54-4d43-a2d1-3320718e990e"/>
<managerType typeId="fd0305eb-2de4-4c25-9cf9-e892d1d6823f" valueTypeId="a7aecd00-3b0c-428f-bb33-1e49bac2c837"/>
</producedTypes>
<name>ПС_КатегорииНастроек</name>
<synonym>
<key>ru</key>
<value>Категории настроек</value>
</synonym>
<comment>Логическое разделение видов настроек по функциональным областям</comment>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<descriptionLength>100</descriptionLength>
<codeAllowedLength>Variable</codeAllowedLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
</mdclass:Catalog>
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Catalog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="6407bc85-0106-470d-bb72-a18e246c2357" extendedConfigurationObject="579baaa4-6493-4d99-8744-6399757295c7">
<producedTypes>
<objectType typeId="ed5f0586-e5f4-4303-ad57-1c145f3e1df4" valueTypeId="89aff472-ac00-409e-b476-fa03ebda9606"/>
<refType typeId="aa28b994-642c-456c-8dd5-34f006e820dc" valueTypeId="879bddae-03f2-458a-a3eb-16222420a3c9"/>
<selectionType typeId="86bb6cc0-f568-4c66-a36c-fa1a8b09d330" valueTypeId="4b840cef-25a5-4afc-b1ff-daf0de252f1c"/>
<listType typeId="00d0d6bf-58d0-4124-8c94-f7c3d9d5ccae" valueTypeId="0fa7f4f6-b06a-4b36-adc8-ae313d640915"/>
<managerType typeId="e9790165-6262-434e-be0e-5b39dd195675" valueTypeId="bfd964d5-48d9-49da-ad13-8dfab6854269"/>
</producedTypes>
<name>Пользователи</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:CatalogExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
</extension>
</mdclass:Catalog>
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:ChartOfCharacteristicTypes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="20d86652-e4f2-4784-9a4c-7b28effef21b">
<producedTypes>
<objectType typeId="0a975433-2ec6-4254-85d7-ec9e8be644ba" valueTypeId="88db4c62-ca00-4fa9-8776-97f19564767d"/>
<refType typeId="3e4827f7-abb3-4388-bcdc-6a84b8c3f060" valueTypeId="b9a9755e-f960-4797-ad8a-d2ec6c612f92"/>
<selectionType typeId="25cafab3-e59a-4a70-9265-eda3d1614bb8" valueTypeId="a23993c6-abbf-492f-871a-1688aafbdbba"/>
<listType typeId="5315a49b-f99c-4fd0-adc0-4c35037abe5a" valueTypeId="a154b38f-e09a-4254-afe7-07bc0e3f72ac"/>
<managerType typeId="e921484d-8d89-4508-9f92-924ab711c9d2" valueTypeId="340d6ec3-0d3f-40ce-a32e-2d4ccc90c89e"/>
<containerType typeId="9ac79dcf-bad7-42b0-9220-bd64e5074f1e" valueTypeId="0ad601c5-3ee5-45da-9cae-09a90ebe2176"/>
</producedTypes>
<name>ПС_ВидыНастроек</name>
<synonym>
<key>ru</key>
<value>Виды настроек</value>
</synonym>
<comment>Хранение видов настроек с типизацией значений</comment>
<type>
<types>DefinedType.ПС_ТипыЗначенийНастроек</types>
</type>
<hierarchical>true</hierarchical>
<foldersOnTop>true</foldersOnTop>
<codeLength>9</codeLength>
<codeAllowedLength>Variable</codeAllowedLength>
<descriptionLength>100</descriptionLength>
<checkUnique>true</checkUnique>
<autonumbering>true</autonumbering>
<attributes uuid="26a23e10-ba79-4333-ad8f-84c66b03dd41">
<name>Имя</name>
<synonym>
<key>ru</key>
<value>Имя</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers>
<length>50</length>
</stringQualifiers>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:StringValue"/>
</attributes>
<attributes uuid="0ccfde58-d2b1-47af-bd98-3fc0b55ffa9b">
<name>Категория</name>
<synonym>
<key>ru</key>
<value>Категория</value>
</synonym>
<type>
<types>CatalogRef.ПС_КатегорииНастроек</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fillValue xsi:type="core:UndefinedValue"/>
</attributes>
</mdclass:ChartOfCharacteristicTypes>
@@ -0,0 +1,120 @@
// @strict-types
////////////////////////////////////////////////////////////////////////////////
// Расширение «ПС_ПериодическиеНастройки»
// Универсальная подсистема хранения настроек с историей изменений
////////////////////////////////////////////////////////////////////////////////
//
// НАЗНАЧЕНИЕ
// Подсистема предоставляет механизм хранения произвольных настроек
// с историей изменений по дням. Реализована как расширение конфигурации
// и может быть подключена к любой ИБ 1С:Предприятие 8.3.24+.
//
// СОСТАВ ПОДСИСТЕМЫ
//
// Определяемый тип:
// ПС_ТипыЗначенийНастроек — составной тип: Булево, Число, Строка, Дата
//
// Справочники:
// ПС_КатегорииНастроек — категории настроек (иерархический)
// Пользователи (заимствован из родительской конфигурации)
//
// План видов характеристик:
// ПС_ВидыНастроек — виды настроек с типизацией значений
// Реквизиты: Имя (Строка 50), Категория (СправочникСсылка)
//
// Регистр сведений:
// ПС_Настройки — значения настроек с историей по дням
// Измерение: ВидНастройки
// Ресурс: Значение (определяемый тип)
//
// Роли:
// ПС_ОсновнаяРоль — основная роль расширения
// ПС_ЗаписьНастроек — запись настроек
// ПС_ЧтениеНастроек — чтение настроек
//
// Общие модули:
// ПС_РаботаСНастройками — программный интерфейс (Сервер)
// ПС_Описание — настоящий модуль документации
//
// ПРИНЦИП ЗАПИСИ БЕЗ УКАЗАНИЯ ПЕРИОДА
//
// При вызове ЗаписатьЗначениеНастройки указывается только значение и
// необязательная дата. Период действия определяется автоматически:
// значение считается действующим с указанной даты до следующего изменения.
//
// Пример:
// ПС_РаботаСНастройками.ЗаписатьЗначениеНастройки("УчетнаяПолитика", Истина);
//
// При вызове без даты записывается на текущую дату сеанса.
//
// ИСТОРИЯ ЗНАЧЕНИЙ
//
// Каждое изменение создаёт новую запись регистра. Получить актуальное
// значение на дату — срез последних. Получить историю — запрос к регистру.
//
// ПРОГРАММНЫЙ ИНТЕРФЕЙС (ПС_РаботаСНастройками)
//
// Получение значений:
// ПолучитьЗначениеНастройки(ИмяНастройки, ДатаЗначения = Неопределено)
// Возвращает значение на дату (по умолчанию — текущее).
//
// ПолучитьИсториюНастройки(ИмяНастройки, ДатаНачала, ДатаОкончания = Неопределено)
// Возвращает таблицу значений за период.
//
// Запись значений:
// ЗаписатьЗначениеНастройки(ИмяНастройки, Значение, ДатаЗначения = Неопределено)
// Создаёт запись на указанную дату (по умолчанию — текущую).
//
// Управление видами настроек:
// ПолучитьВидНастройки(ИмяНастройки)
// ВидНастройкиСуществует(ИмяНастройки)
// ПолучитьВидыНастроек(Родитель = Неопределено) — ДеревоЗначений
// СоздатьВидНастройки(Имя, Наименование, Категория = Неопределено, Родитель = Неопределено)
//
// Управление категориями:
// ПолучитьКатегориюНастроек(Наименование)
// СоздатьКатегориюНастроек(Наименование, Родитель = Неопределено)
//
// Групповая обработка:
// ПолучитьНастройкиКатегории(Категория, ДатаЗначения = Неопределено)
// Возвращает таблицу значений всех настроек указанной категории.
//
// ПолучитьНастройкиГруппыИерархии(ГруппаИерархии, ДатаЗначения = Неопределено)
// Возвращает таблицу значений всех настроек группы иерархии с вложениями.
//
// ПРИМЕР ИСПОЛЬЗОВАНИЯ
//
// // Создать категорию
// Кат = ПС_РаботаСНастройками.СоздатьКатегориюНастроек("Учётная политика");
//
// // Создать вид настройки
// Вид = ПС_РаботаСНастройками.СоздатьВидНастройки("ПрименятьУСН",
// "Применять УСН",
// Кат);
//
// // Записать значение
// ПС_РаботаСНастройками.ЗаписатьЗначениеНастройки("ПрименятьУСН", Истина, Дата(2026, 1, 1));
//
// // Получить текущее значение
// Если ПС_РаботаСНастройками.ПолучитьЗначениеНастройки("ПрименятьУСН") Тогда
// // ...
// КонецЕсли;
//
// // Получить историю
// История = ПС_РаботаСНастройками.ПолучитьИсториюНастройки("ПрименятьУСН",
// Дата(2026, 1, 1),
// Дата(2026, 12, 31));
//
// // Получить все настройки категории на дату
// Таблица = ПС_РаботаСНастройками.ПолучитьНастройкиКатегории(Кат, Дата(2026, 1, 1));
//
// ОГРАНИЧЕНИЯ
//
// - Изменение настройки возможно не чаще одного раза в день (периодичность
// регистра — День).
// - 4 типа значений: Булево, Число, Строка, Дата.
// - Иерархия групп используется только для логического разделения,
// наследование настроек не поддерживается.
//
////////////////////////////////////////////////////////////////////////////////
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="6d9ceeed-89b2-436f-8698-d7314fff223f">
<name>ПС_Описание</name>
<synonym>
<key>ru</key>
<value>Описание</value>
</synonym>
<server>true</server>
</mdclass:CommonModule>
@@ -0,0 +1,445 @@
// @strict-types
#Область ПрограммныйИнтерфейс
// Получает значение настройки на указанную дату.
// Если дата не указана - возвращается текущее (последнее) значение.
//
// Параметры:
// ИмяНастройки - Строка - уникальное имя вида настройки (реквизит Имя ПВХ ПС_ВидыНастроек).
// ДатаЗначения - Дата - дата, на которую нужно получить значение.
// Если не указана - текущая дата.
//
// Возвращаемое значение:
// - Булево, Число, Строка, Дата, Неопределено - значение настройки на дату.
// Неопределено, если значение не найдено.
//
// Пример:
// Значение = ПС_РаботаСНастройками.ПолучитьЗначениеНастройки("УчетнаяПолитикаОрганизации", Дата(2026, 1, 1));
//
Функция ПолучитьЗначениеНастройки(ИмяНастройки, ДатаЗначения = Неопределено) Экспорт
Если ДатаЗначения = Неопределено Тогда
ДатаЗначения = ТекущаяДатаСеанса();
КонецЕсли;
ВидНастройки = ПолучитьВидНастройки(ИмяНастройки);
Если НЕ ЗначениеЗаполнено(ВидНастройки) Тогда
Возврат Неопределено;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ПС_Настройки.Значение КАК Значение
|ИЗ
| РегистрСведений.ПС_Настройки.СрезПоследних(&ДатаСреза, ВидНастройки = &ВидНастройки) КАК ПС_Настройки";
Запрос.УстановитьПараметр("ДатаСреза", ДатаЗначения);
Запрос.УстановитьПараметр("ВидНастройки", ВидНастройки);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Значение;
КонецФункции
// Записывает значение настройки на указанную дату.
// Период действия не указывается - определяется автоматически:
// значение считается действующим с указанной даты до следующего изменения.
// Если дата не указана - записывается на текущую дату.
//
// Параметры:
// ИмяНастройки - Строка - уникальное имя вида настройки.
// Значение - Булево, Число, Строка, Дата - новое значение настройки.
// ДатаЗначения - Дата - дата установки значения.
// Если не указана - текущая дата.
//
// Пример:
// ПС_РаботаСНастройками.ЗаписатьЗначениеНастройки("УчетнаяПолитикаОрганизации", Истина, Дата(2026, 1, 1));
//
Процедура ЗаписатьЗначениеНастройки(ИмяНастройки, Значение, ДатаЗначения = Неопределено) Экспорт
Если ДатаЗначения = Неопределено Тогда
ДатаЗначения = ТекущаяДатаСеанса();
КонецЕсли;
ВидНастройки = ПолучитьВидНастройки(ИмяНастройки);
Если НЕ ЗначениеЗаполнено(ВидНастройки) Тогда
ВызватьИсключение СтрШаблон("Вид настройки с именем %1 не найден", ИмяНастройки);
КонецЕсли;
Запись = РегистрыСведений.ПС_Настройки.СоздатьМенеджерЗаписи();
Запись.Период = ДатаЗначения;
Запись.ВидНастройки = ВидНастройки;
Запись.Значение = Значение;
Запись.Пользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
Запись.Записать();
КонецПроцедуры
// Получает историю значений настройки за период.
//
// Параметры:
// ИмяНастройки - Строка - уникальное имя вида настройки.
// ДатаНачала - Дата - начало периода истории.
// ДатаОкончания - Дата - конец периода истории. Если не указана - текущая дата.
//
// Возвращаемое значение:
// - ТаблицаЗначений - таблица с колонками:
// * Период - Дата - дата установки значения,
// * Значение - Произвольный - значение настройки,
// * Пользователь - СправочникСсылка.Пользователи - пользователь, изменивший значение.
//
Функция ПолучитьИсториюНастройки(ИмяНастройки, ДатаНачала, ДатаОкончания = Неопределено) Экспорт
Если ДатаОкончания = Неопределено Тогда
ДатаОкончания = ТекущаяДатаСеанса();
КонецЕсли;
ВидНастройки = ПолучитьВидНастройки(ИмяНастройки);
Если НЕ ЗначениеЗаполнено(ВидНастройки) Тогда
Возврат Новый ТаблицаЗначений;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПС_Настройки.Период КАК Период,
| ПС_Настройки.Значение КАК Значение,
| ПС_Настройки.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.ПС_Настройки КАК ПС_Настройки
|ГДЕ
| ПС_Настройки.ВидНастройки = &ВидНастройки
| И ПС_Настройки.Период МЕЖДУ &ДатаНачала И &ДатаОкончания
|
|УПОРЯДОЧИТЬ ПО
| Период";
Запрос.УстановитьПараметр("ВидНастройки", ВидНастройки);
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
// Возвращает вид настройки по имени.
//
// Параметры:
// ИмяНастройки - Строка - уникальное имя вида настройки.
//
// Возвращаемое значение:
// - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек, Неопределено
//
Функция ПолучитьВидНастройки(ИмяНастройки) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ПС_ВидыНастроек.Ссылка КАК Ссылка
|ИЗ
| ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек
|ГДЕ
| ПС_ВидыНастроек.Имя = &Имя";
Запрос.УстановитьПараметр("Имя", ИмяНастройки);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
// Проверяет существование вида настройки.
//
// Параметры:
// ИмяНастройки - Строка - уникальное имя вида настройки.
//
// Возвращаемое значение:
// - Булево - Истина, если вид настройки существует.
//
Функция ВидНастройкиСуществует(ИмяНастройки) Экспорт
Возврат ЗначениеЗаполнено(ПолучитьВидНастройки(ИмяНастройки));
КонецФункции
// Возвращает дерево видов настроек.
//
// Параметры:
// Родитель - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - родительский вид или группа.
//
// Возвращаемое значение:
// - ДеревоЗначений с колонками: Ссылка, Наименование, Имя, Категория
//
Функция ПолучитьВидыНастроек(Родитель = Неопределено) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПС_ВидыНастроек.Ссылка КАК Ссылка,
| ПС_ВидыНастроек.Наименование КАК Наименование,
| ПС_ВидыНастроек.Имя КАК Имя,
| ПС_ВидыНастроек.Категория КАК Категория,
| ПС_ВидыНастроек.Родитель КАК Родитель,
| ПС_ВидыНастроек.ЭтоГруппа КАК ЭтоГруппа
|ИЗ
| ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек
|УПОРЯДОЧИТЬ ПО
| Наименование ИЕРАРХИЯ";
РезультатЗапроса = Запрос.Выполнить();
Дерево = Новый ДеревоЗначений;
Дерево.Колонки.Добавить("Ссылка");
Дерево.Колонки.Добавить("Наименование");
Дерево.Колонки.Добавить("Имя");
Дерево.Колонки.Добавить("Категория");
Если РезультатЗапроса.Пустой() Тогда
Возврат Дерево;
КонецЕсли;
СоответствиеСсылок = Новый Соответствие;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Строка = Неопределено;
Если ЗначениеЗаполнено(Выборка.Родитель) И Выборка.Родитель <> Выборка.Ссылка Тогда
Строка = СоответствиеСсылок[Выборка.Родитель];
КонецЕсли;
Если Строка = Неопределено Тогда
Строка = Дерево.Строки.Добавить();
Иначе
Строка = Строка.Строки.Добавить();
КонецЕсли;
ЗаполнитьЗначенияСвойств(Строка, Выборка, "Ссылка, Наименование, Имя, Категория");
СоответствиеСсылок.Вставить(Выборка.Ссылка, Строка);
КонецЦикла;
Возврат Дерево;
КонецФункции
// Создает новый вид настройки.
//
// Параметры:
// Имя - Строка - уникальное имя для разработчиков (реквизит Имя).
// Наименование - Строка - наименование для пользователей.
// Категория - СправочникСсылка.ПС_КатегорииНастроек - категория.
// Родитель - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - родитель (для иерархии).
//
// Возвращаемое значение:
// - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - созданный вид настройки.
//
Функция СоздатьВидНастройки(Имя, Наименование, Категория = Неопределено, Родитель = Неопределено) Экспорт
Если ВидНастройкиСуществует(Имя) Тогда
ВызватьИсключение СтрШаблон("Вид настройки с именем %1 уже существует", Имя);
КонецЕсли;
ВидНастройкиОбъект = ПланыВидовХарактеристик.ПС_ВидыНастроек.СоздатьЭлемент();
ВидНастройкиОбъект.Имя = Имя;
ВидНастройкиОбъект.Наименование = Наименование;
ВидНастройкиОбъект.Категория = Категория;
Если ЗначениеЗаполнено(Родитель) Тогда
ВидНастройкиОбъект.Родитель = Родитель;
КонецЕсли;
ВидНастройкиОбъект.Записать();
Возврат ВидНастройкиОбъект.Ссылка;
КонецФункции
// Возвращает все значения настроек указанной категории на дату.
//
// Параметры:
// Категория - СправочникСсылка.ПС_КатегорииНастроек - категория.
// ДатаЗначения - Дата - дата, на которую нужны значения. Если не указана - текущая дата.
//
// Возвращаемое значение:
// - ТаблицаЗначений с колонками: ВидНастройки, Имя, Наименование, Значение.
//
Функция ПолучитьНастройкиКатегории(Категория, ДатаЗначения = Неопределено) Экспорт
Если ДатаЗначения = Неопределено Тогда
ДатаЗначения = ТекущаяДатаСеанса();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПС_ВидыНастроек.Ссылка КАК ВидНастройки,
| ПС_ВидыНастроек.Имя КАК Имя,
| ПС_ВидыНастроек.Наименование КАК Наименование
|ИЗ
| ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек
|ГДЕ
| ПС_ВидыНастроек.Категория = &Категория
| И ПС_ВидыНастроек.ЭтоГруппа = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПС_НастройкиСрезПоследних.ВидНастройки КАК ВидНастройки,
| ПС_НастройкиСрезПоследних.Значение КАК Значение
|ИЗ
| РегистрСведений.ПС_Настройки.СрезПоследних(&ДатаСреза, ) КАК ПС_НастройкиСрезПоследних";
Запрос.УстановитьПараметр("Категория", Категория);
Запрос.УстановитьПараметр("ДатаСреза", ДатаЗначения);
РезультатПакета = Запрос.ВыполнитьПакет();
ВидыНастроек = РезультатПакета[0].Выгрузить();
СрезЗначений = РезультатПакета[1].Выгрузить();
Результат = ВидыНастроек.Скопировать();
Результат.Колонки.Добавить("Значение");
Результат.ЗаполнитьЗначения(Неопределено, "Значение");
СоответствиеЗначений = Новый Соответствие;
Для Каждого Стр Из СрезЗначений Цикл
СоответствиеЗначений.Вставить(Стр.ВидНастройки, Стр.Значение);
КонецЦикла;
Для Каждого Стр Из Результат Цикл
Стр.Значение = СоответствиеЗначений[Стр.ВидНастройки];
КонецЦикла;
Возврат Результат;
КонецФункции
// Возвращает все значения настроек указанной группы иерархии (с вложениями) на дату.
//
// Параметры:
// ГруппаИерархии - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - группа (ЭтоГруппа = Истина).
// ДатаЗначения - Дата - дата. Если не указана - текущая дата.
//
// Возвращаемое значение:
// - ТаблицаЗначений с колонками: ВидНастройки, Имя, Наименование, Значение.
//
Функция ПолучитьНастройкиГруппыИерархии(ГруппаИерархии, ДатаЗначения = Неопределено) Экспорт
Если ДатаЗначения = Неопределено Тогда
ДатаЗначения = ТекущаяДатаСеанса();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПС_ВидыНастроек.Ссылка КАК ВидНастройки,
| ПС_ВидыНастроек.Имя КАК Имя,
| ПС_ВидыНастроек.Наименование КАК Наименование
|ИЗ
| ПланВидовХарактеристик.ПС_ВидыНастроек КАК ПС_ВидыНастроек
|ГДЕ
| ПС_ВидыНастроек.Ссылка В ИЕРАРХИИ (&ГруппаИерархии)
| И ПС_ВидыНастроек.ЭтоГруппа = ЛОЖЬ
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПС_НастройкиСрезПоследних.ВидНастройки КАК ВидНастройки,
| ПС_НастройкиСрезПоследних.Значение КАК Значение
|ИЗ
| РегистрСведений.ПС_Настройки.СрезПоследних(&ДатаСреза, ) КАК ПС_НастройкиСрезПоследних";
Запрос.УстановитьПараметр("ГруппаИерархии", ГруппаИерархии);
Запрос.УстановитьПараметр("ДатаСреза", ДатаЗначения);
РезультатПакета = Запрос.ВыполнитьПакет();
ВидыНастроек = РезультатПакета[0].Выгрузить();
СрезЗначений = РезультатПакета[1].Выгрузить();
Результат = ВидыНастроек.Скопировать();
Результат.Колонки.Добавить("Значение");
Результат.ЗаполнитьЗначения(Неопределено, "Значение");
СоответствиеЗначений = Новый Соответствие;
Для Каждого Стр Из СрезЗначений Цикл
СоответствиеЗначений.Вставить(Стр.ВидНастройки, Стр.Значение);
КонецЦикла;
Для Каждого Стр Из Результат Цикл
Стр.Значение = СоответствиеЗначений[Стр.ВидНастройки];
КонецЦикла;
Возврат Результат;
КонецФункции
// Создает новую категорию настроек.
//
// Параметры:
// Наименование - Строка - наименование категории.
// Родитель - СправочникСсылка.ПС_КатегорииНастроек - родительская категория (для иерархии).
//
// Возвращаемое значение:
// - СправочникСсылка.ПС_КатегорииНастроек - созданная категория.
//
Функция СоздатьКатегориюНастроек(Наименование, Родитель = Неопределено) Экспорт
КатегорияОбъект = Справочники.ПС_КатегорииНастроек.СоздатьЭлемент();
КатегорияОбъект.Наименование = Наименование;
Если ЗначениеЗаполнено(Родитель) Тогда
КатегорияОбъект.Родитель = Родитель;
КонецЕсли;
КатегорияОбъект.Записать();
Возврат КатегорияОбъект.Ссылка;
КонецФункции
// Возвращает категорию настроек по наименованию.
//
// Параметры:
// Наименование - Строка - наименование категории.
//
// Возвращаемое значение:
// - СправочникСсылка.ПС_КатегорииНастроек, Неопределено
//
Функция ПолучитьКатегориюНастроек(Наименование) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ПС_КатегорииНастроек.Ссылка КАК Ссылка
|ИЗ
| Справочник.ПС_КатегорииНастроек КАК ПС_КатегорииНастроек
|ГДЕ
| ПС_КатегорииНастроек.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", Наименование);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат Неопределено;
КонецЕсли;
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="2c7f4ed7-f2bb-4edd-af50-051b9016ce99">
<name>ПС_РаботаСНастройками</name>
<synonym>
<key>ru</key>
<value>Работа с настройками</value>
</synonym>
<server>true</server>
<externalConnection>true</externalConnection>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" xmlns:mdclassExtension="http://g5.1c.ru/v8/dt/metadata/mdclass/extension" uuid="e54f5730-cc1f-46aa-ad69-5f4b7eb6d81b">
<name>ПС_ПериодическиеНастройки</name>
<synonym>
<key>ru</key>
<value>Периодические настройки</value>
</synonym>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:ConfigurationExtension">
<defaultRunMode>Checked</defaultRunMode>
<usePurposes>Checked</usePurposes>
<managedApplicationModule>Extended</managedApplicationModule>
<sessionModule>Extended</sessionModule>
<externalConnectionModule>Extended</externalConnectionModule>
<defaultLanguage>Checked</defaultLanguage>
<interfaceCompatibilityMode>Checked</interfaceCompatibilityMode>
<compatibilityMode>Checked</compatibilityMode>
<defaultRoles>Extended</defaultRoles>
</extension>
<containedObjects classId="9cd510cd-abfc-11d4-9434-004095e12fc7" objectId="9a21aa54-b265-42ec-b6c8-4cf9bcf9df0a"/>
<containedObjects classId="9fcd25a0-4822-11d4-9414-008048da11f9" objectId="c5d4e0a6-647f-4e37-b728-309909a21697"/>
<containedObjects classId="e3687481-0a87-462c-a166-9f34594f9bba" objectId="9a35609d-d228-4371-a2ea-4d1fb3aa3939"/>
<containedObjects classId="9de14907-ec23-4a07-96f0-85521cb6b53b" objectId="3c05dbd2-a135-4a58-a9fd-0bbebf736433"/>
<containedObjects classId="51f2d5d8-ea4d-4064-8892-82951750031e" objectId="6cf9f1c4-7f56-4910-85e9-2abec477c2ea"/>
<containedObjects classId="e68182ea-4237-4383-967f-90c1e3370bc7" objectId="af9e6371-06aa-459b-8066-553f1d8173ad"/>
<containedObjects classId="fb282519-d103-4dd3-bc12-cb271d631dfc" objectId="672f0efc-9a1b-4d08-9ae6-1148fa00ce9e"/>
<keepMappingToExtendedConfigurationObjectsByIDs>true</keepMappingToExtendedConfigurationObjectsByIDs>
<namePrefix>ПС_</namePrefix>
<configurationExtensionCompatibilityMode>8.3.24</configurationExtensionCompatibilityMode>
<configurationExtensionPurpose>Customization</configurationExtensionPurpose>
<defaultRunMode>ManagedApplication</defaultRunMode>
<usePurposes>PersonalComputer</usePurposes>
<scriptVariant>Russian</scriptVariant>
<defaultRoles>Role.ПС_ЗаписьНастроек</defaultRoles>
<defaultLanguage>Language.Русский</defaultLanguage>
<interfaceCompatibilityMode>TaxiEnableVersion8_2</interfaceCompatibilityMode>
<compatibilityMode>8.3.24</compatibilityMode>
<languages uuid="6e182ed6-0db9-4652-8d59-83bf3fd20a37" extendedConfigurationObject="35d4deef-5b93-4c11-ac42-07beb390c332">
<name>Русский</name>
<objectBelonging>Adopted</objectBelonging>
<extension xsi:type="mdclassExtension:LanguageExtension">
<extendedConfigurationObject>Checked</extendedConfigurationObject>
<languageCode>Checked</languageCode>
</extension>
<languageCode>ru</languageCode>
</languages>
<roles>Role.ПС_ЗаписьНастроек</roles>
<roles>Role.ПС_ЧтениеНастроек</roles>
<commonModules>CommonModule.ПС_Описание</commonModules>
<commonModules>CommonModule.ПС_РаботаСНастройками</commonModules>
<definedTypes>DefinedType.ПС_ТипыЗначенийНастроек</definedTypes>
<catalogs>Catalog.Пользователи</catalogs>
<catalogs>Catalog.ПС_КатегорииНастроек</catalogs>
<informationRegisters>InformationRegister.ПС_Настройки</informationRegisters>
<chartsOfCharacteristicTypes>ChartOfCharacteristicTypes.ПС_ВидыНастроек</chartsOfCharacteristicTypes>
</mdclass:Configuration>
@@ -0,0 +1,14 @@
// @strict-types
#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
@@ -0,0 +1,22 @@
// @strict-types
#Область ОписаниеПеременных
#КонецОбласти
#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
#Область Инициализация
#КонецОбласти
@@ -0,0 +1,18 @@
// @strict-types
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:DefinedType xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="abb991f7-d419-4ea8-b69e-994176627872">
<producedTypes>
<containerType typeId="3a4e4d73-2850-46b9-baba-36088affb563" valueTypeId="41967344-c1b2-4416-b53d-b28bb972d490"/>
</producedTypes>
<name>ПС_ТипыЗначенийНастроек</name>
<synonym>
<key>ru</key>
<value>Типы значений настроек</value>
</synonym>
<type>
<types>Boolean</types>
<types>String</types>
<types>Date</types>
<types>Number</types>
<numberQualifiers>
<precision>10</precision>
</numberQualifiers>
<stringQualifiers>
<length>10</length>
</stringQualifiers>
<dateQualifiers>
<dateFractions>Date</dateFractions>
</dateQualifiers>
</type>
</mdclass:DefinedType>
@@ -0,0 +1,30 @@
// @strict-types
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,38 @@
// @strict-types
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОписаниеПеременных
#КонецОбласти
#Область ПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область ОбработчикиСобытий
// Код процедур и функций
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
// Код процедур и функций
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
// Код процедур и функций
#КонецОбласти
#Область Инициализация
#КонецОбласти
#КонецЕсли
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:InformationRegister xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="82791e02-561a-436f-bae0-04ffdcde5d5c">
<producedTypes>
<selectionType typeId="ab396bb5-f953-46af-a1d7-988e9fe2a2fe" valueTypeId="33e57f83-ee0d-4d50-bd33-678986344e50"/>
<listType typeId="fb83933f-76df-4825-91d9-2beb835da0da" valueTypeId="a46deaf4-4102-42c6-8e01-5d1361530288"/>
<managerType typeId="a52bbeaa-06f1-4d17-af72-7e008616bd89" valueTypeId="05bea5fc-5edc-48ba-bf9d-44cc6306f63e"/>
<recordSetType typeId="ecb73e8d-c62e-4c20-b0b7-9a0bd536e08a" valueTypeId="1f0408a8-4742-4177-9173-c73311fca305"/>
<recordKeyType typeId="ec5cf820-acfd-4bb9-9a8d-5ef387c682c3" valueTypeId="31c5b88e-918e-48bb-830e-afd924917423"/>
<recordType typeId="c6356f35-874c-409a-882b-7ef71fa3b1e8" valueTypeId="10fda04f-1d27-4b53-b2aa-4089d572bc14"/>
<recordManagerType typeId="b0643cf5-241d-42c7-b791-edc079cd335a" valueTypeId="4652707e-1886-484a-9263-b37fef2ff9b4"/>
</producedTypes>
<name>ПС_Настройки</name>
<synonym>
<key>ru</key>
<value>Настройки</value>
</synonym>
<useStandardCommands>true</useStandardCommands>
<editType>InDialog</editType>
<informationRegisterPeriodicity>Day</informationRegisterPeriodicity>
<mainFilterOnPeriod>true</mainFilterOnPeriod>
<dataLockControlMode>Managed</dataLockControlMode>
<resources uuid="26d0414c-8ca8-4e0f-a9c1-2a9f3abfb3bd">
<name>Значение</name>
<synonym>
<key>ru</key>
<value>Значение</value>
</synonym>
<type>
<types>DefinedType.ПС_ТипыЗначенийНастроек</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<linkByType>
<field>InformationRegister.ПС_Настройки.Dimension.ВидНастройки</field>
</linkByType>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</resources>
<resources uuid="6f966bfc-a3ff-4854-b301-32773a77bb6f">
<name>Пользователь</name>
<synonym>
<key>ru</key>
<value>Пользователь</value>
</synonym>
<type xsi:type="mdclass:MdObjectReferenceTypeDescription">
<mdObject>Catalog.Пользователи</mdObject>
</type>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillValue xsi:type="core:UndefinedValue"/>
</resources>
<dimensions uuid="11033b58-5e8d-415e-8562-98e7599ea47e">
<name>ВидНастройки</name>
<synonym>
<key>ru</key>
<value>Вид настройки</value>
</synonym>
<type>
<types>ChartOfCharacteristicTypesRef.ПС_ВидыНастроек</types>
</type>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<dataHistory>Use</dataHistory>
<fillFromFillingValue>true</fillFromFillingValue>
<fillValue xsi:type="core:UndefinedValue"/>
<master>true</master>
<mainFilter>true</mainFilter>
</dimensions>
</mdclass:InformationRegister>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
<setForNewObjects>true</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
</Rights>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Role xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="16d57104-0d38-4280-8f53-866e360fef01">
<name>ПС_ЗаписьНастроек</name>
<synonym>
<key>ru</key>
<value>Запись настроек</value>
</synonym>
</mdclass:Role>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
<setForNewObjects>false</setForNewObjects>
<setForAttributesByDefault>true</setForAttributesByDefault>
<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
</Rights>
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:Role xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ec0cd1a6-07d7-4e31-94ab-bf9bedbf0152">
<name>ПС_ЧтениеНастроек</name>
<synonym>
<key>ru</key>
<value>Чтение настроек</value>
</synonym>
</mdclass:Role>