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

  • @user-lv6iu2ek6x
    @user-lv6iu2ek6xАй бұрын

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

  • @ababinok

    @ababinok

    Ай бұрын

    1cmycloud.com/console/help/element/5.0/api/element/ru/Std/SettingsStorages/StandardSettingsStorage_ru.html#найтипоключам Вообще в документации четко указано дословно "Метод поиска объекта хранилища настройки для текущего(!) пользователя по ключам". Т.е. должен точно искать по текущему пользователю. Провёл эксперимент у себя. Действительно, НайтиПоКлючам находит "чужую" настройку. Обсужу завтра в группе ТГ.

  • @ababinok

    @ababinok

    Ай бұрын

    Неожиданно неприятный баг. Я даже запросом напрямую реализовал получение настройки с явным отбором по текущему пользователю, и он всё равно берёт чужую настройку 🤷‍♂️ И при записи сделал явное указание пользователя, записывает настройку другому пользователю. P.S. у обычного такая же беда.

  • @user-lv6iu2ek6x

    @user-lv6iu2ek6x

    Ай бұрын

    @@ababinok я пока так решил НайденнаяНастройка = СтандартноеХранилищеНастроек.НайтиПоКлючам(ГигаЧат.ВернутьИдТекущегоПользователя(), КЛЮЧ_НАСТРОЙКИ_СЕКРЕТ)

  • @ababinok

    @ababinok

    Ай бұрын

    Сегодня провёл ещё эксперимент. Похоже, если с одной машины/браузера входить под разными пользователями, он на какое-то время где-то кэширует текущего пользователя. Поэтому криво работал поиск по ключам и брал закешированного текущего пользователя. Однако если завершать работу через Аутентификация.ЗавершитьТекущийСеанс(), то при входе с нового пользователя у меня уже не наблюдается проблема.

  • @user-lv6iu2ek6x

    @user-lv6iu2ek6x

    Ай бұрын

    @@ababinok ну никто не завершает так работу)

Келесі