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

25.03.22

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

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

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

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

 

 

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

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

01.03.2024    1282    dimanich70    6    

13

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

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

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

12.02.2024    687    FilippovRI    0    

15

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

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

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

07.02.2024    2351    YA_418728146    11    

40

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

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

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

19.01.2024    5166    PROSTO-1C    5    

45

Бесплатный митап 9 февраля «Библиотеки и фреймворки на 1С и всё, что с этим связано»

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

Митап посвящен вопросам создания, использования и поддержке переиспользуемого кода при разработке решений на платформе 1С:Предприятие 8.

15.01.2024    3799    0    Infostart    0    

20

Шаблоны новых объектов 1С для 1С:Бухгалтерии предприятия

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

Используются для создания новых объектов в конфигурации, чтобы не забыть, что нужно сделать. Сделано на примере 1С:Бухгалтерия предприятия, в других конфигурациях могут быть другие, а могут быть и похожие объекты.

28.12.2023    4832    mrXoxot    11    

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