Поискав и не найдя того что мне нужно для отключения забывчивых пользователей из базы данных решил написать данную обработку.
Обработка позволяет:
- просматривать список пользователей;
- задавать кто не будет отключен для сервисной работы;
- возможность быстрого отключения;
- установка монопольного режима;
- выдержка времени не подключения;
- запрет подключения к базе в течении определенного времени;
- отключение не всех пользователей.
Доработка конфигурации:
- Обработка настройки отключения (в приложении);
- Регистр сведений;
- Модуль приложения.
Регистр сведений
ргОтключениеПользователей, непереодический, с независимым режимом записи.
Измерения:
Пользователь — справочник пользователи, ведущее или основной отбор
Ресурсы:
- Отключить — Булево;
- ЗапретПодключения — Булево;
- БыстроеОтключение — Булево;
- СостояниеОтключения — Строка, 3 символа, фиксированная;
- Сообщение — Строка, 300 символов, переменная;
- ДатаВремяПуска — Дата, Дата и время;
- ОтключениеМинут — Число, 2 разряда; // до 99 минут
- ПаузаДоОтключения — Число, 1 разряд. // от 3 до 5 минут
Модуль приложения
// Процедура контроля возможности подключения.
//
Процедура СтартПроверкиОтключения(Отказ) Экспорт
Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
Зп = Новый Запрос;
Зп.УстановитьПараметр(«Пользователь»,Пользователь);
Зп.Текст = «ВЫБРАТЬ
| ргОтключениеПользователей.Пользователь,
| ргОтключениеПользователей.ЗапретПодключения,
| ргОтключениеПользователей.ДатаВремяПуска,
| ргОтключениеПользователей.ОтключениеМинут,
| ргОтключениеПользователей.ПаузаДоОтключения
|ИЗ
| РегистрСведений.ргОтключениеПользователей КАК ргОтключениеПользователей
|ГДЕ
| ргОтключениеПользователей.Пользователь = &Пользователь»;
РезультатЗп = Зп.Выполнить().Выбрать();
Если РезультатЗп.Следующий() Тогда
Если РезультатЗп.ЗапретПодключения Тогда
НеПодключать = Ложь;
// Расчет времени не подключения
ТекДата = ТекущаяДата();
СтартДата = РезультатЗп.ДатаВремяПуска;
ВремяПаузы = (РезультатЗп.ОтключениеМинут + РезультатЗп.ПаузаДоОтключения) * 60;
ДельтаПаузы = ТекДата — СтартДата;
Если ВремяПаузы > ДельтаПаузы Тогда
НеПодключать = Истина;
КонецЕсли;
// Конец Расчета времени не подключения
Если НеПодключать Тогда
#Если Клиент Тогда
Предупреждение(«Подключение запрещено. Ведутся сервисные работы.», 5, «Подключение…»);
#КонецЕсли
//Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
// Проверка и опрос состояния отключения
ПодключитьОбработчикОжидания(«ЦиклическийВызов»,15);
КонецПроцедуры // СтартПроверкиОтключения()
// Процедура контроля отключения. Конечный автомат состояний отключения.
//
Процедура ЦиклическийВызов() Экспорт
ОтклПользователей = РегистрыСведений.ргОтключениеПользователей;
Отбор = Новый Структура(«Пользователь»);
Отбор.Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
ВыборкаРегистра = ОтклПользователей.Выбрать(Отбор);
Пока ВыборкаРегистра.Следующий() Цикл
Запись = ВыборкаРегистра.ПолучитьМенеджерЗаписи();
Запись.Прочитать();
СостОткл = Запись.СостояниеОтключения;
ВремяОткл = Запись.ПаузаДоОтключения;
Пр = Лев(СостОткл,1);
Если Пр = «А» Тогда
СостОткл = «Б» + Строка(ВремяОткл*4);
Запись.СостояниеОтключения = СостОткл;
Запись.Записать();
#Если Клиент Тогда
Сигнал();
Сигнал();
Сигнал();
Предупреждение(Запись.Сообщение,15,«Предупреждение»);
#КонецЕсли
ИначеЕсли Пр = «Б» Тогда
Время = Число(Прав(СостОткл,2));
Время = Время — 1;
Если Время = 0 Тогда
СостОткл = «В»;
Иначе
СостОткл = «Б» + Строка(Время);
КонецЕсли;
Запись.СостояниеОтключения = СостОткл;
Запись.Записать();
ИначеЕсли Пр = «В» Тогда
СостОткл = «Г» + Строка(ВремяОткл—1);
Запись.СостояниеОтключения = СостОткл;
Запись.Записать();
#Если Клиент Тогда
Сигнал();
Сигнал();
Сигнал();
Предупреждение(Запись.Сообщение,15,«Предупреждение!»);
#КонецЕсли
ИначеЕсли Пр = «Г» Тогда
Время = Число(Прав(СостОткл,2));
Время = Время — 1;
Если Время = 0 Тогда
СостОткл = «Д»;
Иначе
СостОткл = «Г» + Строка(Время);
КонецЕсли;
Запись.СостояниеОтключения = СостОткл;
Запись.Записать();
ИначеЕсли Пр = «Д» Тогда
СостОткл = «Ш»;
Запись.СостояниеОтключения = СостОткл;
Запись.Записать();
#Если Клиент Тогда
Сигнал();
Сигнал();
Сигнал();
Предупреждение(«Извините но вы не предприняли никаких действий.»,5,«Отключение.»);
ЗавершитьРаботуСистемы();
#КонецЕсли
ИначеЕсли Пр = «Ш» Тогда
СтопПроверкиОтключения();
#Если Клиент Тогда
Сигнал();
Сигнал();
Сигнал();
Предупреждение(«Тушим…»,5,«Отключение.»);
ПрекратитьРаботуСистемы();
#КонецЕсли
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ЦиклическийВызов()
// Процедура контроля отключения.
//
Процедура СтопПроверкиОтключения() Экспорт
ОтклПользователей = РегистрыСведений.ргОтключениеПользователей;
Отбор = Новый Структура(«Пользователь»);
Отбор.Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
ВыборкаРегистра = ОтклПользователей.Выбрать(Отбор);
Пока ВыборкаРегистра.Следующий() Цикл
Запись = ВыборкаРегистра.ПолучитьМенеджерЗаписи();
Запись.Отключить = Ложь;
Запись.СостояниеОтключения = «К»;
Запись.Записать();
КонецЦикла;
КонецПроцедуры // СтопПроверкиОтключения()
Процедура ПередНачаломРаботыСистемы(Отказ)
// Типовый вызовы
СтартПроверкиОтключения(Отказ);
КонецПроцедуры
Процедура ПриЗавершенииРаботыСистемы()
// Типовый вызовы
СтопПроверкиОтключения();
КонецПроцедуры
PS Первая проба пера. Если что не так пишите откорректирую.
UPD: Спасибо за рейтинг. Скачал Разукрашку. Обновил код.
UPD2: Поправил обязательную настройку регистра.
UPD3: Откорректировал процедуру кнопки отключить, заполнение регистра значений. Заполняется все отмеченные пользователи а не только последний.
Ребята читаем комментарии! Все вопросы по ошибкам там уже обсуждались! Следуя всем замечаниям перенес обработку из УТП в УПП (без дополнительного модуля) все заработало с первого раза.
И где сама обработка?
To 1. Подправил. Обработку прекрепил
Приятно сделана.
(0) 1. Код в публикации оформи нормально, нечитаемо — значит, нельзя проверить 🙁
Например, можешь найти на сайте «Разукрашка» и с ее помощью раскрасить код 1С.
2. Состояния отключения — Ш, К, Г и т.д — ну совершенно нечитаемо, неузнаваемо и т.д.
3. Что будешь делать, если пользователь заблокировал свою 1С ?
твой код отработает?
Проверял на случай, если у пользователя открыта измененная форма какого-нибудь документа?
хм… не совсем понял, в чём принципиальное отличие от Установки блокировки пользователей кроме «отключение не всех пользователей»?
могу предположить, конечно, что это лично для работы любимого главбуха… но для него можно просто вывести отдельный ярлык для запуска 1cv8.exe с указанием ключа блокировки (/UC)… а для себя любимого и подавно…
с монопольным режимом тоже лишний раз лучше не играться… это шаг назад к 7-ке… там где нужно он сам и установится, и снимется…
не говорю, что это бесполезная вещь, кому-то наверняка понравится… но, честно сказать, ради такого я бы не стал менять конфу, чтобы потом из релиза в релиз заморачиваться каждый раз на перенос этого функционала…
To (4)
[IS-QUOTE]Состояния отключения — Ш, К, Г и т.д — ну совершенно нечитаемо, неузнаваемо
Приму к сведению. Я тоже задумался над этим когда писал. Думаю что завтра откорректирую и выложу снова.
твой код отработает?
Пользователь не может заблокировать сам себя. Возникает предупреждение.
Не проверял и проверять не планирую. Для этого и дается пользователю от 3-х до 5-ти минут что бы все сохранить и выйти. Иначе просто выходим ничего не сохраняя. ПрекратитьРаботуСистемы();
to (5) для того что бы объеденять было очень просто все расположенно во внешней обработке и всего в трех процедурах в модуле приложения. Поэтому не вижу сложностей с объединением.
Ещё бы режимы обозвать поприятнее, а то «Designer»… Впрочем, не ново. Coder1cv8 уже выкладывал такую, сугубо недурственную.
В файловом режиме работает?
(9) работает с любым вариантом системы. Для отключения пользователей используются вызовы:
А как насчет 8.2? =)
А чем не устраивает КонсольКластеровСерверов — стандартная обработка от 1С?
лучше сделать систему оповещения пользователям, чего кстати нет в стандарте
(13) Хорошая идея. Расширить функционал для системы оповещения.
{Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)
Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда
Что это за ДополнительныйМодуль
(15) Сори. Не заметил. Это я написал аналог функции 7.7 ПустоеЗначение().
Вот ее текст:
Показать
(12) она в файловом варианте работает? 🙂
(16) А что, «ЗначениеЗаполнено» уже отменили?
(18) 🙂 Не знал. Посмотрю. Спасибо за подсказку.
Видимо, человек недавно с 8-кой, но чувствуется, что потенциал есть. С почином 🙂
(20) Спасибо
{Форма.СервисФорма(114)}: Поле объекта не обнаружено (ргОтключениеПользователей)
ОтклПользователей = РегистрыСведений.ргОтключениеПользователей;
(22) А вы читали текст статьи?
(22)сори не внимательно читал 😀
Мой вариант:http://infostart.ru/public/21475/
Доброго дня. Ребята кто может скачать Разукрашку и выслать на почту. А то не могу. Не красивый какой то пост. А своего рейтинга не хватает. Спасибо всем кто поставил плюсик. Всем удачи.
(25) markers твоя обработ норм но ета лучше, тем что она культурно выгоняет пользователей 🙂
💡 Ребята сделайте +1 пожалуйста хочу скачать «Разукрашку» и переоформить пост.
где взять ДополнительныйМодуль ?
(29) По подробнее пожалуйста про доп модуль. И прочтите все комментарии.
Поставил… ошибок много… исправил…
не работает… автор проверь и откорректируй…
+ только за старание
(31) Спасибо за +
А если можно поконкретнее что за ошибки? А то у меня все работает 🙂
Обработка в режиме 1с Предприятия не открывается, возникает ошибка:
(Недопустимое значение параметра (параметр номер ‘1’) ВыборкаРегистра = ОтклПользователей.Выбрать(Отбор)).
Регистр, обработку добавили, модуль приложения дополнили… Как быть, подскажите, пожалуйста.
(33)А что за конфигурация? Ошибка отбора из-за того что у вас не совпадают выборки из справочника пользователи измерение регистра? И есть ли вообще измерение Пользователь?
(34) Измерение регистра — добавлено как написано, СправочникСсылка.Пользователи, Конфигурация — УПП 1.2(1.2.26.1) немного дописанная. Файловый вариант базы для проверки.
При запуске 1С Предприятие происходит циклический вызов Процедуры контроля отключения (из модуля приложения) — и выдается подобное сообщение…хм (а также при запуске обработки)
(35) УРАА, работает! нашла неувязку — обязательным должно быть свойство «Ведущее» для измерения РС. Спасибо.
з.ы. единственное — при попытке изменения времени до отключения (<3,>5) ошибка:Метод объекта не обнаружен (Сообщение)
ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
(36) Спасибо за заметку. Вот Функция Сообщить.
Показать
Вот такая ошибка:
(38) Читай комментарии. Этот вопрос уже подымали.
правда ЗначениеЗаполнено не работает с мутабельными, тобишь составными, как я понял, значениями (слово же ругательное придумали, мутабельное)….
пожалуйста, подскажите, что сделал я неверно. При запуске обработки всплывает окно «Выбранный файл не является внешней обработкой. Либо данная обработка не предназначена для запуска в данной конфигурации.» конфигурация УПП 8.1.2.28.1 платформа 8.1.15.14 регистр сведений «ргОтключениеПользователей» в конфигураторе создал. Может быть не верно присоединил дополнительную обработку? Пожалуйста, подскажите.
(41) Обработку можно открывать и просто файлом. Через меню файл-открыть.
Попробуйте еще раз скачать ее с сайта.
спасибо за рекомендации. вновь скачал epf-шник. снова после открытия сообщение : «…
{Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)
Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда
{Форма.СервисФорма(193,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(198,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(207,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(212,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(288,5)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);
…»
скорее всего что-то я упустил.
Пожалуйста, подскажите на что обратить внимание.
Спасибо.
masson — а у тебя платформа какая ?
8.1.15.14 а необходима какая?
to (45) ваш ответ в (36) и в (16) Посмотрите эти комментарии и будет вам счастье 🙂
Проблема та же, что и у masson —
при запуске ругается:
{Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)
Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда
{Форма.СервисФорма(193,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(198,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(207,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(212,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(288,5)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);
🙁
Платформа — 8.1 (8.1.14.72)
Конфигурация — УПП 1.2 (1.2.28.1)
To (45) и (47) уважаемые. Ошибка возникает из-за того что когда я писал обработку то использовал уже написанные мной процедуры и функции приведенные в комментариях (36) и (16). Поэтому нужно либо создать модуль «ДополнительныйМодуль» и в него поместить эти функции. Или добавить их в обработку и покончить с ошибками.
Эта штука на Бухгалтерии Предприятия попрет?
to (49) Да. Вся выгонялка построена на регистре сведение и 3-х процедурах в модуле приложения. Обработка которае здесь позволяет просто редактировать записи в регистре.
Спасибо, скачаем и затестим!
Прикольноя обработочка, жаль что она не работает с БП… Может их можно подружить?
{Форма.СервисФорма(123,9)}: Переменная не определена (ДополнительныйМодуль)
Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда
{Форма.СервисФорма(193,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(198,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(207,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(212,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма(288,5)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);
откуда взялся дополнительныймодуль? ))
не заработало с первого раза 🙂
(54) А с какого?
Да… Очень жаль что не дружит с БП 😥
(56) Что такое БП и почему не дружит?
БП — Бухгалтерия Предприятия. А не дружит, потому что:
Показать
Вот так ругается
В файловом варианте все класс!!!!
но в серверном увы…… и ах………
(59) Извините но какая разница какой вариант? Работа обработки не зависит от варианта. И что пишет в серверном варианте?
на 1с: 7 аналог есть?
Выдает ошибки:
{МодульПриложения(50,20)}: Переменная не определена (УправлениеПользователями)
Пользователь = <<?>>УправлениеПользователями.ОпределитьТекущегоПользователя();
{МодульПриложения(94,26)}: Переменная не определена (УправлениеПользователями)
Отбор.Пользователь = <<?>>УправлениеПользователями.ОпределитьТекущегоПользователя();
{МодульПриложения(172,26)}: Переменная не определена (УправлениеПользователями)
Отбор.Пользователь = <<?>>УправлениеПользователями.ОпределитьТекущегоПользователя();
В общем, удалось адаптировать под свою конфигурацию. В целом понравилось 🙂 Ставлю плюс
Супер работает бомба!!! 😀 ❗
Бухгалтерия предприятия 2.0
получаю вот такое сообщение:
{Форма.СервисФорма.Форма(14)}: Недостаточно фактических параметров
Пользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
Хорошая вещь, допиливать конечно под себя ее нужно еще, но я поставил +
Автор:
Предупреждение(«Извините но вы не предприняли никаких действий.»,5,»Отключение.»);
ЗавершитьРаботуСистемы(); — сюда очень рекомендую поставить
ЗавершитьРаботуСистемы(Ложь); либо ПрекратитьработуСистемы();
потому что при Истина после вопроса о завершении работы юзеры жмут -«Нет», и их фиг выгонишь тогда,
а вот потом когда они начнут заходить у них будет «Тушим» и отрубаться сразу.
Автор, расшифруй, пожалуйста, префиксы состояний отключения в РС. А,Б,Ш,К и пр.
Также я бы не стал оставлять флаг «Быстрое отключение» в положении Истина после отключения надо бы юзеру ставить Ложь туда,
а если делаешь так, то добавить надо колонку в тч обработки твоей что-то типа «разрешено быстрое отключение».
Начали баловаться в 8х тем, чем народ в 7.7 переболел? Курочить конфу… Абсолютно всё можно решить как стандартными методами самой 1С (8х), и так и сетевым администрированием.
(67) ну да, можно еще проблему решить силой звукового давления своих голосовых связок
(68) Проблема решается спокойно программно теми, кто не только в 1С наловчился кодить
{Форма.СервисФорма.Форма(123,9)}: Переменная не определена (ДополнительныйМодуль)
Если <<?>>ДополнительныйМодуль.ПустоеЗначение(ЭлементМассива.Пользователь) Тогда
{Форма.СервисФорма.Форма(193,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма.Форма(198,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма.Форма(207,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма.Форма(212,3)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(СтрСообщения,1,»Инфо»);
{Форма.СервисФорма.Форма(288,5)}: Переменная не определена (ДополнительныйМодуль)
<<?>>ДополнительныйМодуль.Сообщение(«Отключать текущего пользователя запрещено!»);
КА 8.2
И где тут без Доп.модуля?
После дописки «Дополнительного модуля» в конфе.
получаем
{ВнешняяОбработка.доОбработкаОтключения.МодульОбъекта(35)}: Метод объекта не обнаружен (ОпределитьТекущегоПользователя)
ТекПользователь = УправлениеПользователями.ОпределитьТекущегоПользователя();
плюс за идею кулюторного отключения, ну и за труды конечно же 😀
обработка отличная — но есть баг — какимто образом пользователям всеже удается «невыганятся» из 1с
К сожалению не работает на платформе 8.2
жаль, что не работает на 8.2. Очень нужно
Спасибо за обработку, полезная вещь.
не работает…
хорошая,только по ходу конфу менять придется…
Жалко, что не пригодилась 🙁 Толи описание не соответствует, толи я что то неверно делал. В общем нашел альтернативный этой обработке путь. Но автору все равно спасибо за старание.
спасибо автору, обработка понравилась
Спасибо автору
(73) vetalm,
К сожалению я так и не разобрался почему не происходит отключения.
Но это происходит когда уже запущена какая либо долго работающая операция.
Хорошая, только в конфу модуль вкорячивать неудобно..
ещё в вкручивал в программу, но больше интересует сохранения данных у пользователей
А что выгонялка только для УПП? Для БП 2.0 подойдет, по-идее такие вещи должны быть универсальны
не закрывает базы. Где само отключение
Все хорошо работает, правда долго разбирался с настройкой
прикольно!
задумка хорошая, но реализация явно «сырая»
чем то напомнило «тут читать, тут не читать, а тут я рыбу заворачивал..»
обработка пригодилась, удобна в использовании
Большое спасибо! Очень пригодилась
«Foxux»
Жалко, что не пригодилась 🙁 Толи описание не соответствует, толи я что то неверно делал. В общем нашел альтернативный этой обработке путь. Но автору все равно спасибо за старание.»
А что за альтернатива?
Хорошая весчь. Спасибо.
Спасибо, уточните ещё, может Ваша обработка отправлять сообщения пользователям, или только отключает сеансы.
Он не позволяет слать сообщения. Но выводит несколько предупреждений перед отключением пользователя.
Респект. Нужная программа!
Пришлось немного подточить. В идеале, к публикации хорошо бы было приложить конфу, которую можно было бы встроить в мою. Самописанная конфигурация, пришлось добавить, само собой, описанные выше объекты. Проблема вышла с Измерением Пользователь в регистре (автор написал «ИЛИ», а нужно «И». Хорошо, что в комментариях добрые люди описали проблему). А по-настоящему пришлось помучиться с функцией «ОпределитьТекущегоПользователя()». Имеющаяся в УПП не подошла. Взял из ЗУП, подточил, всё заработало. В любом случае благодарен автору.
(96) elizarovs, в УПП воспользовался глЗначениеПеременной(«глТекущийПользователь») для определния текущего пользователя и всё, допфункцию не городил
(97) ZergKRSK, В УПП может быть. У меня-то самописанная. Думал из УПП готовую функцию к себе скопировать, о результатах написал, чтобы другим проще было.
Спасибо пригодилось