1С:Предприятие.Элемент. 10. Сохранение настроек форм (ХранилищеНастроек + КонтрактСущности)
Ғылым және технология
В этом видео мы реализовали универсальный механизм для сохранения настроек форм.
Использовали новые объекты Элемента:
- ХранилищеНастроек
- КонтрактСущности
Содержание:
00:00 Вступление
00:22 Вспоминаем, что было
01:43 Создаем ХранилищеНастроек "НастройкиФорм"
03:37 Реализация методов Сохранить и Получить
09:45 Применяем сохранение/восстановление на форме
12:45 Предпосылки к использованию контракта сущности
14:50 Несколько слов о контрактах
16:20 Создаем контракт сущности и дорабатываем механизм на его использование
19:00 Назначаем справочнику тип контракта сущности
22:00 Анализ потенциальных проблем
24:30 Доработка метода Получить с учетом ожидаемого типа
28:40 Итоги
Пікірлер: 7
Провел эксперимент для стандартного хранилища: НайтиПоКлючам ищет конкретно настройку и ключ без учета текущего пользователя. В результате если, например, в ключ не "подмешивать" ууид пользователя то падает на ошибке дублей после сохранения под другим пользователем. У обычного хранилища интересно такая же беда?
@ababinok
Ай бұрын
1cmycloud.com/console/help/element/5.0/api/element/ru/Std/SettingsStorages/StandardSettingsStorage_ru.html#найтипоключам Вообще в документации четко указано дословно "Метод поиска объекта хранилища настройки для текущего(!) пользователя по ключам". Т.е. должен точно искать по текущему пользователю. Провёл эксперимент у себя. Действительно, НайтиПоКлючам находит "чужую" настройку. Обсужу завтра в группе ТГ.
@ababinok
Ай бұрын
Неожиданно неприятный баг. Я даже запросом напрямую реализовал получение настройки с явным отбором по текущему пользователю, и он всё равно берёт чужую настройку 🤷♂️ И при записи сделал явное указание пользователя, записывает настройку другому пользователю. P.S. у обычного такая же беда.
@user-lv6iu2ek6x
Ай бұрын
@@ababinok я пока так решил НайденнаяНастройка = СтандартноеХранилищеНастроек.НайтиПоКлючам(ГигаЧат.ВернутьИдТекущегоПользователя(), КЛЮЧ_НАСТРОЙКИ_СЕКРЕТ)
@ababinok
Ай бұрын
Сегодня провёл ещё эксперимент. Похоже, если с одной машины/браузера входить под разными пользователями, он на какое-то время где-то кэширует текущего пользователя. Поэтому криво работал поиск по ключам и брал закешированного текущего пользователя. Однако если завершать работу через Аутентификация.ЗавершитьТекущийСеанс(), то при входе с нового пользователя у меня уже не наблюдается проблема.
@user-lv6iu2ek6x
Ай бұрын
@@ababinok ну никто не завершает так работу)