Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обновления списка пользователей с записью в регистр сведений
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
kanibal23
нужно по нажатию кнопки обновить список

код
МассивСоединений = ПолучитьСоединенияИнформационнойБазы();              
    Для каждого Соединение Из МассивСоединений Цикл
    РегистрСведений  = РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
    //РегистрСведений.Отбор.Пользователь.Установить(Соединение.Пользователь.Имя);

        
        НоваяЗапись  = НаборЗаписей.Добавить();
        НоваяЗапись.Пользователь = Соединение.Пользователь.Имя;
        Сообщить("Имя: "+Соединение.Пользователь.Имя);
    КонецЦикла;
    
     РегистрСведений.Записать();


Сообщения это так для теста - но оно работает аа вот записи нету

Может туповатый вопрос но уже голова пухнит

 ! 

необходимо зарегистрироваться для просмотра ссылки: 5
 
logist
СоздатьНабор вынесите за цикл

ну и РегистрСведений.Добавить()
Bernet
kanibal23 @ Сегодня, 16:03 необходимо зарегистрироваться для просмотра ссылки ,
что за переменная
Цитата
НаборЗаписей
? по логике должна быть "РегистрСведений" и объявляйте её за циклом - иначе получите в конце запись из одного пользователя
kanibal23
Типа этого
МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
    РегистрСведений  = РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
    НоваяЗапись  = РегистрСведений.Добавить();
    Для каждого Соединение Из МассивСоединений Цикл
       РегистрСведений.Отбор.Пользователь.Установить(Соединение.Пользователь.Имя);  
       НоваяЗапись.Пользователь = РегистрСведений.Отбор.Пользователь;
       Сообщить("Имя: "+Соединение.Пользователь.Имя);
    КонецЦикла;
    
     РегистрСведений.Записать();

но вот только записывает одного пустого пользователя

Bernet @ Вчера, 16:47 необходимо зарегистрироваться для просмотра ссылки ,
тут реально тупнул просто столько раз переписывал что и не заметил
sava1
НоваяЗапись = ....Добавить()
в цикл
kanibal23
sava1 @ Сегодня, 8:41 необходимо зарегистрироваться для просмотра ссылки ,
пробовал пустое значение
Bernet
kanibal23 @ Сегодня, 9:27 необходимо зарегистрироваться для просмотра ссылки ,
МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
НаборЗаписей  = РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для каждого Соединение Из МассивСоединений Цикл
    НоваяЗапись = НаборЗаписей.Добавить();
    НоваяЗапись.Пользователь = Соединение.Пользователь.Имя;
      Сообщить("Имя: "+Соединение.Пользователь.Имя);
КонецЦикла;    
НаборЗаписей.Записать();
kanibal23
Bernet @ Сегодня, 9:35 необходимо зарегистрироваться для просмотра ссылки ,
побывал и так
так выпадает ошибка
Запись с такими ключевыми полями существует! : АктивныеПользователиЧата: (Регистр сведений: Активные пользователи чата; Номер строки: 2)
Bernet
kanibal23 @ Сегодня, 12:23 необходимо зарегистрироваться для просмотра ссылки ,
Либо чистить регистр перед каждой записью, либо делать его периодическим, либо как вариант попробуйте
НаборЗаписей.Записать(Истина);

должно заменить существующие строки по идее
kanibal23
&НаСервереБезКонтекста
Процедура ОбновитьПользователей()
    НаборЗаписей = РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();    
    НаборЗаписей.Записать();

МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
РегистрСведений= РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
УстановитьПривилегированныйРежим(Истина);
РегистрСведений .Прочитать();
Для каждого Соединение Из МассивСоединений Цикл
    НоваяЗапись = РегистрСведений.Добавить();
    НоваяЗапись.Пользователь = Соединение.Пользователь.Имя;
    Сообщить("Имя: "+Соединение.Пользователь.Имя);     
КонецЦикла;    
РегистрСведений.Записать();
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры

&НаКлиенте
Процедура Обновить(Команда)
    ОбновитьПользователей();
КонецПроцедуры


вощим вот полностью последний код


Bernet @ Сегодня, 12:26 необходимо зарегистрироваться для просмотра ссылки ,
в самом начале очищается
sava1
Цитата(kanibal23 @ 06.06.18, 12:23) необходимо зарегистрироваться для просмотра ссылки
ак выпадает ошибка
Запись с такими ключевыми полями существует! : АктивныеПользователиЧата: (Регистр сведений: Активные пользователи чата; Номер строки: 2)


это говорит лишь о том, что Вы не установили отбор по измерению.
kanibal23
От ошибки избавился

&НаСервереБезКонтекста
Процедура ОбновитьПользователей()
    НаборЗаписей = РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    НаборЗаписей.Записать();

МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
РегистрСведений= РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
УстановитьПривилегированныйРежим(Истина);
РегистрСведений .Прочитать();
Для каждого Соединение Из МассивСоединений Цикл
    Если НЕ ПредставлениеПриложения(Соединение.ИмяПриложения)="Конфигуратор" Тогда
    НоваяЗапись = РегистрСведений.Добавить();
    НоваяЗапись.Пользователь = Соединение.Пользователь.Имя;
    Сообщить("Имя: "+Соединение.Пользователь.Имя);
    КонецЕсли;
КонецЦикла;
РегистрСведений.Записать(Истина);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры


Но все ровно записывает пустое значение

Цитата(sava1 @ 06.06.18, 13:41) необходимо зарегистрироваться для просмотра ссылки
это говорит лишь о том, что Вы не установили отбор по измерению.



ААА более о простом подумать не как
Если убрала ошибку
оно не понимала как Администратор находится в системе два раза

sava1
попробуйте через менеджер записать по одной записи

Цитата(kanibal23 @ 06.06.18, 14:12) необходимо зарегистрироваться для просмотра ссылки
оно не понимала как Администратор находится в системе два раза


Для "оно" пофиг скоко и чего находится в системе - для "оно" важно, как Вы с "им" работаете.
kanibal23
Цитата(sava1 @ 06.06.18, 15:28) необходимо зарегистрироваться для просмотра ссылки
Для "оно" пофиг скоко и чего находится в системе - для "оно" важно, как Вы с "им" работаете.

далеко не пофиг даже вручную добавить вторую такую же запись не возможно

Правда если записывать так

МенеджерЗаписиАктивныеПользователи = РегистрыСведений.АктивныеПользователиЧата.СоздатьМенеджерЗаписи();
    УстановитьПривилегированныйРежим(Истина);
    МенеджерЗаписиАктивныеПользователи.Пользователь = ПараметрыСеанса.ТекущийПользователь;
    Попытка
        МенеджерЗаписиАктивныеПользователи.Записать();
    Исключение
    КонецПопытки;
    УстановитьПривилегированныйРежим(Ложь);


И удалять так

МенеджерЗаписи = РегистрыСведений.АктивныеПользователиЧата.СоздатьМенеджерЗаписи();
        УстановитьПривилегированныйРежим(Истина);
    МенеджерЗаписи.Пользователь = ПараметрыСеанса.ТекущийПользователь;
    МенеджерЗаписи.Прочитать();
    МенеджерЗаписи.Удалить();
    УстановитьПривилегированныйРежим(Ложь);


все работает
Но это стоит при старте и закрытий формы
Но бывает если я всех кикаю из базы пользователи остаются в чате активными вот и хачю сделать модуль обновления списка
kanibal23
НаборЗаписей = РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    НаборЗаписей.Записать();

МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
РегистрСведений= РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
УстановитьПривилегированныйРежим(Истина);
РегистрСведений .Прочитать();
Для каждого Соединение Из МассивСоединений Цикл    
    Сообщить("Имя: "+Соединение.Пользователь.Имя+"/ приложение "+ПредставлениеПриложения(Соединение.ИмяПриложения));
    Если НЕ ПредставлениеПриложения(Соединение.ИмяПриложения)= "Конфигуратор"  Тогда         
    НоваяЗапись = РегистрСведений.Добавить();
    НоваяЗапись.Пользователь = Справочники.Пользователи.НайтиПоНаименованию(Соединение.Пользователь.Имя, Истина);
    КонецЕсли;
КонецЦикла;
РегистрСведений.Записать(Истина);
УстановитьПривилегированныйРежим(Ложь);


Кабы работает но первые несколько минут
Потом появляются Фоновые задания и тогда записывает пустого пользователя как их отсеч

Победил вдруг кому пригладится
&НаСервереБезКонтекста
Процедура ОбновитьПользователей()
    НаборЗаписей = РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    НаборЗаписей.Записать();

МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
РегистрСведений= РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
УстановитьПривилегированныйРежим(Истина);
РегистрСведений .Прочитать();
Для каждого Соединение Из МассивСоединений Цикл    
    Сообщить("Имя: "+Соединение.Пользователь.Имя+"/ приложение "+Соединение.ИмяПриложения);
    Если НЕ ПредставлениеПриложения(Соединение.ИмяПриложения)= "Конфигуратор" И НЕ Соединение.ИмяПриложения = "BackgroundJob"  Тогда  
    НоваяЗапись = РегистрСведений.Добавить();
    НоваяЗапись.Пользователь = Справочники.Пользователи.НайтиПоНаименованию(Соединение.Пользователь.Имя, Истина);
КонецЕсли;

КонецЦикла;
РегистрСведений.Записать(Истина);
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
andr_andrey
kanibal23 @ Вчера, 15:17 необходимо зарегистрироваться для просмотра ссылки ,

Цитата(kanibal23 @ 07.06.18, 15:17) необходимо зарегистрироваться для просмотра ссылки
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    НаборЗаписей.Записать();

Зачем, если можно просто
// !!! РегистрСведений .Прочитать();
Для каждого Соединение Из МассивСоединений Цикл    
    Сообщить("Имя: "+Соединение.Пользователь.Имя+"/ приложение "+ПредставлениеПриложения(Соединение.ИмяПриложения));
    Если НЕ ПредставлениеПриложения(Соединение.ИмяПриложения)= "Конфигуратор"  Тогда        
    НоваяЗапись = РегистрСведений.Добавить();
    НоваяЗапись.Пользователь = Справочники.Пользователи.НайтиПоНаименованию(Соединение.Пользователь.Имя, Истина);
    КонецЕсли;
КонецЦикла;
РегистрСведений.Записать(Истина);

который просто заменит все записи регистра сведений?
kanibal23
andr_andrey @ 08.06.18, 12:30 необходимо зарегистрироваться для просмотра ссылки ,
МассивСоединений = ПолучитьСоединенияИнформационнойБазы();
РегистрСведений= РегистрыСведений.АктивныеПользователиЧата.СоздатьНаборЗаписей();
УстановитьПривилегированныйРежим(Истина);
РегистрСведений .Прочитать();
Для каждого Соединение Из МассивСоединений Цикл    
    //Сообщить("Имя: "+Соединение.Пользователь.Имя+"/ приложение "+Соединение.ИмяПриложения);
    Если ЛЕВ(Соединение.ИмяПриложения,4)="1CV8"  Тогда   //НЕ ПредставлениеПриложения(Соединение.ИмяПриложения)= "Конфигуратор" И НЕ Соединение.ИмяПриложения = "BackgroundJob"
    НоваяЗапись = РегистрСведений.Добавить();
    НоваяЗапись.Пользователь = Справочники.Пользователи.НайтиПоНаименованию(Соединение.Пользователь.Имя, Истина);
КонецЕсли;

КонецЦикла;
РегистрСведений.Записать(Истина);
УстановитьПривилегированныйРежим(Ложь);


тогда во так уж


ААА верхняя часть нужна чтобы стереть записи и не было конфликта одинаковых имён
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.