1с установка параметров сеанса
Параметы сеанса - это общие объекты конфигурации. Они предназначены для использования в ограничении доступа к данным для текущего сеанса (но могут применяться и для других целей). Их значения сохраняются в течение данного сеанса 1С:Предприятия. Использование параметров сеанса позволяет снизить время доступа к данным при ограничении доступа на уровне записей и полей.
Система прав доступа позволяет описывать наборы прав, соответствующие должностям пользователей или виду деятельности. Структура прав определяется конкретным прикладным решением.
Кроме этого, для объектов, хранящихся в базе данных (справочники, документы, регистры и т.д.) могут быть определены права доступа к отдельным полям и записям. Например, пользователь может оперировать документами (накладными, счетами и т.д.) определенных контрагентов и не иметь доступа к аналогичным документам других контрагентов.
Для реализации ограничения прав доступа в прикладных решениях предназначены специальные объекты конфигурации - Роли.
Все права, поддерживаемые системой 1С:Предприятие, можно разделить на две большие группы: основные и интерактивные. Основные права описывают действия, выполняемые над элементами данных системы или над всей системой в целом и проверяются всегда, независимо от способа обращения к данным. Интерактивные права описывают действия, которые могут быть выполнены пользователем интерактивно. Соответственно проверяются они только при выполнении интерактивных операций стандартными способами, причем в клиент-серверном варианте все проверки прав (кроме интерактивных) выполняются на сервере.
Основные и интерактивные права взаимосвязаны. Например, существует основное право Удаление, которому соответствуют два интерактивных права: Интерактивное удаление и Интерактивное удаление помеченных. Если пользователю запрещено Удаление, то и все интерактивные "удаления" также будут запрещены для него. В то же время, если пользователю разрешено Интерактивное удаление помеченных, это значит, что Удаление ему также разрешается.
Кроме того, основные права могут зависеть друг от друга. В результате образуются довольно сложные цепочки взаимосвязей, которые отслеживаются системой автоматически: как только разработчик снимает разрешение на какое-либо право, система сама снимает разрешения на все права, которые зависят от этого права. Так же наоборот, при установке какого-либо права разработчиком, система сама устанавливает все права, от которых это право зависит.
Например, для того, чтобы пользователь имел право Итерактивное удаление помеченных, ему необходимо обладать интерактивными правом Редактирование. Это право, в свою очередь, требует наличия интерактивного права Просмотр.
Право Интерактивное удаление помеченных требует наличия основного права Удаление. Интерактивное право Редактирование требует наличия основного права Изменение. Интерактивное право Просмотр требует наличия основного права Чтение.
Кроме этого основные права Изменение и Удаление требуют наличия основного права Чтение.
Среди действий над объектами, хранящимися в базе данных (справочниками, документами и т.д.), есть действия, отвечающие за чтение или изменение информации, хранящейся в базе данных. К таким действиям относятся:
- чтение - получение записей или их фрагментов из таблицы базы данных;
- добавление - добавление новых записей без изменения существующих;
- изменение - изменение существующих записей;
- удаление - удаление некоторых записей без внесения изменений в оставшиеся.
Для этих действий в процессе настройки ролей могут быть заданы дополнительные условия на данные (ограничение доступа к данным). В этом случае над конкретным объектом, хранимым в базе данных, может быть выполнено запрошенное действие только в том случае, если ограничение доступа к данным для данных этого объекта принимает значение "истина". Аналогичные условия могут быть заданы и для таблиц базы данных, не имеющих объектной природы (регистров).
Вообще, параметры сеанса - это некоторые значения, которые хранятся для конкретной клиентской сессии. Это может быть "имя пользователя" или "список регионов", доступных для конкретного пользователя. Контекст доступности параметров сеанса - "сервер". Поэтому устанавливать и читать их мы можем только на "сервере". Следует отметить, что параметры сеанса кэшируются, т.е. хранятся в памяти клиентского приложения, и поэтому к ним обеспечивается достаточно быстрый доступ.
Что касается области их применения, то в основном это разграничение доступа на уровне детальных записей. Допустим есть список контрагентов, которые сегментированы по различным регионам. Пользователю при входе устанавливается значение параметра сеанса "Регион" (допустим это "62" и "51") и далее в запросах на органичение доступа система может обращаться к параметрам сеанса напрямую -
При этом в самих запросах значение параметров сеанса не устанавливается. Система точно знает, что это параметр сеанса.
Посмотрим на типы данных, которые могут принимать параметры сеансов:
Среди доступных типов мы можем видеть не только стандартные типы (ссылочные типы, примитивные типы данных), но и такие типы как "Фиксированный массив", "Фиксированная структура", "Фиксированное соответствие".
Каким образом выглядит технология работы с параметрами сеанса. Во-первых их нужно инициализировать. Выполняется это в модуле, который исполняется самым первым при старте системы - это "Модуль сеанса". Здесь есть стандартный обработчик события - "УстановкаПараметровСеанса()".
Важно отметить, что "Модуль сеанса" всегда исполняется в привилегированном режиме, т.е. контроля прав в этом модуле не существует.
Вообще, касательно привелегированных модулей:
Существует возможность назначения привилегированных модулей. В такие модули могут быть перенесены операции, использующие данные, на которые у текущего пользователя нет прав.
Например, пользователю могут быть назначены права, позволяющие создавать новый документ. Однако никаких прав на регистр, в котором этот документ создает движения при проведении, пользователю не дано. В такой ситуации процедура проведения документа может быть вынесена в привилегированный модуль, который выполняется на сервере без проверки прав. В результате, несмотря на то, что соответствующий регистр для пользователя недоступен, пользователь все же сможет проводить созданные им документы.
Привилегированный режим исполнения кода, аналогичный режиму работы кода привилегированных модулей, можно включить/выключить средствами встроенного языка. Для этого в глобальном контексте предусмотрена процедура УстановитьПривилегированныйРежим(), а также функция ПривилегированныйРежим(), которая позволяет определить, включен привилегированный режим, или нет.
Использование привилегированного режима позволяет, во-первых, ускорить работу, так как не будут накладываться ограничения на доступ к данным, а во-вторых, позволяет выполнять операции с данными от лица пользователей, которым эти данные недоступны.
Привилегированный режим рекомендуется использовать тогда, когда с логической точки зрения нужно отключить проверку прав, или когда можно отключить проверку прав, чтобы ускорить работу. Допустимо использовать привилегированный режим тогда, когда работа с данными от лица некоторого пользователя не нарушает установленные для этого пользователя права доступа.
Обычно значения параметров сеанса берутся из служебных объектов, например из регистра сведения считываются значения, соответствующие пользователю, входящему в систему. В дальнейшем мы можем обращаться к параметрам сеанса, т.е. читать значения, перезаписывать в любом серверном программном коде. Следует отметить, что если мы попытаемся обратиться к параметрам сеанса, значения которых не инициализировано, то произойдет ошибка.
Поскольку параметры сеанса являются объектами конфигурации, мы можем выставить для них права доступа:
Для каждой роли мы можем указать возможность получения параметра сеанса и возможность установки. Таким образом для обычного пользователя мы можем указать, что он может параметры сеанса получать, т.е. обращаться к нему, но поменять значение параметра сеанса он не сможет. Это очень важный момент, поскольку при ограничении прав доступа на уровне записей мы позволяем себе опираться на значения которые содержатся в параметрах сеанса. И если вдруг пользователь смог бы превысить свои полномочия, т.е. переустановит параметры сеанса (в нашем случае добавить еще один регион), он мог бы увидеть те документы, которые не должен.
Причем здесь важно понимать, что при старте приложения в модуле сеанса у нас параметры сеанса спокойно инициализируются, даже не смотря на то, что у нас нет прав на его изменение. Это особенность привелегированного режима, т.е. контроля прав доступа в нем нет.
Мы рассмотрели объект параметры сеанса и может возникнуть такой соблазн, использовать параметры сеанса как глобальные переменные. Действительно ведь у нас, те переменные, которые объявляются в модуле управляемого приложения доступны только на "клиенте", а как таковых серверных глобальных переменны у нас нет. А параметры сеанса как раз доступны на "сервере".
Например, при создании документа, неплохо было бы знать его автора. Создаем новый параметр и задаем ему имя "ТекущийПользователь":
Заполняем свойства параметра:
Теперь нам необходимо задать параметру имя текущего пользователя. Открываем модуль сеанса:
здесь мы из метаданных берем уникальный идентификатор пользователя, находим по этому реквизиту пользователя из справочника "Пользователи" и присваеваем ссылку пользователя нашему параметру "ТекущийПользователь".
Теперь чтобы воспользоваться параметром "ТекущийПользователь" на клиенте, создадим процедуру обертку которую можно будет вызвать откуда угодно. Я эту процедуру поместил в общий модуль "ОМПользователи":
разместить на форме и добавить событие " ПриСозданииНаСервере ":
Но все таки не следует использовать параметры сеанса именно как глобальные переменные. Поскольку они у нас храняться на сервере т. е. они расширяют сеансовые данные нашего рабочего процесса и у параметров сеанса расширенный интерфейс, в отличии от переменных. По сути объект предназначен для решения другой задачи. Во первых параметры сеанса жестко типизированы, т.е. мы можем указать тип данных, который хранится в параметре сеанса и изменить его будет нельзя. Кроме этого на уровне параметров сеанса настраиваются права доступа. И также основное предназначение параметров сеанса это использование обращения к ним в запросах по ограничению доступа на уровне записей. Поэтому тот объект, с которым мы имеем дело имет достаточно большой командный интерфейс, и использовать его как глобальную переменную было бы не правильно.
Хотелось бы обратить внимание на еще одну особенность, связанную с параметрами сеанса. Речь будет идти о "Модуле сеанса" и конкретно о событии - "УстановкаПараметровСеанса". Мы знаем, что это событие вызывается в момент старта приложения. Кроме того контекст "Модуля сеанса" это "сервер" и соответственно может возникнуть желание выполнять какие - либо действия, выполняемые на сервере, при старте приложения. Но делать этого категорически нельзя, потому что обработчик события "УстановкаПараметровСеанса" вызывается не только при старте приложения, но и в момент чтения параметра сеанса, который не был инициализирован.
Конфа нетленка. Мобильное приложение. Создал параметр сеанса "Пользователь".
При попытке присвоить ему значение из кода вываливается ошибка, несоответствие типов. Судя по всем параметр сеанса неинициализирован.
Иду читать документацию от 1С .
И нифига ничего не понимаю..
В модуле сеанса следующий код.
(21) Спасибо вам большое за терпимость, вроде как заработало. Код инициализации прилагаю ниже. А знаете в чем был затык? Тип данных строки сменил с фиксированной на переменную..
Можете дальше перейти в эту вызываемую процедуру и посмотреть пример инициализации.
Но это инициализация по требованию (при первом обращении к параметру).
Если параметр нужно инициализировать сразу при запуске приложения, то это можно сделать:
То, что там понятно.. Но как. Я у меня нет БСП. Почему 1С не смогла добавить в документацию нормальный пример с кодом.
(4) она и не обязана была это делать. В конфигурацию добавлена библиотека БПО. Она просто добавила свои методы инициализации.
Можно по аналогии добавить свои методы инициализации, а можно инициализировать безусловно.
В месте выделенном добавить код, в котором присвоить нужное значение параметру сеанса.
Если делать так как вы говорите не проинициализировав параметр то имеем.
: Ошибка при установке значения атрибута контекста (Пользователь)
ПараметрыСеанса.Пользователь = ВыбранноеЗначение.Ref_Key;
по причине:
Несоответствие типов
(7) это ошибка не инициализации, а ошибка в том, что ВыбранноеЗначение.Ref_Key имеет совсем другой тип нежели СправочникСсылка.Пользователи (или какой там тип используете в параметре сеанса).
И я же где сказал инициализировать параметр сеанса? А у вас в модуле формы идет присвоение.
Инициализировать можно только в модуле сеанса. После инициализации уже можно менять и в других модулях.
так я потом и создал топик, что не понимаю, как мне в модуле сеанса приложения моему параметру пользователь, присвоить пустую строку.
(13) в отладчике смотрите значение еще не инициализированного параметра сеанса. Отладчик в данном случае работает как получение значение параметра сеанса.
Мне вот интересно почему в мобильном приложении 1С, при старте процедуры Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
в модуле сеанса.
ИменаПараметровСеанса - имеет тип неопределено.
Разве там не должны быть параметры сеанса из конфигурации.
УстановкаПараметровСеанса (SessionParametersSetting)
Синтаксис:
УстановкаПараметровСеанса()
Параметры:
Тип: Массив, Неопределено.
Массив устанавливаемых идентификаторов параметров сеанса, которые нужно инициализировать, если обработчик вызывается перед использованием неинициализированных параметров сеанса.
Неопределено, если обработчик события вызывается системой при начале сеанса.
Описание:
Событие предназначено для инициализации параметров сеанса.
Вызывается системой:
при установке соединения с информационной базой до вызова всех остальных обработчиков. Значение параметра "Параметры сеанса" - Неопределено;
перед фактическим использованием значений параметров сеанса, которые не были инициализированы ранее. В этом случае значением параметра "Параметры сеанса" является массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после выполнения обработчика хотя бы один из перечисленных параметров сеанса остается неинициализированным, то генерируется исключение .
Параметры сеансы 1С 8.3 — переменная, в которой хранится значение нужного параметра на время сеанса пользователя. По сути, это некая глобальная переменная, привязанная к сеансу текущего пользователя.
Использование параметров сеанса в 1С
Параметры сеанса задаются только программно, универсального интерфейса для установки параметров сеанса в системе нет. Обычно они задаются при старте системы, в «Модуле сеанса». Если параметр не определен, во время обращения к нему будет вызвана ошибка.
Пример установки параметра сеанса 1С
Рассмотрим типичный пример использования параметров сеанса — установку текущего пользователя. Пример я возьму из подготовки к специалисту по платформе.
В древе метаданных создадим новый параметр сеанса — ТекущийПользователь, назначим ему тип — СправочникСсылка.ФизическиеЛица:
В модуле сеанса создадим процедуру, в которой будет определяться текущий параметр сеанса:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
После этого в любом месте конфигурации Вы можете узнать, кто же у нас текущий пользователь, просто используя конструкцию «ПараметрыСеанса.ТекущийПользователь».
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
При нажатии на кнопку "Заполнить" - выполняется заполнение текущих инициализированных параметров сеанса.
При изменении значения, устанавливается флаг, сигнализирующий о изменении параметра сеанса.
При нажатии кнопки "Записать", выполняется установка измененных значений параметров сеанса.
Тестирование проводилось на платформе 8.3.7
Обработка имеет обычную и управляемую форму.
Открывается как внешний файл.
Специальные предложения
Просмотры 9983
Загрузки 17
Рейтинг 2
Создание 16.03.17 20:42
Обновление 16.03.17 20:42
№ Публикации 598590
Конфигурация Конфигурации 1cv8
Операционная система Не имеет значения
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)
Код открыт Не указано
См. также
Просмотр прав пользователей Промо
Обработка наглядно показывает права доступа конкретного пользователя или роли к конкретному объекту метаданных.
1 стартмани
19.10.2012 37531 307 NILS2009 17
Снятие блокировки на редактирование справочников в типовых конфигурациях
В процессе работы с типовыми решениями от 1С приходится постоянно разблокировать реквизиты справочников и некоторых ПВХ. Это, прямо скажем, утомляет, когда работа идет в тестовой базе. Публикация позволяет снять ограничение либо совсем, либо в рамках сеанса. Работает полноценно платформе версии не ниже 8.3.16 и конфигурации ERP 2.5. Работает также на 8.3.14 и ERP 2.4 с ограничениями.
1 стартмани
28.03.2022 3443 8 kser87 15
Локальная файловая система из 1С, как это работает.
Внешняя обработка для работы с файлами из 1С по типу FAR или Norton Commander, Total Commander и немного занудной философии. Работает 8.3.15 и выше. Работает в тонком, толстом, Web и мобильном клиенте. Поставляется отдельным файлом можно включить куда угодно, зависит только от платформы 1С.
1 стартмани
17.09.2020 28368 11 Patriot1S 9
PowerShell из 1С: создание пользователя Active Directory
Пример создания пользователя Active Directory с помощью PowerShell из 1С.
3 стартмани
27.08.2019 16363 30 wowik 14
Отключение доступа уволенным пользователям Промо
Давно хотели навести порядок в пользователях? Надоело, что в списке мешаются давно уволенные сотрудники? Тогда эта обработка для Вас!
3 стартмани
15.10.2013 57966 112 VBod 17
Копирование настроек профилей группы доступа из одной базы в другую. 1С: Предприятие 8.3 БП 3.0, ЗУП 3.1, ЕРП 2.4 и т.д.
Иногда необходимо состав ролей профиля группы доступа перенести из одной базы 1С в другую быстро, а если таких баз 20-30, то сидеть и выбирать нужные роли руками это проблематично и долго. Для этого была разработана данная обработка. Проверялось на релизах: Платформа 1С: Предприятие 8.3.14.1630; 1С: ЗУП 3.1.9.229 и выше; 1С: ERP 2.4.5.54.
1 стартмани
02.08.2019 8549 109 mityushov.vv 7
Подбираем пароли пользователей базы 1С с помощью HashKiller.
2 стартмани
12.07.2019 9128 25 laperuz 5
Доступ пользователей только к собственным документам/сделкам
Расширение блокирует доступ менеджеров по продажам к чужим документам. Ограничивает работу менеджера только собственными сделками, не позволяя просматривать сделки других менеджеров. Действует на счета, счета-фактуры и реализации.
2 стартмани
25.05.2019 13581 24 denmax 13
Включение и выключение регистрации отказа в доступе если "У пользователя не достаточно прав над операцией с базой данных". Промо
Включает (выключает) регистрацию событий отказа доступа в журнале регистрации.
1 стартмани
12.01.2011 42113 372 nexts 32
БСП: Быстрая проверка прав доступа на объект метаданных (УФ)
Чем старше и новее становятся конфигурации на базе платформы 1С, тем больше в них ролей. Плюс к этому, к типовым ролям зачастую прибавляются нетиповые. Обработка позволяет быстро посмотреть, каким ролям выдано то или иное право на указанный объект метаданных.
1 стартмани
18.04.2019 6670 21 Skin123 0
PasswordHashViewer - просмотр хэшей пользовательских паролей
Программа для просмотра хэшей паролей пользователей в файловых и клиент-серверных базах 1С. Зачем это нужно? Для их проверки на криптостойкость.
1 стартмани
25.02.2019 10009 15 GeraltSnow 6
Обезличивание базы ЗУП 3.1.*
Обработка по перемешиванию/скрытию конфиденциальной информации в базе ЗУП.
1 стартмани
05.02.2019 15968 93 Skin123 18
Права пользователей Промо
Кросс-таблица прав пользователей (подсистема "Управление доступом")
1 стартмани
10.05.2016 33356 105 inspam 4
Наводим порядок в Active Directory с помощью ЗУП / ЗИКГУ 3.1 (идентификация, отключение и актуализация учетных записей пользователей)
Продолжаем использовать ЗУП 3.1 совместно с LDAP во имя автоматизации работы системного администратора. В этот раз займемся аудитом учетных записей. Обработка производит сопоставление учетной записи с данными сотрудников из ЗУП, причем с учетом недавних событий (для перехода на ЗУП 3.1 чаще всего используется рекомендованный перенос, не включающий уволенных сотрудников) есть возможность использовать объединенные с помощью COM-соединения данные ЗУП 2.5 и ЗУП 3.1. Также в данной обработке есть возможность массовой корректировки, заполнения данных и отключения учетных записей. Перед использованием обработки для душевного спокойствия необходимо сделать резервную копию Active Directory любым удобным способом. Протестировано на ЗУП 3.1.6 - 3.1.8.
Параметры сеанса в 1С — это переменные, которые доступны в течение всего сеанса пользователя в любом месте конфигурации. Например, в параметрах сеанса можно хранить текущего пользователя, или имя компьютера.
Для примера, создадим параметр сеанса, который назовем ИмяТекущегоКомпьютера., в этом параметре будем хранить имя текущего компьютера. Для этого нужно выделить ветку «Параметры сеанса» в группе «Общие» дерева метаданных, вызвать контекстное меню, и в контекстном меню выполнить команду «Добавить».
В правой части экрана откроется палитра свойств параметра сеанса, где следует указать название, синоним и тип (в моем случае это будет тип Строка).
На всякий случай, проверим, есть ли права у нужной роли на этот параметр сеанса. Посмотреть на роли параметра сеанса можно в окне «Дополнительно». Откроем его: выделим созданный параметр сеанса, вызовем контекстное меню и выполним команду «Дополнительно».
В окне «Дополнительно» интересует закладка «Права», в которой следует проверить флажки у прав Получение и Установка для нужной роли.
Получение – это право на получение значения параметра сеанса;
Установка – это право на установку значения параметра сеанса;
Параметр сеанса создан, теперь необходимо написать алгоритм установки значения в этот параметра сеанса. Делается это в модуле сеанса.
Модуль сеанса в 1С
Модуль сеанса необходим для установки значений параметров сеанса. Мы уже создали единственный параметр сеанса в конфигурации – «Имя текущего компьютера».
Научимся устанавливать значение в этот параметр сеанса при запуске сеанса пользователя. Делается это в модуле сеанса. Откроем его. Модуль сеанса открывается достаточно просто: выделяется самый верхний узел конфигурации, вызывается контекстное меню, в котором необходимо выполнить команду «Открыть модуль сеанса».
Впоследствии откроется модуль сеанса, в котором нас интересует один-единственный обработчик событий «УстановкаПараметровСеанса». Создадим процедуру – обработчик события, для этого после открытия модуля сеанса выполним команду «Процедуры и функции», которая расположена в меню «Текст» главного меню (модуль должен быть активен).
В открывшемся окне нужно выделить единственную процедуру и нажать на кнопку «Перейти».
Будет создана процедура «УстановкаПараметровСеанса»
В этой процедуре параметру сеанса ИмяТекущегоКомпьютера установим имя текущего компьютера.
Проверим, как работает установка параметров сеанса. Для этого создадим обработку, форму обработки, и на управляемой форме обработки создадим реквизит ИмяКомпьютера, который разместим на форме в виде поля надписи.
Следующим шагом, создадим событие формы обработки ПриСозданииНаСервере, и в этом событии реквизиту формы обработки будем присваивать значение параметра сеанса.
Осталось проверить работу обработки.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
Читайте также: