Инициализация и установка параметров сеанса в БСП 2.4
Доброго времени суток!
Самописная конфигурация, БСП.
Требуется кошерным макаром создать и инициализровать некий параметр сеанса, который, во время работы, может изменяться, и по которому будет осуществляться разделение доступа к справочникам и документам.
По аналогии с увиденным, создал новый общий модуль с экспортной процедурой УстановкаПараметровСеанса, в которой нужный параметр заполняется.
В общем модуле "ОбщегоНазначенияПереопределяемый", в процедуре "ПриДобавленииОбработчиковУстановкиПараметровСеанса" вставил код:..
...и ничего не происходит. При проходе по процедуре "УстановкаПараметровСеанса" общего модуля "СтандартныеПодсистемыСервер", при исполнении кода...
...нужная инфа добавляется, как бы, куда надо, однако при проходе по процедуре "ВыполнитьОбработчикиУстановкиПараметровСеанса" того же самого модуля, инициализации не происходит. Вероятнее всего - потому, что вот этот код
... почему-то предполагает инциализацию только того, в название чего была вписана звёздочка. При этом, через shft+f9 можно увидеть, что у такого параметра сеанса, как "ТекущийПользователь" заветной звёздочки нет, однако он, зараза, уж как-то вот инициализируется.
Информации нигде не нашёл. А искал, ой, ну просто до того упорно, что забанили в гугле и поисковике этого сайта. Понятно, что при поиске типа "ПараметрыСеанса." я рано или поздно наткнусь на место, где инициализируется "ТекущийПользователь" и сделаю по аналогии, но вообще очень бы хотелось:
а) Ускорить процесс;
б) По возможности, получить ссылок на благодатные места, где расставляются крыжики над й в разрезе работы с БСП с относительно глубоким проникновением в недра кода.
В чём и прошу тебя поспособствовать, о добрый и эрудированный читатель (и, надеюсь, писатель).
Я же, со своей стороны, уже расчехляю и передёргиваю затвор своего реактивного плюсомёта.
Короче - прошу пояснить, что я делаю не так.
P.S. Насчёт ПС "ТекущийПользователь" - ну, или даже не наткнусь. Навтыкал точек останова просто везде, где только мог, и, не смотря ни на что, ПС "ТекущийПользователь" оказывается установленным аж даже в самой первой точке останова, в которую вляпывается программа. Это какой-то полнейший и неистовый, раздирающий душу в куски WTF.
Самописная конфигурация, БСП.
Требуется кошерным макаром создать и инициализровать некий параметр сеанса, который, во время работы, может изменяться, и по которому будет осуществляться разделение доступа к справочникам и документам.
По аналогии с увиденным, создал новый общий модуль с экспортной процедурой УстановкаПараметровСеанса, в которой нужный параметр заполняется.
В общем модуле "ОбщегоНазначенияПереопределяемый", в процедуре "ПриДобавленииОбработчиковУстановкиПараметровСеанса" вставил код:..
Обработчики.Вставить("ИмяМоегоПараметраСеанса", "ИмяМоегоОбщегоМодуля");
...и ничего не происходит. При проходе по процедуре "УстановкаПараметровСеанса" общего модуля "СтандартныеПодсистемыСервер", при исполнении кода...
ОбработчикиСобственные = Новый Соответствие;
ОбщегоНазначенияПереопределяемый.ПриДобавленииОбработчиковУстановкиПараметровСеанса(ОбработчикиСобственные);
Для Каждого Запись Из ОбработчикиСобственные Цикл
Обработчики.Вставить(Запись.Ключ, Запись.Значение);
КонецЦикла;
...нужная инфа добавляется, как бы, куда надо, однако при проходе по процедуре "ВыполнитьОбработчикиУстановкиПараметровСеанса" того же самого модуля, инициализации не происходит. Вероятнее всего - потому, что вот этот код
Для Каждого Запись Из Обработчики Цикл
Если СтрНайти(Запись.Ключ, "*") > 0 Тогда
КлючПараметра = СокрЛП(Запись.Ключ);
ПараметрыСеансаКлючи.Добавить(Лев(КлючПараметра, СтрДлина(КлючПараметра)-1));
КонецЕсли;
КонецЦикла;
... почему-то предполагает инциализацию только того, в название чего была вписана звёздочка. При этом, через shft+f9 можно увидеть, что у такого параметра сеанса, как "ТекущийПользователь" заветной звёздочки нет, однако он, зараза, уж как-то вот инициализируется.
Информации нигде не нашёл. А искал, ой, ну просто до того упорно, что забанили в гугле и поисковике этого сайта. Понятно, что при поиске типа "ПараметрыСеанса." я рано или поздно наткнусь на место, где инициализируется "ТекущийПользователь" и сделаю по аналогии, но вообще очень бы хотелось:
а) Ускорить процесс;
б) По возможности, получить ссылок на благодатные места, где расставляются крыжики над й в разрезе работы с БСП с относительно глубоким проникновением в недра кода.
В чём и прошу тебя поспособствовать, о добрый и эрудированный читатель (и, надеюсь, писатель).
Я же, со своей стороны, уже расчехляю и передёргиваю затвор своего реактивного плюсомёта.
Короче - прошу пояснить, что я делаю не так.
P.S. Насчёт ПС "ТекущийПользователь" - ну, или даже не наткнусь. Навтыкал точек останова просто везде, где только мог, и, не смотря ни на что, ПС "ТекущийПользователь" оказывается установленным аж даже в самой первой точке останова, в которую вляпывается программа. Это какой-то полнейший и неистовый, раздирающий душу в куски WTF.
По теме из базы знаний
- Пометка тестовой копии рабочей базы через механизм оповещений и раскрашивание форм (Управляемое приложение)
- Универсальные инструменты 1С
- Описание почти всех событий технологического журнала
- Многопоточный CI-контур для 1С c Packer, Vagrant и Jenkins. Часть 1. Описание системы и обзор инструментария
- Поддержка пользователей [Alt+S] (подключаемое расширение)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
1. Ваша экспортная процедура установки параметров должна принимать два параметра - имя параметра и массив установленных параметров. Находиться в серверном модуле. Оптимально в начале устанавливать привилегированный режим.
2. Имя общего модуля указать недостаточно - нужно указывать полный путь к обработчику. То есть
ЗЫ. При "копании" БСП методика очень простая. Сначала читаем документацию, а неочевидные моменты подглядываем в демке. Все, что касается общих моментов, содержится в доке по подсистеме "Базовая функциональность" и "Обновление версии ИБ".
По аналогии с увиденным, создал новый общий модуль с экспортной процедурой УстановкаПараметровСеанса, в которой нужный параметр заполняется.
В общем модуле "ОбщегоНазначенияПереопределяемый", в процедуре "ПриДобавленииОбработчиковУстановкиПараметровСеанса" вставил код:..
Обработчики.Вставить("ИмяМоегоПараметраСеанса", "ИмяМоегоОбщегоМодуля");
В общем модуле "ОбщегоНазначенияПереопределяемый", в процедуре "ПриДобавленииОбработчиковУстановкиПараметровСеанса" вставил код:..
Обработчики.Вставить("ИмяМоегоПараметраСеанса", "ИмяМоегоОбщегоМодуля");
1. Ваша экспортная процедура установки параметров должна принимать два параметра - имя параметра и массив установленных параметров. Находиться в серверном модуле. Оптимально в начале устанавливать привилегированный режим.
2. Имя общего модуля указать недостаточно - нужно указывать полный путь к обработчику. То есть
Обработчики.Вставить("ИмяМоегоПараметраСеанса", "ИмяМоегоОбщегоМодуля.ИмяМоегоОбработчика");
ЗЫ. При "копании" БСП методика очень простая. Сначала читаем документацию, а неочевидные моменты подглядываем в демке. Все, что касается общих моментов, содержится в доке по подсистеме "Базовая функциональность" и "Обновление версии ИБ".
Все оказалось банально просто, пользовательский параметр сеанса добавляется как это описал автор темы, я сделал точно так-же и действительно при запуске параметр не устанавливается, но все добавленные таким образом пользовательские параметры устанавливаются при первом обращении к ним.
т.е. стоит только обратиться к этому параметру в отладчике или в коде, он тут-же устанавливается.
т.е. стоит только обратиться к этому параметру в отладчике или в коде, он тут-же устанавливается.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот