Способ хранения данных расширения или дополнительной обработки

0. Sedaiko 389 31.05.20 09:54 Сейчас в теме
Описание способа хранения данных расширения или дополнительной обработки в информационной базе с использованием функционала Библиотеки стандартных подсистем.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
3. Sedaiko 389 01.06.20 13:15 Сейчас в теме
(1) Спасибо за комментарий. Для доп.обработок это правильный способ. Но я этот вариант перестал использовать с тех пор, как начал помещаять свои доп.обработки сразу в расширение.
4. dhurricane 01.06.20 13:20 Сейчас в теме
(3) Что тогда Вы используете в качестве владельца сохраняемых данных?
5. Sedaiko 389 01.06.20 13:21 Сейчас в теме
(4)
В качестве измерения Владелец можно использовать ссылку на элемент Плана обмена, Справочника или использовать строку до 128 символов
14. МимохожийОднако 130 07.06.20 08:20 Сейчас в теме
(3) Скинь пример для расширения. Например, создал регистр сведений в расширении и мне его надо сохранить на случай удаления расширения
15. Sedaiko 389 07.06.20 08:53 Сейчас в теме
(14) Если бэкапить регистр сведений - то проще его сериализовать в xml и залить в прикрепленный файл используя подсистему БСП РаботаСФайлами.
А пример расширений не скину - они у меня все под конкретную задачу
16. independ 1130 07.06.20 10:51 Сейчас в теме
(14)
НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей(); 
Строка=ЗначениеВСтрокуВнутр(НаборЗаписей.Прочитать().Выгрузить()); 
МимохожийОднако; +1 Ответить
2. Новиков 291 01.06.20 13:03 Сейчас в теме
Спасибо! Интересный пример с двумя формами :)
13. dsdred 1437 02.06.20 09:49 Сейчас в теме
6. VmvLer 01.06.20 13:36 Сейчас в теме
кто-нить понял, тут надувают грелку или жабу?
7. davdykin 24 01.06.20 17:56 Сейчас в теме
Спасибо, интересно, во-первых обработка с двумя формами, во-вторых кусочек БСП ))
8. json 2677 02.06.20 05:52 Сейчас в теме
Поставил плюс за доступное описание механизма безопасного хранения данных.

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

Почему, например, для внешней обработки я должен использовать безопасное хранилище данных?
В статье сказано, что в этих регистрах информация хранится так, что ее нельзя считать консолью, но ведь и в реквизите ХранилищеНастроек информация хранится в точно таком же виде.
Какие еще аргументы в пользу использования данного механизма с дополнительными обработками?
Получается что данная статья не отвечает на вопрос "зачем?", но отвечает на вопрос "как?".

Скорее этот механизм есть смысл использовать, когда надо хранить пароли, токены для встроенных объектов или я ошибаюсь?
9. Sedaiko 389 02.06.20 06:40 Сейчас в теме
(8) Дополнительные обработки - это в качестве примера работы. На практике в Безопасном хранилище следует хранить токены и пароли, так как от доступен только под полными правами. Обычно я описанное хранилище использую для обработок встроенных в расширение. А помещаю их в расширение для защиты - доступен модуль менеджера, который можно запаролить.
10. PerlAmutor 106 02.06.20 06:43 Сейчас в теме
(8) Внешние печатные формы. У нас много подразделений со своими ответственными лицами (руководители, бухгалтеры и т.д.). При формировании печатных форм, в подвале документа, должны стоять соответствующие расшифровки подписей. Каждый документ из которого формируется печатная форма должен эту информацию как-то хранить. Для этого я делал отдельный регистр настроек печатных форм, где было 3 измерения: Уникальный идентификатор документа, Уникальный идентификатор обработки, Имя параметра и ресурс Значение.

Используя БезопасноеХранилищеДанных можно сделать подобное. В качестве измерения Владелец хранить хэш от комбинации
Уникальный идентификатор документа + уникальное имя внешней печатной формы. В Данные помещать структуру со всеми параметрами.

Для формирования ключей в модуле ОбщегоНазначения из БСП есть замечательная функция:

Функция СократитьСтрокуКонтрольнойСуммой(Строка, МаксимальнаяДлина) Экспорт
	ОбщегоНазначенияКлиентСервер.Проверить(МаксимальнаяДлина >= 32, НСтр("ru = 'Параметр МаксимальнаяДлина не может быть меньше 32';
																		|en = 'The МаксимальнаяДлина parameter cannot be less than 32'"),
		"ОбщегоНазначения.СократитьСтрокуКонтрольнойСуммой");
	
	Результат = Строка;
	Если СтрДлина(Строка) > МаксимальнаяДлина Тогда
		Результат = Лев(Строка, МаксимальнаяДлина - 32);
		ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5);
		ХешированиеДанных.Добавить(Сред(Строка, МаксимальнаяДлина - 32 + 1));
		Результат = Результат + СтрЗаменить(ХешированиеДанных.ХешСумма, " ", "");
	КонецЕсли;
	Возврат Результат;
КонецФункции
Показать


Остается только "склеивать" уникальную комбинацию измерений в одну строку по переданным параметрам и записывать в качестве владельца. В качестве минуса можно отметить факт того, что нельзя запросом получить информацию о том, что в данный момент находится в регистре. Например получить данные только по одному измерению, только те строки, которые используются для одной конкретной обработки. Частично эту проблему можно решить перебором всех строк регистра получая Данные из ХранилищаЗначений и поиском в них какой-то ожидаемой структуры. Но для этого придется писать отдельную функцию и скорость её работы может оставлять желать лучшего.

Так что этот регистр может подойти не для всех случаев.
11. Sedaiko 389 02.06.20 06:47 Сейчас в теме
(10)
получить данные только по одному измерению, только те строки, которые используются для одной конкретной обработки
А чем ПОДОБНО "%"+ИмяОбработки+"%" не подходит?
12. PerlAmutor 106 02.06.20 06:52 Сейчас в теме
(11) Там будет MD5 хэш не превышающий 128 символов вместо "человеческих" строк.
17. Cyberhawk 119 09.07.20 23:46 Сейчас в теме
перед чтением сохраненных данных в функции СохраненыеДанные установим привилегированный режим. В этом случае доступ к настройкам может получить пользователь, в независимости от установленных прав
Только если обработка подключена в небезопасном режиме. Иначе установка привилегированного режима просто будет молча проигноирована.
Оставьте свое сообщение
Вопросы с вознаграждением