commit e6058577c90ad1e6b09a7e7d560a636c6897f53a Author: tsvetkoff Date: Tue Jul 28 09:31:42 2026 +0500 Первая версия diff --git a/НастройкиПериодическиеЗначения/.project b/НастройкиПериодическиеЗначения/.project new file mode 100644 index 0000000..9928f69 --- /dev/null +++ b/НастройкиПериодическиеЗначения/.project @@ -0,0 +1,18 @@ + + + НастройкиПериодическиеЗначения + + + + + + org.eclipse.xtext.ui.shared.xtextBuilder + + + + + + org.eclipse.xtext.ui.shared.xtextNature + com._1c.g5.v8.dt.core.V8ExtensionNature + + diff --git a/НастройкиПериодическиеЗначения/.settings/org.eclipse.core.resources.prefs b/НастройкиПериодическиеЗначения/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..4824b80 --- /dev/null +++ b/НастройкиПериодическиеЗначения/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/НастройкиПериодическиеЗначения/DT-INF/PROJECT.PMF b/НастройкиПериодическиеЗначения/DT-INF/PROJECT.PMF new file mode 100644 index 0000000..f73062e --- /dev/null +++ b/НастройкиПериодическиеЗначения/DT-INF/PROJECT.PMF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Runtime-Version: 8.5.1 +Base-Project: 101_ЦМСЧ_ЗиКГУ diff --git a/НастройкиПериодическиеЗначения/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo b/НастройкиПериодическиеЗначения/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo new file mode 100644 index 0000000..d4473df --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/ChartsOfCharacteristicTypes/ПС_ВидыНастроек/ПС_ВидыНастроек.mdo @@ -0,0 +1,45 @@ + + + + + + + + + + + ПС_ВидыНастроек + + ru + П с виды настроек + + true + + Boolean + Number + String + Date + + true + + + 500 + + + + 10 + 100 + + Описание + + ru + Описание + + + String + + 500 + + + + diff --git a/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаИнтеграцииСлой/Module.bsl b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаИнтеграцииСлой/Module.bsl new file mode 100644 index 0000000..e69de29 diff --git a/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаИнтеграцииСлой/ПС_НастройкиСлужбаИнтеграцииСлой.mdo b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаИнтеграцииСлой/ПС_НастройкиСлужбаИнтеграцииСлой.mdo new file mode 100644 index 0000000..b877761 --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаИнтеграцииСлой/ПС_НастройкиСлужбаИнтеграцииСлой.mdo @@ -0,0 +1,12 @@ + + + ПС_НастройкиСлужбаИнтеграцииСлой + + ru + П с настройки служба интеграции слой + + true + true + true + true + diff --git a/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаРаботаСДанными/Module.bsl b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаРаботаСДанными/Module.bsl new file mode 100644 index 0000000..e69de29 diff --git a/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаРаботаСДанными/ПС_НастройкиСлужбаРаботаСДанными.mdo b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаРаботаСДанными/ПС_НастройкиСлужбаРаботаСДанными.mdo new file mode 100644 index 0000000..5955dc7 --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаРаботаСДанными/ПС_НастройкиСлужбаРаботаСДанными.mdo @@ -0,0 +1,11 @@ + + + ПС_НастройкиСлужбаРаботаСДанными + + ru + П с настройки служба работа с данными + + true + true + true + diff --git a/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаСлойМодели/Module.bsl b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаСлойМодели/Module.bsl new file mode 100644 index 0000000..9c490af --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаСлойМодели/Module.bsl @@ -0,0 +1,366 @@ +#Region СлужебныеПроцедурыИФункции + +#Область ПрограммныйИнтерфейс + +// Возвращает признак допустимости значения для вида настройки +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// Значение - Произвольный - проверяемое значение +// +// Возвращаемое значение: +// Булево - Истина, если значение соответствует типу вида настройки +// +Функция ЗначениеДопустимо(ВидНастройки, Значение) Экспорт + + Если ВидНастройки.Пустая() Тогда + Возврат Ложь; + КонецЕсли; + + ТипЗначенияНастройки = ВидНастройки.ТипЗначенияХарактеристики; + + Если ТипЗнч(Значение) = Тип("ХранилищеЗначение") Тогда + Значение = Значение.Получить(); + КонецЕсли; + + Возврат ТипЗнч(Значение) <> Тип("Неопределено") И ТипЗнч(Значение) <> Тип("NULL") + И (ТипЗначенияНастройки.СодержитТип(ТипЗнч(Значение)) ИЛИ Значение = Null); + +КонецФункции + +// Проверяет пересечение периодов настроек +// +// Параметры: +// ВидНастройки - СправочникСсылка.ПС_ВидыНастроек - вид настройки +// ДатаНачала - Дата - начало периода +// ДатаОкончания - Дата - окончание периода +// ИсключаемаяЗапись - Неопределено или Массив - запись, исключаемая из проверки (при редактировании) +// +// Возвращаемое значение: +// Булево - Истина, если есть пересечение с существующими записями +// +Функция ЕстьПересечениеПериодов(ВидНастройки, ДатаНачала, ДатаОкончания, ИсключаемаяЗапись = Неопределено) Экспорт + + Если ДатаОкончания < ДатаНачала Тогда + Возврат Ложь; + КонецЕсли; + + НаборЗаписей = РегистрыСведений.ПС_ПериодическиеНастройки.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ВидНастройки.Установить(ВидНастройки); + НаборЗаписей.Прочитать(); + + Для Каждого Запись Из НаборЗаписей Цикл + + Если ИсключаемаяЗапись <> Неопределено И ТипЗнч(ИсключаемаяЗапись) = Тип("Массив") Тогда + Если ИсключаемаяЗапись.Найти(Запись.ДатаНастройки) <> Неопределено Тогда + Продолжить; + КонецЕсли; + КонецЕсли; + + ДатаНачалаСуществ = Запись.ДатаНастройки; + ДатаОкончанияСуществ = Запись.ДатаНастройки; // Периодичность по дням + + Если (ДатаНачала <= ДатаОкончанияСуществ) И (ДатаОкончания >= ДатаНачалаСуществ) Тогда + Возврат Истина; + КонецЕсли; + + КонецЦикла; + + Возврат Ложь; + +КонецФункции + +#КонецОбласти + +#Область ВнутренниеПроцедурыИФункции + +// Валидирует значение настройки перед сохранением +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// Значение - Произвольный - проверяемое значение +// +// Возвращаемое значение: +// Массив - массив сообщений об ошибках +// +Функция ВалидироватьЗначение(ВидНастройки, Значение) + + Ошибки = Новый Массив; + + Если ВидНастройки.Пустая() Тогда + Ошибки.Добавить("Не указан вид настройки"); + Возврат Ошибки; + КонецЕсли; + + Если НЕ ЗначениеДопустимо(ВидНастройки, Значение) Тогда + ТипЗначенияНастройки = ВидНастройки.ТипЗначенияХарактеристики; + Ошибки.Добавить(СтрШаблон("Значение '%1' не соответствует типу вида настройки '%2'", + Значение, ТипЗначенияНастройки)); + КонецЕсли; + + Возврат Ошибки; + +КонецФункции + +// Валидирует период настройки перед сохранением +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// Период - Дата - период настройки +// +// Возвращаемое значение: +// Массив - массив сообщений об ошибках +// +Функция ВалидироватьПериод(ВидНастройки, Период) + + Ошибки = Новый Массив; + + Если Период = '00010101' Тогда + Ошибки.Добавить("Не указан период настройки"); + КонецЕсли; + + Если ВидНастройки.Пустая() Тогда + Ошибки.Добавить("Не указан вид настройки"); + КонецЕсли; + + Возврат Ошибки; + +КонецФункции + +// Валидирует настройку перед сохранением +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// Период - Дата - период настройки +// Значение - Произвольный - значение настройки +// +// Возвращаемое значение: +// Массив - массив сообщений об ошибках +// +Функция ВалидироватьНастройку(ВидНастройки, Период, Значение) + + Ошибки = Новый Массив; + + Ошибки.Добавить(ВалидироватьЗначение(ВидНастройки, Значение)); + Ошибки.Добавить(ВалидироватьПериод(ВидНастройки, Период)); + + Возврат Ошибки; + +КонецФункции + +#КонецОбласти + +#EndRegion + +#Region ПубликуемыеПроцедурыИФункции + +#Область ПрограммныйИнтерфейс + +// Сохраняет настройку с валидацией +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// Период - Дата - период настройки +// Значение - Произвольный - значение настройки +// +// Возвращаемое значение: +// Булево - Истина, если настройка успешно сохранена +// +Функция СохранитьНастройку(ВидНастройки, Период, Значение) Экспорт + + Ошибки = ВалидироватьНастройку(ВидНастройки, Период, Значение); + + Для Каждого Ошибка Из Ошибки Цикл + Если ТипЗнч(Ошибка) = Тип("Массив") И Ошибка.Количество() > 0 Тогда + ВызватьИсключение СтрСоединить(Ошибка, Символы.ПС); + КонецЕсли; + КонецЦикла; + + НаборЗаписей = РегистрыСведений.ПС_ПериодическиеНастройки.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ВидНастройки.Установить(ВидНастройки); + НаборЗаписей.Отбор.Период.Установить(Период); + НаборЗаписей.Прочитать(); + + Если НаборЗаписей.Количество() = 0 Тогда + НоваяЗапись = НаборЗаписей.Добавить(); + Иначе + НоваяЗапись = НаборЗаписей[0]; + КонецЕсли; + + НоваяЗапись.ВидНастройки = ВидНастройки; + НоваяЗапись.Период = Период; + НоваяЗапись.Значение = Новый ХранилищеЗначения(Значение); + + Попытка + НаборЗаписей.Записать(Истина); + Исключение + ВызватьИсключение СтрШаблон("Ошибка при сохранении настройки: %1", ОписаниеОшибки()); + КонецПопытки; + + Возврат Истина; + +КонецФункции + +// Удаляет настройку +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// Период - Дата - период настройки +// +// Возвращаемое значение: +// Булево - Истина, если настройка успешно удалена +// +Функция УдалитьНастройку(ВидНастройки, Период) Экспорт + + НаборЗаписей = РегистрыСведений.ПС_ПериодическиеНастройки.СоздатьНаборЗаписей(); + НаборЗаписей.Отбор.ВидНастройки.Установить(ВидНастройки); + НаборЗаписей.Отбор.Период.Установить(Период); + НаборЗаписей.Прочитать(); + + Если НаборЗаписей.Количество() > 0 Тогда + Попытка + НаборЗаписей.Удалить(НаборЗаписей[0]); + НаборЗаписей.Записать(Истина); + Возврат Истина; + Исключение + ВызватьИсключение СтрШаблон("Ошибка при удалении настройки: %1", ОписаниеОшибки()); + КонецПопытки; + КонецЕсли; + + Возврат Ложь; + +КонецФункции + +// Получает актуальное значение настройки на дату +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// ДатаЗначения - Дата - дата, на которую нужно получить значение (по умолчанию - текущая) +// +// Возвращаемое значение: +// Произвольный - значение настройки или Неопределено +// +Функция ПолучитьАктуальноеЗначение(ВидНастройки, ДатаЗначения = Неопределено) Экспорт + + Если ВидНастройки.Пустая() Тогда + Возврат Неопределено; + КонецЕсли; + + Если ДатаЗначения = Неопределено Тогда + ДатаЗначения = ТекущаяДатаСеанса(); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПериодическиеНастройки.Значение КАК Значение + |ИЗ + | РегистрСведений.ПС_ПериодическиеНастройки КАК ПериодическиеНастройки + |ГДЕ + | ПериодическиеНастройки.ВидНастройки = &ВидНастройки + | И ПериодическиеНастройки.Период <= &ДатаЗначения + | + |УПОРЯДОЧИТЬ ПО + | ПериодическиеНастройки.Период УБЫВ + | + |ОБЪЕДИНИТЬ ВСЕ + | + |ВЫБРАТЬ + | NULL КАК Значение"; + + Запрос.УстановитьПараметр("ВидНастройки", ВидНастройки); + Запрос.УстановитьПараметр("ДатаЗначения", ДатаЗначения); + + РезультатЗапроса = Запрос.Выполнить(); + + Если РезультатЗапроса.Пустой() Тогда + Возврат Неопределено; + КонецЕсли; + + Выборка = РезультатЗапроса.Выбрать(); + + Если Выборка.Следующий() Тогда + Значение = Выборка.Значение; + Если Значение <> Null Тогда + Возврат Значение.Получить(); + КонецЕсли; + КонецЕсли; + + Возврат Неопределено; + +КонецФункции + +// Получает историю изменений настройки +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// ДатаНачала - Дата - начало периода истории (по умолчанию - начало года) +// ДатаОкончания - Дата - окончание периода истории (по умолчанию - текущая дата) +// +// Возвращаемое значение: +// ТаблицаЗначений - таблица с колонками: Период, Значение +// +Функция ПолучитьИсториюНастройки(ВидНастройки, ДатаНачала = Неопределено, ДатаОкончания = Неопределено) Экспорт + + Если ВидНастройки.Пустая() Тогда + Возврат Новый ТаблицаЗначений; + КонецЕсли; + + Если ДатаНачала = Неопределено Тогда + ДатаНачала = НачалоГода(ТекущаяДатаСеанса()); + КонецЕсли; + + Если ДатаОкончания = Неопределено Тогда + ДатаОкончания = ТекущаяДатаСеанса(); + КонецЕсли; + + Запрос = Новый Запрос; + Запрос.Текст = + "ВЫБРАТЬ + | ПериодическиеНастройки.Период КАК Период, + | ПериодическиеНастройки.Значение КАК Значение + |ИЗ + | РегистрСведений.ПС_ПериодическиеНастройки КАК ПериодическиеНастройки + |ГДЕ + | ПериодическиеНастройки.ВидНастройки = &ВидНастройки + | И ПериодическиеНастройки.Период МЕЖДУ &ДатаНачала И &ДатаОкончания + | + |УПОРЯДОЧИТЬ ПО + | ПериодическиеНастройки.Период"; + + Запрос.УстановитьПараметр("ВидНастройки", ВидНастройки); + Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); + Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания); + + РезультатЗапроса = Запрос.Выполнить(); + Результат = РезультатЗапроса.Выгрузить(); + + Для Каждого Строка Из Результат Цикл + Значение = Строка.Значение; + Если Значение <> Null Тогда + Строка.Значение = Значение.Получить(); + КонецЕсли; + КонецЦикла; + + Возврат Результат; + +КонецФункции + +// Проверяет наличие настройки +// +// Параметры: +// ВидНастройки - ПланВидовХарактеристикСсылка.ПС_ВидыНастроек - вид настройки +// ДатаЗначения - Дата - дата проверки (по умолчанию - текущая) +// +// Возвращаемое значение: +// Булево - Истина, если настройка существует +// +Функция НастройкаСуществует(ВидНастройки, ДатаЗначения = Неопределено) Экспорт + + Возврат ПолучитьАктуальноеЗначение(ВидНастройки, ДатаЗначения) <> Неопределено; + +КонецФункции + +#КонецОбласти + +#EndRegion \ No newline at end of file diff --git a/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаСлойМодели/ПС_НастройкиСлужбаСлойМодели.mdo b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаСлойМодели/ПС_НастройкиСлужбаСлойМодели.mdo new file mode 100644 index 0000000..61e4008 --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/CommonModules/ПС_НастройкиСлужбаСлойМодели/ПС_НастройкиСлужбаСлойМодели.mdo @@ -0,0 +1,11 @@ + + + ПС_НастройкиСлужбаСлойМодели + + ru + П с настройки служба слой модели + + true + true + true + diff --git a/НастройкиПериодическиеЗначения/src/Configuration/Configuration.mdo b/НастройкиПериодическиеЗначения/src/Configuration/Configuration.mdo new file mode 100644 index 0000000..68ef1ec --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/Configuration/Configuration.mdo @@ -0,0 +1,54 @@ + + + ПС_ПериодическиеНастройки + + ru + Периодические настройки + + Adopted + + Checked + Checked + Checked + Checked + Notify + Extended + Extended + + true + + 8.3.24 + AddOn + ManagedApplication + PersonalComputer + Russian + 1С + 1.0.0.1 + Language.Русский + + ru + Универсальная библиотека для работы с периодическими настройками + + + ru + Универсальная библиотека для работы с периодическими настройками и значениями + + + TaxiEnableVersion8_2 + 8.3.24 + + Русский + Adopted + + Checked + Checked + + ru + + Subsystem.ПС_НастройкиПериодическиеЗначения + CommonModule.ПС_НастройкиСлужбаСлойМодели + CommonModule.ПС_НастройкиСлужбаРаботаСДанными + CommonModule.ПС_НастройкиСлужбаИнтеграцииСлой + InformationRegister.ПС_ПериодическиеНастройки + ChartOfCharacteristicTypes.ПС_ВидыНастроек + diff --git a/НастройкиПериодическиеЗначения/src/InformationRegisters/ПС_ПериодическиеНастройки/ПС_ПериодическиеНастройки.mdo b/НастройкиПериодическиеЗначения/src/InformationRegisters/ПС_ПериодическиеНастройки/ПС_ПериодическиеНастройки.mdo new file mode 100644 index 0000000..761557c --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/InformationRegisters/ПС_ПериодическиеНастройки/ПС_ПериодическиеНастройки.mdo @@ -0,0 +1,38 @@ + + + + + + + + + + + + ПС_ПериодическиеНастройки + + ru + П с периодические настройки + + Day + + Значение + + ru + Значение + + + ValueStorage + + + + ВидНастройки + + ru + Вид настройки + + + ChartOfCharacteristicTypesRef.ПС_ВидыНастроек + + + diff --git a/НастройкиПериодическиеЗначения/src/Subsystems/ПС_НастройкиПериодическиеЗначения/ПС_НастройкиПериодическиеЗначения.mdo b/НастройкиПериодическиеЗначения/src/Subsystems/ПС_НастройкиПериодическиеЗначения/ПС_НастройкиПериодическиеЗначения.mdo new file mode 100644 index 0000000..dc1bcd5 --- /dev/null +++ b/НастройкиПериодическиеЗначения/src/Subsystems/ПС_НастройкиПериодическиеЗначения/ПС_НастройкиПериодическиеЗначения.mdo @@ -0,0 +1,12 @@ + + + ПС_НастройкиПериодическиеЗначения + + ru + П с настройки периодические значения + + InformationRegister.ПС_ПериодическиеНастройки + CommonModule.ПС_НастройкиСлужбаСлойМодели + CommonModule.ПС_НастройкиСлужбаРаботаСДанными + CommonModule.ПС_НастройкиСлужбаИнтеграцииСлой +