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

25.03.22

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

1800 руб.

21.11.2024    3660    16    15    

18

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

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

27.12.2024    3462    PROSTO-1C    15    

43

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

Синтакс-помощник БСП - справочник по Библиотеке Стандартных Подсистем, профессиональный инструмент разработчика с интуитивно понятным интерфейсом. Читайте в статье как использовать все возможности справочника и сделать работу с БСП более комфортной и эффективной.

11.12.2024    3909    gorenski    0    

8

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

За последние лет 5 несколько раз сталкиваюсь с проблемой на разных проектах (в конфигурациях 1С:ERP, 1С:ERP УХ и многих других, основанных на БСП), когда много пользователей (около 30 тысяч) в информационной базе, время добавления доступа для пользователей занимает значительное время. Открытие списка занимает от 10 до 15 секунд, и каждое изменение списка еще примерно столько же.

1 стартмани

10.12.2024    999    Iaskeliainen    2    

7

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

Некоторые нюансы, если вы захотите создавать свои расширения. Доработка отчета "Связанные документы" для отражения документов расширения. Печатные формы с шаблоном Word.

20.11.2024    3355    milkers    3    

12

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

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

24.10.2024    1690    PROSTO-1C    0    

18

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

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

08.10.2024    1376    PROSTO-1C    4    

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