Идентификатор клиента 1с на пользователя или на компьютер
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
1.1. Параметры сеанса предназначены для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже раздел 2.1), а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса.
Примеры параметров сеанса:
- ТекущийПроект – тип СправочникСсылка.Проекты ;
- ОбменДаннымиВключен – тип Булево ;
- РабочееМестоКлиента – тип СправочникСсылка.РабочиеМеста .
Параметры сеанса доступны из встроенного языка 1С:Предприятия , например:
В этом случае, для установки или получения значения параметра сеанса текущий пользователь должен быть наделен соответствующим правом.
Также они могут использоваться в текстах ограничений доступа, например:
ГДЕ Документ.Автор = &ТекущийПользователь
В последнем случае для получения значения параметра сеанса наличия у текущего пользователя соответствующего права не требуется.
1.2. Не рекомендуется использовать параметры сеанса для хранения значений, используемых исключительно в клиентской логике. Поскольку в клиент-серверном варианте 1С:Предприятия параметры сеанса хранятся на сервере, то любое их считывание или изменение в процессе работы на клиенте потребует дополнительного серверного вызова и увеличит объем передаваемых данных с клиента на сервер и обратно.
В таких случаях следует использовать глобальные переменные модуля управляемого приложения (и обычного приложения – для режима обычного приложения, соответственно).
1.3. Также не рекомендуется использовать параметры сеанса для кеширования вычисленных значений, которые многократно используются в серверной бизнес-логике. В таких случаях следует определять функцию в серверном общем модуле с повторным использованием возвращаемых значений. Исключение составляют случаи, когда время вычисления результата функции модуля с повторным использованием возвращаемых значений соизмеримо с периодом сброса платформенного кеша.
Установка параметров сеанса "по требованию"
2.1. Не следует производить инициализацию параметров сеанса при запуске программы, так как:
- не все параметры сеанса запрашиваются из кода конфигурации при запуске программы.
- при работе программы возможно намеренное обнуление значений параметров сеанса из кода на встроенном языке.
Правильным способом установки значений параметров сеанса является установка значений "по требованию" в обработчике УстановкаПараметровСеанса модуля сеанса. Т.е. параметры сеанса должны быть инициализированы только в тот момент, когда к ним происходит первое обращение, как к неустановленным.
Пример установки параметров сеанса "по требованию":
Если ИменаПараметровСеанса = Неопределено Тогда
// Раздел установки параметров сеанса при начале сеанса (ИменаПараметровСеанса = Неопределено)
// Выполняется установка параметров сеанса, которые можно инициализировать
// при начале работы системы
Иначе
// Установка параметров сеанса "по требованию"
// Параметры сеанса, инициализация которых требует обращения к одним и тем же данным
// следует инициализировать сразу группой. Для того, чтобы избежать их повторной инициализации,
// имена уже установленных параметров сеанса сохраняются в массиве УстановленныеПараметры
УстановленныеПараметры = Новый Массив;
Для Каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
УстановитьЗначениеПараметраСеанса(ИмяПараметра, УстановленныеПараметры);
КонецЦикла;
// Установить значения параметров сеанса и возвратить имена установленных параметров сеанса
// в параметре УстановленныеПараметры.
//
// Параметры
// ИмяПараметра – Строка – имя параметра сеанса, который требуется установить (проинициализировать).
// УстановленныеПараметры – Массив – массив, в который добавляются имена
// установленных (проинициализированных) параметров.
//
Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры)
// Если в данном вызове УстановкаПараметровСеанса параметр ИмяПараметра уже
// был установлен – возврат.
Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
Возврат;
КонецЕсли;
Если ИмяПараметра = "ТекущийПользователь" Тогда
ПараметрыСеанса.ТекущийПользователь = ;
ПараметрыСеанса. = ;
УстановленныеПараметры.Добавить(ИмяПараметра);
УстановленныеПараметры.Добавить(" ");
КонецЕсли;
Ребят, как можно получить пользователя информационной базы 1С? Это же не справочник в конфигурации. У меня есть только Пользователь, подскажите как решить такую проблему!
У элемента справочника Пользователи есть идентификатор пользователя ИБ, по нему и можно получить пользователя информационной базы.
Параметры сеансы 1С 8.3 — переменная, в которой хранится значение нужного параметра на время сеанса пользователя. По сути, это некая глобальная переменная, привязанная к сеансу текущего пользователя.
Использование параметров сеанса в 1С
Параметры сеанса задаются только программно, универсального интерфейса для установки параметров сеанса в системе нет. Обычно они задаются при старте системы, в «Модуле сеанса». Если параметр не определен, во время обращения к нему будет вызвана ошибка.
Пример установки параметра сеанса 1С
Рассмотрим типичный пример использования параметров сеанса — установку текущего пользователя. Пример я возьму из подготовки к специалисту по платформе.
В древе метаданных создадим новый параметр сеанса — ТекущийПользователь, назначим ему тип — СправочникСсылка.ФизическиеЛица:
Получите 267 видеоуроков по 1С бесплатно:
В модуле сеанса создадим процедуру, в которой будет определяться текущий параметр сеанса:
После этого в любом месте конфигурации Вы можете узнать, кто же у нас текущий пользователь, просто используя конструкцию «ПараметрыСеанса.ТекущийПользователь».
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Всем привет. Люди подскажите как настроить место кассира. Схема такая: есть главная база и есть РИБ (по рабочему месту), пользователь (кассир), каждый раз формирует новое Рабочее место (с новым ид), и постоянно ругается что не может найти магазин и ккм при входе. Есть какая-нибудь пошаговая иструкция по настройке РМК, обмен работает.Настройка производится в главном или переферийном узле? Где заводится пользователь (кассир)? 1С 8.2 розница 2.0
Установил обнорвление, проблема не исчезла. Также формируются новые места. Решение не найдено. Вот у кого-то анологично было:
Всем добрый день!
Помогите решить проблему.
В 1С:Розница 8.2 при входе в конфигурацию с рабочей станции каждый раз создается новое рабочее место (меняется идентификатор).
Перечитал все форумы, понял что проблема у многих, но нормального решения не нашёл.
Что-то иногда помогает, но через некоторое время ни с того ни с сего опять идентификатор меняется.
Пререустанавливал систему (winXP, разные Win7), менял системный блок компьютера.
Сейчас установил Win7Pro - теперь вообще "поймать" не могу. Каждый раз индентификатор новый и всё.
Но решения нет.. Неужели никто не сталкивался?
На проблемном компьютере - есть файл 1cv8u.pfl - он имеет структуру (запятые и кавычки) - но не содержит букв!
Все права на него даны, его владельцем является текущий пользователь с правами администратора
Маленькое замечание - в windows xp местонахождение = C:\Documents and Settings\\LOCAL SETTINGS\Application Data\1C\1Cv82\1cv8u.pfl
Проблема решилась так:
1. Были просмотрены права на файл - закладка "Безопасность". Можно добавить роль "Все" с полными правами.
2. Файл был удален.
3. После этого 1с его создала и заполнила.
Если это не поможет - берёте файл pfl с другой машины, запоминаете guid рабочего места.
Открываете файл в блокноте, меняете гайд на запомненный, схоронить (ниже пример файла):
Попробовал отредактировать, удалить и т.д. - не помогло :(((
Есть еще варианты борьбы с "пладящимися рабочими местами"?
Тут нас интересуют вот эти строки:
СистемнаяИнформация = Новый СистемнаяИнформация();
СписокРМ = НайтиРабочиеМестаПоИД(ВРег(СистемнаяИнформация.ИдентификаторКлиента));
Проверьте, что у вас возвращает эта функция. Всегда ли один и тот же идентификатор?
Справка по параметру ИдентификаторКлиента
СистемнаяИнформация (SystemInfo)
ИдентификаторКлиента (ClientID)
Использование: Только чтение.
Описание:
Тип: УникальныйИдентификатор.
Содержит уникальный идентификатор клиента.
Для данного компьютера и данного пользователя операционной системы идентификатор один, вне зависимости от информационной базы и пользователя информационной базы.
Примечание:
Из-за особенностей реализации для разных браузеров на одной клиентской машине идентификатор будет разным.
Тут стоит обратить внимание, что идентификатор берется из ОС. Маловероятно, конечно, что у вас с правами пользователя ОС проблемы (свой профиль он читать всегда может), но мало ли.
Кстати, это может быть баг платформы. Какую версию используете?
+1, к предыдущему оратору.
От себя добавлю, что:
СписокРМ = НайтиРабочиеМестаПоИД(ВРег(СистемнаяИнформация.ИдентификаторКлиента)); - ищет по верхнему регистру рабочие места, а по факту мы видим нижний регистр. Можно поиграться с этим моментом.
Ну и неплохо было бы узнать версию ОС. Можно создать внешнюю обработку для получения вручную ID клиента вначале работы, затем в середине дня и в конце рабочего дня. Ну и проанализировать какой гайд будет в итоге, сравнить с pfl файлом.
Операционка win 7 sp1 Версия конфы 2.0.4.5
пробовал на 2 машинах, одно и тоже, в главной базе таких глюков нет, только в подчиненной..
оу! розница от Раруса. там на 2.0.3.17 был переход с 1.0.7.х с лютыми косяками (в т.ч. с рабочими местами).
в версии 2.0.4.5 - добавлена поддержка Торговое оборудование по технологии «1С-Рарус».
тут я бессилен. конфы нет, чтобы поковыряться:)
(13) mike999, там лежат 2 обновления. установить не получилось.
(20) mike999, проверить права на каталог, залить pfl с заведомо рабочей машины, убрать русские буквы из имени
пользователя (создать нового пользователя - Sergey) и пробовать на нём (админ -> опытный пользователь -> пользователь), заменить "отучалку". Т.к. она может менять каждый раз ID самой видны?!
Причем теперь даже не знаю какая версия лучше. 2.0.3.17 или 2.0.4.5 (весит в 2 раза больше) и кажется немного притормаживает..
(14) mike999, это апдейты на типовую?
тут ещё важно понимать почему каждый раз системная информация получает новый идентификатор.
Возможно в самой ОС "что-то" меняется?! подключается-отключается оборудование, есть "отучалка" активации.
в моей практике был случай когда подключал КПК в режиме синхронизации с аутлуком - ключ хасп не работал по сети:)
Файл 2.0.3.17 сама конфа, 2.0.4.5 апдейт. Операционка голая, оборудование еще не подключено, "отучалки" одинаковые что на переферийной, что на главной базе. На главной все ок, один ид всегда. 1cv8.pfl на главной базе где ид рабочего места:
<
,
<
,"">,
<
>
>,
>
>
Заметил, что на компе где установлена главная база win2008r2 sp1 запустил подчиненную базу, все ок.. а на win7 sp1 чудит. Как-то можно этот ид зафиксировать чтобы он не менялся, т.к. кроме РМК никто работать не будет.
Сегодня попробовал на др компе. Все работает как надо, на других плодятся места. Подозрение на операционку, хотя мне кажется что они с одного дистрибутива.
Посмотрел, сборку винды, идентичны. Может ли влиять проц на все это дело? Не работает на машинах с Атомами..
Из того, что вы говорите более-менее становится ясно, что виновата Win7. Нужно искать проблему в ней: поставить все обновления, проверить платформу (так как глюки с ИДКлиента у платформы были!), дать все права на все и пр.
Ну, а когда уже сроки поджимают или нет возможности этим заняться, то последний вариант изменить конфигурацию. Можно, например, в той функции, которую я написал, вместо СистемнаяИнформация.ИдентификаторКлиента использовать ПараметрыСеанса.ТекущийПользователь.УникальныйИдентификатор() или завести реквизит у пользователя, который будет ссылаться на нужное рабочее место (и также отказаться от объекта СистемнаяИнформация).
Платформа 8.2.16.352
Права полные на каталоги и файлы, учетка с админ правами. Пфл пробовал редактировать, стерать и т.д. результат один.
На др, компе на котором получилось нормально запустить, пфл пустой, но все прекрасно работает, не могу понять в чем разница компов, винда одинаковая стоит. Если менять конфу,что лучше всего и куда прописать, чтобы зафиксировать ид, т.к. пользователь будет один, место кассира. Время жмет.. Спасибо.
(27) mike999, посмотрел на партнерском форуме - практически ничего нового.
Внимания разве что заслуживает такой комментарий:
Вячеслав Мальцев (1С, Москва)
12.10.2011 14:57
Идентификатор клиента записывается в файл в системной папке. Запись происходит при корректном завершении 1С. При запуске платформа проверяет существует ли этот файл и если нет - создаёт новый.
Похоже что что-то мешает платформе этот файл сохранить.
Напишу на всякий случай наши предположения/гипотезы:
На новом "проблемном" компьютере сразу использовалась версия платформы 1С:Предприятие 8.2 (8.2.14.537) - при этом она ставилась с нуля. На остальных компьютерах ранее стояли более ранние версии платформы, начиная с 8.2.13. Поэтому предположение - что последняя версия создает данный файл в первый раз не корректно.
Обнаружено, что с каталоге текущего пользователя ОС файла "1cv8u.pfl" нет - но он есть в каталоге другого пользователя от лица которога была выполнена установка 1С и ее первый запуск. И именно его идентификатор подтягивает 1С при вызове СистемнаяИнформация.ИдентификаторКлиента: поэтому утверждение типовой документации "Для данного компьютера и данного пользователя операционной системы идентификатор один" - может быть ошибочным.
Проблема решилась так:
1. Были посмотрены права на файл - закладка "Безопасность". Мы увидели что все в порядке.
2. Файл был удален.
3. После этого 1с его создала и заполнила.
4. Теперь все ОК.
В общем, если решите дописывать, то нужно сначала попробовать первый вариант: использовать уникальныйидентификатор пользователя как идентификатор рабочего места (что, конечно, не очень хорошо, но проще).
Такой еще вопрос. Есть настройка, которая позволяет пользователю выбирать рабочее место при запуске, если их несколько. Этот вариант не устраивает? Будет выбирать всегда одно и то же.
Следующий вариант - создавать рабочие места вручную. Закомментировать в конфигурации кусок, где создается рабочее место и позволять его выбирать при старте.
И последний вариант хранить рабочее место в реквизите справочника пользователей и при поиске рабочего места (когда пользователь уже известен) устанавливать параметр сеанса в сохраненное значение.
который система при открытии сама сначала сверяет с имеющимся в файле 1cv8u.pfl, а затем, если не находит (может файл, может записи файла), то генерирует и принимает в момент запуска новый идентификатор на основе данных компьютера и записывает в тот же файл поверх при закрытии. Соответственно при следующем запуске будет выбран последний записанный идентификатор. ОБЯЗАТЕЛЬНО программа всегда должна запускаться от имени "Администратора" или должны быть настроены соответсвующие права на файл 1cv8u.pfl, иначе запись не сможет производиться и при каждом следующем запуске идентификатор будет новым. Также проблема наблюдалась и на компьютерах, где 1С запускалась с администраторскими правами, но все равно через день или два, кассир звонил в поддержку. Я подозреваю, что идентификатор менялся во время работы кассира каким-то образом, уж не знаю, что с компьютером делал пользователь, но после закрытия смены и окна 1С этот измененный идентификатор мешал на следующее утро открыться магазину.
Файл 1cv8u.pfl обычно лежит на диске "С" в пользовательской папке и редактируется "Блокнотом". Поэтому, чтобы найти его, рекомендую использовать системный поиск.
Примерное содержимое файла такое (выделенное жирным и есть Ваш идентификатор):
Восстановить работу можно следующим образом:
1) заходим в 1С под "Администратором" во всех смыслах;
2) заходим в рабочие места и открываем то, которое хотим, чтобы работало (не забудьте только, чтобы это рабочее место было также выбрано в элементе справочника "КассыККМ";
3) копируем идентификатор;
5) изменяем файл 1cv8u.pfl, вставив в него скопированный идентификатор и сохраняем (если файл пустой или в нем одни скобки, то вставляем в него структуру, приведенную выше и также подставляем свой идентификатор);
6) запускаем 1С под пользователем "Кассир" и можно спокойно работать дальше.
Используя данный принцип можно перенести базу с любого компьютера клиента к себе в офис для доработки или отладки не перенастраивая связи торгового оборудования, касс ККМ и рабочих мест.
А теперь решение проблемы практически парой щелчков руками кассира, дабы закончились нервные звонки и остановки магазина: после успешной полной настройки режима РМК, копируем файл 1cv8u.pfl на диск "D" (в корень), "пишем" файл "Устранение сбоя рабочего места 1С.bat", который будет удалять предыдующий рабочий 1cv8u.pfl и копировать автоматически на его место старый, перемещаем "батник" на рабочий стол. Теперь при возникновении такой проблемы кассир может закрыть 1С, запустить файл для исправления и затем работать в РМК.
Примерное содержимое файла "Устранение сбоя рабочего места 1C.bat" (создается "Блокнотом" и сохраняется с расширением .bat):
del C:\\Users\Admin\AppData\Local\1C\1Cv82\1cv8u.pfl
copy "D:\\1cv8u.pfl" "C:\\Users\Admin\AppData\Local\1C\1Cv82"
Рекомендую всем, не только новичкам, при внедрении 1С:Розницы ред. 2.0, не пожалейте времени, после всех настроек и перед уходом от клиента поместите такой файл на рабочий стол и обучите кассиров работать с ним. Поверьте, это сэкономит Ваше время и нервы. Вам не придется бесплатно совершать "воскресные" выезды к клиенту и пытаться объяснить ему, что это по вине его компьютера или сотрудника, чтобы получить хоть какие-то деньги за вызов.
Добрый вечер, обратите внимание, что мы отвечаем на вопросы, связанные с работой функционала 1С на уровне пользователей. Информация, которую вы просите — уровня разработчиков.
Поэтому по вашему вопросу могу дать рекомендации, исходя только из своего профессионального опыта.
Определение уникального идентификатора зависит от того, с какой базой вы работаете: файловой или клиент-серверной.
Если с файловой, то есть еще один нюанс: база была создана копированием или устанавливалась и наполнялась с «нуля».
1. База файловая, создана копированием. Это самый простой вариант для определения идентификатора информационной базы. Для этого вам нужно зайти в каталог ракзмещения базы и открыть файл DoNotCopy в каталоге размещения базы данных.
Там содержится уникальный идентификатор информационной базы, например, в моем случае — это символьная строка, разделенная дефисами:
2. Если база файловая, но создана не копированием, определить уникальный УИД базы сложнее.
Внешний отчет по определению УИД информационной базы запускайте по кн. Главное меню — Файл — Открыть.
3. Если вы работает на сервере, то могу процитировать информацию из документации разработчиков.
Написанный мной отчет, впрочем, тоже УИД информационной базы прочитает и в этом случае.
Я не знаю, для каких целей вы ищите УИД базы, но, возможно, вам нужен не внутренний идентификатор базы, а уникальный идентификатор соединения базы?
Если так, то смотреть нужно другое, конкретно файл ibases. И там уникальный идентификатор будет отличаться от того, что я приводила выше для своей базы:
Посмотреть все уникальные идентификаторы подключения информационной базы вы можете в файле ibases (%appdata%\Roaming\1C\1CEStart).
Для проверки этого можете очистить кеши в %appdata% и запустить нужную базу: получите тот идентификатор, который прописан в файле ibases
Главное отличие внутреннего УИД подключения базы от внутреннего УИД базы в том, что при удалении базы из списка баз и добавления потом в список, формируется новый внутренний идентификатор подключения базы.
Но и при восстановлении информационной базы из копии мы также порлучаем новый УИД базы.
Поэтому если вам нужно привязаться к базе для запуска в какой-то одной из баз обработок и регламентных заданий, то удобнее фиксироваться на имени базы при запуске обработки.
Для этого обычно используют команду:
СтрокаСоединенияИнформационнойБазы()
Вот вам вся информация, можете ее использовать.
Тем не менее, мы не разработчики и на уровне разработчиков по таблицам 1С и метаданным базы, как правило, не консультируем.
От Вас не поступило ответа. Я закрываю обращение. Если у Вас остались вопросы, Вы можете задать их в комментариях в течении трех дней. После этого обращение будет закрыто.
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Информации много. Очень важная. Огромная благодарность лектору и всем, кто принимает участие в организации семинаров!
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
который система при открытии сама сначала сверяет с имеющимся в файле 1cv8u.pfl, а затем, если не находит (может файл, может записи файла), то генерирует и принимает в момент запуска новый идентификатор на основе данных компьютера и записывает в тот же файл поверх при закрытии. Соответственно при следующем запуске будет выбран последний записанный идентификатор. ОБЯЗАТЕЛЬНО программа всегда должна запускаться от имени «Администратора» или должны быть настроены соответсвующие права на файл 1cv8u.pfl, иначе запись не сможет производиться и при каждом следующем запуске идентификатор будет новым. Также проблема наблюдалась и на компьютерах, где 1С запускалась с администраторскими правами, но все равно через день или два, кассир звонил в поддержку. Я подозреваю, что идентификатор менялся во время работы кассира каким-то образом, уж не знаю, что с компьютером делал пользователь, но после закрытия смены и окна 1С этот измененный идентификатор мешал на следующее утро открыться магазину.
Файл 1cv8u.pfl обычно лежит на диске «С» в пользовательской папке и редактируется «Блокнотом». Поэтому, чтобы найти его, рекомендую использовать системный поиск.
Примерное содержимое файла такое (выделенное жирным и есть Ваш идентификатор):
Восстановить работу можно следующим образом:
1) заходим в 1С под «Администратором» во всех смыслах;
2) заходим в рабочие места и открываем то, которое хотим, чтобы работало (не забудьте только, чтобы это рабочее место было также выбрано в элементе справочника «КассыККМ»;
3) копируем идентификатор;
5) изменяем файл 1cv8u.pfl, вставив в него скопированный идентификатор и сохраняем (если файл пустой или в нем одни скобки, то вставляем в него структуру, приведенную выше и также подставляем свой идентификатор);
6) запускаем 1С под пользователем «Кассир» и можно спокойно работать дальше.
Используя данный принцип можно перенести базу с любого компьютера клиента к себе в офис для доработки или отладки не перенастраивая связи торгового оборудования, касс ККМ и рабочих мест.
А теперь решение проблемы практически парой щелчков руками кассира, дабы закончились нервные звонки и остановки магазина: после успешной полной настройки режима РМК, копируем файл 1cv8u.pfl на диск «D» (в корень), «пишем» файл «Устранение сбоя рабочего места 1С.bat», который будет удалять предыдующий рабочий 1cv8u.pfl и копировать автоматически на его место старый, перемещаем «батник» на рабочий стол. Теперь при возникновении такой проблемы кассир может закрыть 1С, запустить файл для исправления и затем работать в РМК.
Примерное содержимое файла «Устранение сбоя рабочего места 1C.bat» (создается «Блокнотом» и сохраняется с расширением .bat):
del C:\UsersAdminAppDataLocal1C1Cv821cv8u.pfl
copy «D:\1cv8u.pfl» «C:\UsersAdminAppDataLocal1C1Cv82»
Рекомендую всем, не только новичкам, при внедрении 1С:Розницы ред. 2.0, не пожалейте времени, после всех настроек и перед уходом от клиента поместите такой файл на рабочий стол и обучите кассиров работать с ним. Поверьте, это сэкономит Ваше время и нервы. Вам не придется бесплатно совершать «воскресные» выезды к клиенту и пытаться объяснить ему, что это по вине его компьютера или сотрудника, чтобы получить хоть какие-то деньги за вызов.
Читайте также: