1
0
mirror of https://github.com/firstBitSportivnaya/PSSL.git synced 2025-08-10 22:21:34 +02:00

Добавлена очистка основных реквизитов настроек интеграции (#292)

* Добавлена очистка основных реквизитов настроек интеграции
This commit is contained in:
Ivan Smirnov
2025-07-14 13:28:31 +03:00
committed by GitHub
parent aa0006f8c2
commit 2262512302
3 changed files with 171 additions and 3 deletions

View File

@@ -113,11 +113,23 @@
КонецПроцедуры
```
Идентификатор настройки каждого объекта должен быть уникальным в рамках одного типа метаданных.
После инициализации и заполнения предопределенных элементов в коде, необходимо зайти в пользовательский режим в формы списков соответствующих справочников и нажать на кнопку "Заполнить предопределенные" в следующей последовательности: интегрируемые системы, настройки интеграции, интеграционные потоки:
![image](images/ЗаполнениеПредопределенныхПодсистемыИнтеграции.png)
Для тестовых баз рекомендуется очистка ключевых реквизитов настроек интеграции для исключения случайных срабатываний в регламентных заданиях и других процессах. Для этого при загрузке копии необходимо вызвать метод
ОчиститьОсновныеРеквизитыНастроекИнтеграции() справочника пбп_НастройкиИнтеграции. Для систем на основании БСП можно расширить процедуру ЗапретитьРаботуСВнешнимиРесурсами из общей формы БлокировкаРаботыСВнешнимиРесурсами при помощи механизма расширений:
```bsl
&НаСервереБезКонтекста
&После("ЗапретитьРаботуСВнешнимиРесурсами")
Процедура пбп_ЗапретитьРаботуСВнешнимиРесурсами()
Справочники.пбп_НастройкиИнтеграции.ОчиститьОсновныеРеквизитыНастроекИнтеграции();
КонецПроцедуры
```
### Служебный программный интерфейс
Как видно из прошлого примера (заполнения предопределенных значений настройки интеграции), для поиска интегрируемой системы по идентификатору настройки вызывается метод общего модуля пбп_ИнтеграцииСлужебный. Помимо данной функции в этом модуле служебного программного интерфейса реализована следующая логика и методы:

View File

@@ -1 +1,107 @@

// Библиотека проектных подсистем для упрощения разработки архитектуры на 1С: Предприятие 8,
// включая доработку типовых конфигураций.
//
// Copyright First BIT company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// URL: https://github.com/firstBitSportivnaya/PSSL/
//
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
// Процедура очищает основные реквизиты настроек в справочнике, например для тестовых баз и т.д.
Процедура ОчиститьОсновныеРеквизитыНастроекИнтеграции() Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| пбп_НастройкиИнтеграции.Ссылка КАК Ссылка
|ИЗ
| Справочник.пбп_НастройкиИнтеграции КАК пбп_НастройкиИнтеграции
|ГДЕ
| НЕ пбп_НастройкиИнтеграции.ЭтоГруппа";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ОчищаемыеРеквизиты = Новый Структура("СтрокаПодключения");
КоллекцияОшибок = Новый Массив;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Попытка
НастройкаИнтеграцииОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
ЗаполнитьЗначенияСвойств(НастройкаИнтеграцииОбъект, ОчищаемыеРеквизиты);
УстановитьПривилегированныйРежим(Истина);
пбп_Переадресация.УдалитьДанныеИзБезопасногоХранилища(ВыборкаДетальныеЗаписи.Ссылка);
УстановитьПривилегированныйРежим(Ложь);
НастройкаИнтеграцииОбъект.ОбменДанными.Загрузка = Истина;
НастройкаИнтеграцииОбъект.Записать();
Исключение
// Обеспечиваем отключение привилегированного режима при ошибке
УстановитьПривилегированныйРежим(Ложь);
ИнформацияОбОшибке = ИнформацияОбОшибке();
// Собираем информацию об ошибке для последующего логирования
ОписаниеОшибки = Новый Структура;
ОписаниеОшибки.Вставить("Ссылка", ВыборкаДетальныеЗаписи.Ссылка);
ОписаниеОшибки.Вставить("ПредставлениеДляПользователя",
ОбработкаОшибок.ПредставлениеОшибкиДляПользователя(ИнформацияОбОшибке));
ОписаниеОшибки.Вставить("ПодробноеОписание",
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке));
КоллекцияОшибок.Добавить(ОписаниеОшибки);
КонецПопытки;
КонецЦикла;
// Логирование результатов обработки
Если КоллекцияОшибок.Количество() > 0 Тогда
ИмяСобытия = НСтр("ru = 'Очистка реквизитов настроек интеграции'");
ТекстОшибки = СтрШаблон("Обработано записей: %1, из них с ошибками: %2%3%3",
ВыборкаДетальныеЗаписи.Количество(),
КоллекцияОшибок.Количество(),
Символы.ПС);
Для Каждого ОписаниеОшибки Из КоллекцияОшибок Цикл
ТекстОшибки = ТекстОшибки + СтрШаблон("Настройка: %1%2%3%4%2",
ОписаниеОшибки.Ссылка,
Символы.ПС,
ОписаниеОшибки.ПредставлениеДляПользователя,
Символы.ПС + "Техническая информация: " + ОписаниеОшибки.ПодробноеОписание);
КонецЦикла;
пбп_Переадресация.ДобавитьСообщениеДляЖурналаРегистрации(
ИмяСобытия,
УровеньЖурналаРегистрации.Ошибка,
Метаданные.Справочники.пбп_НастройкиИнтеграции,
ВыборкаДетальныеЗаписи.Ссылка,
ТекстОшибки);
КонецЕсли;
КонецПроцедуры
#КонецОбласти // ПрограммныйИнтерфейс
#КонецЕсли

View File

@@ -438,6 +438,56 @@
КонецФункции
// Аналог метода БСП. Удаляет конфиденциальные данные в безопасное хранилище.
// Вызывающий код должен самостоятельно устанавливать привилегированный режим.
//
// Безопасное хранилище недоступно для чтения пользователям (кроме администраторов),
// а доступно только коду, который делает обращения только к своей части данных и
// в том контексте, который предполагает чтение или запись конфиденциальных данных.
//
// Параметры:
// Владелец - ПланОбменаСсылка
// - СправочникСсылка
// - Строка - ссылка на объект информационной базы,
// представляющий объект-владелец сохраняемого пароля или уникальная строка(до 128 символов).
// - Массив - ссылки на объекты информационной базы для удаления данным по нескольким владельцам.
// Ключи - Строка - содержит список имен удаляемых данных, указанных через запятую.
// Неопределено - удаляет все данные.
//
// Пример:
// Процедура ПередУдалением(Отказ)
//
// // Проверка значения свойства ОбменДанными.Загрузка отсутствует, так как удалять данные
// // из безопасного хранилища нужно даже при удалении объекта при обмене данными.
//
// УстановитьПривилегированныйРежим(Истина);
// ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища(Ссылка);
// УстановитьПривилегированныйРежим(Ложь);
//
// КонецПроцедуры
//
Процедура УдалитьДанныеИзБезопасногоХранилища(Знач Владелец, Знач Ключи = Неопределено) Экспорт
Результат = ПереадресацияМодуляОбщегоНазначения();
Если Результат.МодульСуществует Тогда
Результат.Модуль.УдалитьДанныеИзБезопасногоХранилища(Владелец, Ключи);
Возврат;
КонецЕсли;
пбп_ПереадресацияКлиентСервер.Проверить(ЗначениеЗаполнено(Владелец),
пбп_ПереадресацияКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Недопустимое значение параметра %1 в %2.
|параметр должен содержать ссылку; передано значение: %3 (тип %4).'"),
"Владелец", "ОбщегоНазначения.УдалитьДанныеИзБезопасногоХранилища", Владелец, ТипЗнч(Владелец)));
// Загулшка.
// Перенаправление в хранилище общих настроек, не используется регистр сведений БезопасноеХранилищеДанных
ХранилищеОбщихНастроекУдалить(Владелец, Ключи, Неопределено);
Возврат;
// Загулшка
КонецПроцедуры
// Аналог метода БСП. Формирует и выводит сообщение, которое может быть связано с элементом управления формы.
//
// В фоновом задании длительной операции, если вызов выполнен вне транзакции,
@@ -667,8 +717,8 @@
КлючНастроек,
ИмяПользователя);
КонецПроцедуры
КонецПроцедуры
#КонецОбласти
// Аналог метода БСП. Возвращает структуру, содержащую значения реквизитов, прочитанные из информационной базы по ссылке на объект.