Необычное решение для хранения настроек внешней обработки

25.03.22

Разработка - БСП (Библиотека стандартных подсистем)

При написании внешней обработки, например для импорта данных из сторонней базы данных используя HTTP-сервисы, необходимо сохранять настройки соединения с HTTP. Подсказали оригинальный способ сохранения настроек с БД. При использовании "ХранилищеОбщихНастроек" все сильно зависит от прав пользователя. Чтобы читать настройки, сохраненные другим пользователем, необходимы права: "АдминистрированиеДанных". Как-то не хочется раздавать всем пользователям права администратора. Помогает БСП.

Покажу на примере сохранения настроек соединения с HTTP сервером.

Форма настроек будет выглядеть примерно так:

 

 

Сохранение параметров:

В обработчике кнопки "Записать и закрыть" пишем следующее:

&НаКлиенте
Процедура ЗаписатьИЗакрыть(Команда)
	ЗаписатьИЗакрытьНаСервере();
	Закрыть();
КонецПроцедуры

&НаСервере
Процедура ЗаписатьИЗакрытьНаСервере()
	НастройкиПодключения = Новый Структура;
	НастройкиПодключения.Вставить("Сервер",Объект.Сервер);
	НастройкиПодключения.Вставить("БазаДанных",Объект.БазаДанных);
	НастройкиПодключения.Вставить("Пользователь",Объект.Пользователь);
	НастройкиПодключения.Вставить("Пароль",Объект.Пароль);
	
	Файл = Справочники.Файлы.НайтиПоНаименованию("НастройкиИмпортИзБазыИсточника");
	Хранилище = Новый ХранилищеЗначения(НастройкиПодключения, Новый СжатиеДанных(9));
	Если НЕ ЗначениеЗаполнено(Файл) Тогда
		СправочникФайл = Справочники.Файлы.СоздатьЭлемент();
	Иначе
		СправочникФайл = Файл.ПолучитьОбъект();
	КонецЕсли;
	СправочникФайл.Автор = ПараметрыСеанса.ТекущийПользователь;
	СправочникФайл.ФайлХранилище = Хранилище;
	СправочникФайл.ТекстХранилище = Хранилище;
	СправочникФайл.ВладелецФайла = Справочники.ПапкиФайлов.Шаблоны;
	СправочникФайл.ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВИнформационнойБазе;
	СправочникФайл.Наименование = "НастройкиИмпортИзИсточника";
	СправочникФайл.ДатаСоздания = ТекущаяДата();
	СправочникФайл.ДатаМодификацииУниверсальная = ТекущаяДата();
	СправочникФайл.Записать();
	
	ЗаписьФайла = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьМенеджерЗаписи();
	ЗаписьФайла.Файл = СправочникФайл.Ссылка;
	ЗаписьФайла.ДвоичныеДанныеФайла = Хранилище;
	ЗаписьФайла.Записать(Истина);
КонецПроцедуры

Создаем структуру сохраняемых параметров. и записываем в БД в файлы. Если настройки в базе уже есть, переписываем. 

Чтение настроек:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПриОткрытииНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПриОткрытииНаСервере()
	Настройки = ЧтениеНастроек();
	Если Настройки <> Неопределено Тогда
		Объект.Сервер = Настройки.Сервер;
		Объект.БазаДанных = Настройки.БазаДанных;
		Объект.Пользователь = Настройки.Пользователь;
		Объект.Пароль = Настройки.Пароль;
	КонецЕсли;
КонецПроцедуры

Чтение настроек из хранилища файлов:

&НаСервере
Функция ЧтениеНастроек()
	Файл = Справочники.Файлы.НайтиПоНаименованию("НастройкиИмпортИзИсточника");
	Если ЗначениеЗаполнено(Файл) тогда
		ТаблицаНастроек = Файл.ФайлХранилище.Получить();
		Возврат ТаблицаНастроек;
	КонецЕсли;
	Возврат Неопределено;
КонецФункции

В итоге получается механизм, который записывает и читает настройки для внешней обработки независимый от прав пользователя.

Решения Оригинально

См. также

Шаблон многопоточного выполнения фонового задания

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример шаблона для многопоточного выполнения фонового задания на основе БСП. Шаблоны сделаны для процедуры и функции.

2 стартмани

03.05.2024    869    13    Hitcher    2    

8

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    2594    dimanich70    8    

15

Заполнение поля адреса в своей обработке [БСП]

Механизмы платформы 1С БСП (Библиотека стандартных подсистем) Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Небольшая шпаргалка по функциям БСП касательно адреса. Так скажем, еще один способ помимо https://infostart.ru/1c/articles/1060970/

12.02.2024    952    FilippovRI    0    

17

Расширяем возможности дополнительных обработок и настраиваем их отладку

БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уже не одна веб-страница исписана знаниями о дополнительных обработках, как создать, как подключить. Есть масса вариантов, как их можно отладить. Я разобрался в кишках работы библиотеки и покажу, как можно расширить возможности дополнительных отчетов, а также покажу удобный способ отладки.

07.02.2024    2974    YA_418728146    11    

49

1С:БСП Дополнительные реквизиты и сведения

БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Бесплатно (free)

В этой статье расскажем об архитектуре, использовании и особенностях реализации подсистемы «Свойства» из инструментария разработчика «1С:Библиотека стандартных подсистем» (1С: БСП).

19.01.2024    8507    PROSTO-1C    5    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SlavaKron 25.03.22 19:55 Сейчас в теме
независимый от прав пользователя
Всё-таки нужна роль ДобавлениеИзменениеПапокИФайлов.
2. dhurricane 25.03.22 20:53 Сейчас в теме
Зачем использовать "необычное решение" для хранения настроек, если есть обычное, задокументированное. :-)
veslav; DrAku1a; IlyaSR; +3 Ответить
3. ixijixi 1813 25.03.22 21:24 Сейчас в теме
4. winapi 60 25.03.22 22:01 Сейчас в теме
Это можно любой объект метаданных с реквизитом типа хранилище значения взять, но зачем об этом писать статью?
5. dmitry_sizonenko 24 27.03.22 01:49 Сейчас в теме
А установка привилегированного режим в процедуре не поможет?
6. AlexeyRaevsky 10 27.03.22 12:51 Сейчас в теме
Народ, я всего 4 месяца плотно сижу на 1С (внедряем Комплексную автоматизацию), поэтому может и баян. Может и не нужно никому. Но мне решение показалось оригинальным.
DrAku1a; mrChOP93; +2 Ответить
7. EvgeniuXP 01.04.22 10:58 Сейчас в теме
Использовать привилегированный режим при чтении и сохранении.
Оставьте свое сообщение