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

25.03.22

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

Синтакс-помощник БСП - cправочник по библиотеке стандартных подсистем. В состав справочника входит описание экспортных процедур и функций, размещенных в областях кода ПрограммныйИнтерфейс БСП.

1800 руб.

21.11.2024    158    1    0    

2

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

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1129    PROSTO-1C    0    

13

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

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    1007    PROSTO-1C    4    

12

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

В статье рассмотрим пошаговую инструкцию создания дополнительного отчета с фоновым формированием результата.

04.10.2024    1856    MadRave    11    

24

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

Пример отслеживания прогресса фонового выполнения дополнительной обработки с использованием программного интерфейса длительных операций БСП.

10.09.2024    1849    MadRave    1    

17

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

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1267    n_mezentsev    10    

8

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

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4125    John_d    10    

52

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

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5379    PROSTO-1C    12    

52
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SlavaKron 25.03.22 19:55 Сейчас в теме
независимый от прав пользователя
Всё-таки нужна роль ДобавлениеИзменениеПапокИФайлов.
2. dhurricane 25.03.22 20:53 Сейчас в теме
Зачем использовать "необычное решение" для хранения настроек, если есть обычное, задокументированное. :-)
veslav; DrAku1a; IlyaSR; +3 Ответить
3. ixijixi 1913 25.03.22 21:24 Сейчас в теме
4. winapi 61 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 Сейчас в теме
Использовать привилегированный режим при чтении и сохранении.
Оставьте свое сообщение