Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 8, свеженьких 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )

> Обновления списка пользователей с записью в регистр сведений          
kanibal23 Подменю пользователя
сообщение 05.06.18, 15:03
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

нужно по нажатию кнопки обновить список

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

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


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

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

 ! 

Правила: 5
 


Сообщение отредактировал logist - 05.06.18, 15:45

logist Подменю пользователя
сообщение 05.06.18, 15:47
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Команда
Сообщений: 9334
Из: Харьков
Спасибо сказали: 2453 раз
Рейтинг: 1523.4

СоздатьНабор вынесите за цикл

ну и РегистрСведений.Добавить()


Signature
Весь комплекс услуг по 1С 8.х. От консультаций до внедрения. ИТС. 1С-Звіт. Интеграция IP-телефонии. Написание конфигураций под требования заказчика, доработка типовых решений. Переход с 7.7 на 8.х.
Пишите в ЛС. Звоните +380 (44) 2227507, (57) 7547700, (98) 5147778, (50) 7147778, (93) 2147778 (участник "САБ")

Bernet Подменю пользователя
сообщение 05.06.18, 15:47
Сообщение #3

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 668
Из: Хмельницкий
Спасибо сказали: 201 раз
Рейтинг: 182.1

kanibal23 @ Сегодня, 16:03 * ,
что за переменная
Цитата
НаборЗаписей
? по логике должна быть "РегистрСведений" и объявляйте её за циклом - иначе получите в конце запись из одного пользователя


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

kanibal23 Подменю пользователя
сообщение 06.06.18, 6:56
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

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

Bernet @ Вчера, 16:47 * ,
тут реально тупнул просто столько раз переписывал что и не заметил

sava1 Подменю пользователя
сообщение 06.06.18, 7:41
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1906
Из: Проскуров
Спасибо сказали: 444 раз
Рейтинг: 433.5

НоваяЗапись = ....Добавить()
в цикл

kanibal23 Подменю пользователя
сообщение 06.06.18, 8:27
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

sava1 @ Сегодня, 8:41 * ,
пробовал пустое значение

Bernet Подменю пользователя
сообщение 06.06.18, 8:35
Сообщение #7

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 668
Из: Хмельницкий
Спасибо сказали: 201 раз
Рейтинг: 182.1

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


Сообщение отредактировал Bernet - 06.06.18, 8:36


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

kanibal23 Подменю пользователя
сообщение 06.06.18, 11:23
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

Bernet @ Сегодня, 9:35 * ,
побывал и так
так выпадает ошибка
Запись с такими ключевыми полями существует! : АктивныеПользователиЧата: (Регистр сведений: Активные пользователи чата; Номер строки: 2)

Bernet Подменю пользователя
сообщение 06.06.18, 11:26
Сообщение #9

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 668
Из: Хмельницкий
Спасибо сказали: 201 раз
Рейтинг: 182.1

kanibal23 @ Сегодня, 12:23 * ,
Либо чистить регистр перед каждой записью, либо делать его периодическим, либо как вариант попробуйте
НаборЗаписей.Записать(Истина);

должно заменить существующие строки по идее


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

kanibal23 Подменю пользователя
сообщение 06.06.18, 11:30
Сообщение #10

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

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

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


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


Bernet @ Сегодня, 12:26 * ,
в самом начале очищается

sava1 Подменю пользователя
сообщение 06.06.18, 12:41
Сообщение #11

Крутой
Иконка группы
Группа: Местный
Сообщений: 1906
Из: Проскуров
Спасибо сказали: 444 раз
Рейтинг: 433.5

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


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

kanibal23 Подменю пользователя
сообщение 06.06.18, 13:12
Сообщение #12

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

От ошибки избавился

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

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


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

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



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


sava1 Подменю пользователя
сообщение 06.06.18, 14:28
Сообщение #13

Крутой
Иконка группы
Группа: Местный
Сообщений: 1906
Из: Проскуров
Спасибо сказали: 444 раз
Рейтинг: 433.5

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

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


Для "оно" пофиг скоко и чего находится в системе - для "оно" важно, как Вы с "им" работаете.

kanibal23 Подменю пользователя
сообщение 06.06.18, 15:24
Сообщение #14

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

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

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

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


И удалять так

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


все работает
Но это стоит при старте и закрытий формы
Но бывает если я всех кикаю из базы пользователи остаются в чате активными вот и хачю сделать модуль обновления списка

kanibal23 Подменю пользователя
сообщение 07.06.18, 14:17
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

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


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

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

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

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

andr_andrey Подменю пользователя
сообщение 08.06.18, 11:30
Сообщение #16

Оратор
Иконка группы
Группа: Местный
Сообщений: 427
Спасибо сказали: 93 раз
Рейтинг: 71.6

kanibal23 @ Вчера, 15:17 * ,

Цитата(kanibal23 @ 07.06.18, 15:17) *
    НаборЗаписей.Прочитать();
    НаборЗаписей.Очистить();
    НаборЗаписей.Записать();

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

который просто заменит все записи регистра сведений?


Signature
#define private public

kanibal23 Подменю пользователя
сообщение 11.06.18, 7:07
Сообщение #17

Общительный
**
Группа: Пользователи
Сообщений: 20
Спасибо сказали: 0 раз
Рейтинг: 0

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

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


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


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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.10.18, 22:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!

Курсы валют: доллар США к гривне Курсы валют: евро к гривне Курсы валют: российский рубль к гривне