Освобождение лицензий. Регламентное задание

14.05.18

База данных - Инструменты администратора БД

(Разработано для 1С:Документооборот). Доработка решает проблему недостатка лицензий при сравнительно бОльшем количестве активных пользователей. Реализуется путем наблюдения "Протокола работы пользователей" и при отсутствии активности пользователя - отключение его сеанса на сервере. У нас данная доработка включена как рег. задание в 1С:Документооборот. Убиваются все сеансы с неактивностью за последние 30 минут, запускать рег. задание можно соответственно каждые 35 минут.

Суть доработки сводится к тому, что постоянно анализируется ПротоколРаботыПользователей на наличие записей с привязкой к пользователю за последние N-минут.

выбрать * из регистрсведений.протоколработыпользователей где пользователь=&юзер и дата > &датаубийства

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

ПолучитьСеансыИнформационнойБазы()

А дальше из списка на закрытие активного сеанса выкидываются полноправные пользователи, пользователи с сеансом в Конфигураторе и пользователи, поименованные в специальной Роли, у меня для примера она называется "ПользователиНеотключаемыеПоНеактивностиСеанса". Другими словами, если вам надо сделать пользователя, который постоянно может сидеть в приложении и не бояться, что система закроет его сеанс, просто добавьте его в эту роль, это может быть полезно для делопроизводителей, топ-менеджеров.

Дальше происходит отключение сеанса пользователя, находящегося в списке на отключение, делается это с помощью функционала администрирования кластера 1С.

АдминистрированиеКластераКлиентСервер.УдалитьСеансыИнформационнойБазы(ПараметрыАдминистрирования,ПараметрыАдминистрированияИБ, Фильтр);

Для этого вам понадобится две учетных записи: администратор кластера, администратор БД

ПараметрыАдминистрирования = АдминистрированиеКластераКлиентСервер.ПараметрыАдминистрированияКластера(); ПараметрыАдминистрирования.АдресАгентаСервера = "имя_сервера";
ПараметрыАдминистрирования.ПортАгентаСервера = 7540; //по умолчанию в 1С используется 1540
ПараметрыАдминистрирования.ПортКластера = 7541; //по умолчанию в 1С используется 1541
ПараметрыАдминистрирования.ИмяАдминистратораКластера = "имя_администратора_кластера";
ПараметрыАдминистрирования.ПарольАдминистратораКластера = "пароль_администратора_кластера";
ПараметрыАдминистрированияИБ = АдминистрированиеКластераКлиентСервер.ПараметрыАдминистрированияИнформационнойБазыКластера(); ПараметрыАдминистрированияИБ.ИмяВКластере = "имя_базы";
ПараметрыАдминистрированияИБ.ИмяАдминистратораИнформационнойБазы = "имя_администратора_базы"; ПараметрыАдминистрированияИБ.ПарольАдминистратораИнформационнойБазы = "пароль_администратора_базы";

У всей этой доработки есть один несущественный минус - т.к. не все события пишутся в ПротоколРаботыПользователей, то существует ненулевая вероятность, что пользователя "выкинет" даже если он вёл активность в приложении, но процент этих событий мал. 

Текст процедуры выкладываю как есть, необходимо только через Конфигуратор добавить регламентное задание и сопоставить его с этой процедурой.

 
Процедура УбитьСеансыВНочи() Экспорт
    
    Таб = Новый ТаблицаЗначений;    
    Таб.Колонки.Добавить("Пользователь");
    Таб.Колонки.Добавить("ПользовательСсылка");
    Таб.Колонки.Добавить("Номер");
    //Таб.Колонки.Добавить("Поле");
    СеансыИнформационнойБазы = ПолучитьСеансыИнформационнойБазы();
    НомераСеансов = Новый Массив;
    стСписокКРасстрелу = "";
    Для Каждого СеансИБ Из СеансыИнформационнойБазы Цикл
        если не Пользователи.ЭтоПолноправныйПользователь(СеансИБ.Пользователь, Истина) и СеансИБ.ИмяПриложения = "1CV8C" тогда
            ЗадачиЗапрос = Новый Запрос; //Не отключаются пользователи с полными правами, конфигураторы и фоновые задания
            ЗадачиЗапрос.Текст = "выбрать * из регистрсведений.протоколработыпользователей где пользователь=&юзер и дата > &датаубийства";
            Пользователь = Справочники.Пользователи.НайтиПоНаименованию(СеансИБ.Пользователь.ПолноеИмя,Истина);
            
            стРоли = РегистрыСведений.ИсполнителиЗадач.РолиИсполнителя(Пользователь);
            стРольПерманентногоПользователя = Справочники.РолиИсполнителей.НайтиПоНаименованию("ПользователиНеотключаемыеПоНеактивностиСеанса",Истина); //тут прописывается имя роли, входящие в нее пользователи не отключаются
            стПерманентныйПользователь = Ложь;
            Для Каждого ЭлементМассива из стРоли Цикл
                если ЭлементМассива.Владелец.Наименование = стРольПерманентногоПользователя.Наименование тогда
                    стПерманентныйПользователь = Истина;
                    Прервать;
                конецесли;
            КонецЦикла;        
            
            Если Не стПерманентныйПользователь Тогда 
            
                ЗадачиЗапрос.УстановитьПараметр("юзер", Пользователь);
                ЗадачиЗапрос.УстановитьПараметр("датаубийства", ТекущаяДата() - 1800);
                Результат = ЗадачиЗапрос.Выполнить();
                Если Результат.Пустой() Тогда
                    Сеанс = Таб.Добавить();
                    Сеанс.Пользователь             = СеансИБ.Пользователь.Имя;
                    стСписокКРасстрелу            = стСписокКРасстрелу + СеансИБ.Пользователь.Имя + " ";
                    Сеанс.Номер                 = СеансИБ.НомерСеанса;
                    НомераСеансов.Добавить(СеансИБ.НомерСеанса);
                    //Сеанс.ПользовательСсылка      = НайтиСсылкуПоИдентификаторуПользователя(СеансИБ.Пользователь.УникальныйИдентификатор);
                конецесли;
            
            КонецЕсли;
        
        конецесли;
    КонецЦикла;
    
    если НомераСеансов.Количество()>0 тогда
        
        ПараметрыАдминистрирования = АдминистрированиеКластераКлиентСервер.ПараметрыАдминистрированияКластера();
        ПараметрыАдминистрирования.АдресАгентаСервера = "имя_сервера";
        ПараметрыАдминистрирования.ПортАгентаСервера = 7540; //по умолчанию в 1С используется 1540
        ПараметрыАдминистрирования.ПортКластера = 7541; //по умолчанию в 1С используется 1541
        ПараметрыАдминистрирования.ИмяАдминистратораКластера = "имя_администратора_кластера";
        ПараметрыАдминистрирования.ПарольАдминистратораКластера = "пароль_администратора_кластера";
        ПараметрыАдминистрированияИБ = АдминистрированиеКластераКлиентСервер.ПараметрыАдминистрированияИнформационнойБазыКластера();
        ПараметрыАдминистрированияИБ.ИмяВКластере = "имя_базы";
        ПараметрыАдминистрированияИБ.ИмяАдминистратораИнформационнойБазы = "имя_администратора_базы";
        ПараметрыАдминистрированияИБ.ПарольАдминистратораИнформационнойБазы = "пароль_администратора_базы";
        
        СтруктураСеанса = Новый Структура;
        СтруктураСеанса.Вставить("Свойство", "Номер");
        СтруктураСеанса.Вставить("ВидСравнения", ВидСравнения.ВСписке);
        СтруктураСеанса.Вставить("Значение", НомераСеансов);
        Фильтр = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СтруктураСеанса);
        
        АдминистрированиеКластераКлиентСервер.УдалитьСеансыИнформационнойБазы(ПараметрыАдминистрирования,ПараметрыАдминистрированияИБ, Фильтр);
        
        ЗаписьЖурналаРегистрации("УдалениеПользователейВНочи", УровеньЖурналаРегистрации.Информация, , , "Список пользователей к отключению: " 
        + стСписокКРасстрелу);
        
    конецесли;
    
КонецПроцедуры

 

Регламентное задание Лицензии Освобождение сеансов

См. также

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2956    12    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3490    11    1    

33

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177716    1073    0    

848

Ускоренное проведение документов (x4), устранение ошибок 60/62 счетов и зачет авансов (Бухгалтерия 3.0)

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    27366    79    146    

59

Система хранения присоединенных файлов в томах на диске

Инструменты администратора БД Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием Платные (руб)

Конфигурация Комплексная автоматизация 1.1 (и УПП 1.3 тоже) хранит файлы и изображения в справочнике Хранилище дополнительной информации в реквизите Хранилище типа ХранилищеЗначений. Та же история с ВложениямиЭлектроннойПочты. Но при этом присоединенные файлы в Электронном документообороте хранит в томах на диске. Эта доработка позволяет использовать стандартный механизм хранения файлов, изображений и вложений электронных писем в томах на диске. При этом можно разделить тома хранения по объектам конфигурации.

4200 руб.

10.11.2015    61307    88    59    

73

"Менеджер потоков 2.1": УПП: "Восстановление партий"

Инструменты администратора БД Платформа 1С v8.3 1С:Управление производственным предприятием Россия Бухгалтерский учет Управленческий учет Платные (руб)

Как оптимизировать то, что, считалось, не поддается оптимизации? Как повысить доступность базы данных? Как проводить самую «времяемкую» операцию не по паре раз в неделю, а по несколько раз в день*? Ответ есть!

20000 руб.

12.09.2019    11739    5    9    

7

Брандмауэр для сервера 1С Предприятие 8 - внешнее управление сеансами

Инструменты администратора БД Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Управление возможностью начала и возобновления сеансов пользователей по различным условиям, ограничение общего числа возможных сеансов для работы с информационной базой, резервирование возможности работы с информационной базой определенных польззователей, запрет запуска нескольких сеансов для пользователя, журнализация событий начала (возобновления) и завершения (гибернации) сеансов, ведение списка активных сеансов для информационных баз кластера серверов

3600 руб.

06.02.2017    31104    31    18    

47

Хранилище файлов на SQL

Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Управленческий учет Платные (руб)

Привязка файлов / сканов к объектам 1С с сохранением их на SQL-сервере

12000 руб.

09.10.2019    10973    5    8    

9
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 15.05.18 05:49
Сообщение было скрыто модератором.
...
2. sergathome 4 15.05.18 15:06 Сейчас в теме
Эх ребяты, где ж вы были года 3 назад, когда нас угораздило вляпаться в релиз платформы, который не освобождал лицензии...
16. пользователь 17.05.18 05:52
Сообщение было скрыто модератором.
...
3. spezc 782 15.05.18 15:16 Сейчас в теме
А штатное время засыпания и время завершения спящего? Чем хуже.
5. aabogachev 171 15.05.18 16:00 Сейчас в теме
(3) ну хотя бы тем, что виджеты постоянно обновляются и сеанс никогда не станет спящим. кроме виджетов куча всяких штук которые проверяют уведомления и т.п. поэтому приложение будучи свёрнутым все равно остается живым днями, ночами, неделями, месяцами, годами. как угодно. нас это не устраивает. нам хочется чтобы пользователи поработали и закрыли приложение. если надо свернули, но были готовы к тому, что оно прекратит работу само. на этом мы экономим большие деньги.

настройки в базе по освобождению зависших/спящих сеансов сделаны, но таковыми сеансы становятся только тогда, когда приложение завершило свою работу "некорректно"
user1371486; spezc; +2 Ответить
4. o4karek 15.05.18 15:26 Сейчас в теме
А каким образом формируется анализируемый регистр сведений?
ЗЫ: С ДО не знаком
6. aabogachev 171 15.05.18 16:11 Сейчас в теме
(4) есть общий модуль "ПротоколированиеРаботыПользователей". Там куча функций и процедур, которые пишут в этот РС в зависимости от тех или иных событий и действий пользователя в системе (кстати, чтобы это происходило должна быть включена настройка "Настройка и Администрирование" - "Настройка прав доступа" - "Протоколировать работу пользователей")

Например когда пользователь открывает приложение происходит это

ПротоколированиеРаботыПользователей.ЗаписатьВходВСистему();

и т.п.

вот (скриншот) список событий которые РС протоколирует
Прикрепленные файлы:
7. o4karek 15.05.18 16:20 Сейчас в теме
(6) Понял. Т.е. это не совсем честная активность? Это так активность, которую отслеживает подсистема ДО?
Т.е. если я решу доработать ДО и воткну туда что-то, что этим общим модулем не пользуется, предложенное регламентное задание может этот сеанс выстричь даже во время работы. Я правильно понял?
9. aabogachev 171 15.05.18 16:44 Сейчас в теме
(7) если вы доработаете и будете отслеживать "свои" действия, которые запихнете в этот РС - то конечно оно отработает запрос, найдет их и не выкинет пользователя. выборка то будет не пустой. только вид действия надо будет добавить в Перечисление, скриншот которого я положил выше. все просто.
11. o4karek 15.05.18 17:13 Сейчас в теме
(9) Ну тогда (ИМХО) стоит откорректировать заголовок и/или начало статьи. Я подумал, что сделано некоторое универсальное регламентное задание, которое для примера вклеено в ДО.
А у вас сделано специализированный вариант для конкретной конфы. Он не становится от этого плохим, просто стоит сразу об этом сказать :)
8. herfis 498 15.05.18 16:22 Сейчас в теме
Идея проста и понятна. Весь дьявол - в критериях определения активности.
Если пользователь, скажем, в течение получаса заполняет новый документ - это как зафиксируется в протоколе?
10. aabogachev 171 15.05.18 16:46 Сейчас в теме
(8) никак. как только мы столкнемся с подобного рода проблемами - мы передвинем планку, то есть рег задание будет стартовать не раз в 30 минут, а раз в час и т.п.
но и в приведенном вами примере, на сколько я помню, если открыть файл "на редактирование" а потом закрыть приложение, потом снова открыть, оно "поймет" что файл захвачен на редактирование и попробует поискать в темповой папке ваш файл, который вы "так долго редактировали". так что пример не совсем удачный, но я понял что вы имеете в виду, пока для нас это не проблема.
12. herfis 498 15.05.18 17:25 Сейчас в теме
(10) Мне показалось, что вы позиционировали решение как универсальное.
Если речь об учетной системе предприятия, то подобные сценарии не являются чем-то невероятным.
"Честную" активность, к сожалению, можно будет определять только если соответствующую возможность добавят в платформу.
Как промежуточный вариант, в принципе, можно реализовать такое: выдавать пользователю предупреждение о завершении сеанса с большим таймаутом при длительном отсутствии активности по протоколу а при отмене предупреждения пользователем - записывать это событие в протокол.
ЗЫ. Правда, при такой схеме нет особой необходимости в регламентном задании :) Зависшие сеансы и так станут спящими и перестанут "есть" лицензию. Остаются только сеансы с какими-нить висящими модальными окошками. Но ими, в принципе, можно пренебречь, так как они вряд ли сделают погоду.
13. aabogachev 171 15.05.18 17:45 Сейчас в теме
(12) вы правы, если делать "универсально", то так и следует поступить, но это можно оставить для тех, кто захочет оптимизировать данное решение, у меня "это" работает уже полгода, как в том анекдоте про сисадмина - "работает и работает, не надо ничего трогать".
20. androgin 23.05.18 03:39 Сейчас в теме
(13) а чем журнал регистрации не устраивает?
14. kolya_tlt 86 16.05.18 14:41 Сейчас в теме
как и все разработчики 1С:ДО решение наполнено запросами в цикле, очень жаль ...
зы у вас реально Елен Николаевн так много в компании?
15. aabogachev 171 16.05.18 15:13 Сейчас в теме
(14) я к сожалению не разработчик, я просто временно решаю проблемы. так сказать создаю костыли. и мне за это платят.
Елен Николавн да, много.
17. teller 17.05.18 09:46 Сейчас в теме
(15)
так сказать создаю костыли. и мне за это платят
- тут все такие, никто блокчейны не изобретает
18. kolya_tlt 86 17.05.18 14:13 Сейчас в теме
(15) вообще сложно человека перед конфигуратором назвать разработчиком, но мы все эти делаем, а в резюме пишим - программист :)
19. androgin 19.05.18 00:19 Сейчас в теме
Вот это запускается у каждого пользователя само каждые 20 мин (подписка или через обработчик ожидания - сами решите, как вам угодно!):

// на клиенте
Процедура ЗавершитьНеактивныйСеансКлиент() Экспорт
	СеансНеАктивен = ПростойСеансаПоЖурналуРегистрации();
	Если СеансНеАктивен Тогда
	    ЗавершитьРаботуСистемы();        	
	КонецЕсли;
КонецПроцедуры

// на сервере
Функция ПростойСеансаПоЖурналуРегистрации() Экспорт
	
	СеансНеАктивен = Ложь;
	
	// только последние 20 минут
	ДатаНачала = ТекущаяДата()-1200;
	ДатаОкончания = ТекущаяДата();
	
	МассивСобытий = Новый Массив;
	МассивСобытий.Добавить("_$Data$_.New");
	МассивСобытий.Добавить("_$Data$_.Update");
	МассивСобытий.Добавить("_$Data$_.Delete");
	МассивСобытий.Добавить("_$Data$_.Post");
	МассивСобытий.Добавить("_$Data$_.Unpost");
	
	ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Пользователи.ИдентификаторПользователяИБ());
	Фильтр = Новый Structure("ДатаНачала, ДатаОкончания, Пользователь, Событие", ДатаНачала, ДатаОкончания, ПользовательИБ, МассивСобытий);
	
	ТЗ = Новый ТаблицаЗначений;
	ТЗ.Колонки.Добавить("Дата");
	ТЗ.Колонки.Добавить("Пользователь");
	ТЗ.Колонки.Добавить("ИмяПользователя");
	ТЗ.Колонки.Добавить("Компьютер");
	ТЗ.Колонки.Добавить("Событие");
	ТЗ.Колонки.Добавить("ПредставлениеДанных");
	
	ВыгрузитьЖурналРегистрации(ТЗ, Фильтр,"Дата, ИмяПользователя, Компьютер, Событие, ПредставлениеСобытия , ПредставлениеДанных");
	
	Если ТЗ.Количество() = 0 Тогда
		СеансНеАктивен = Истина;         	
	КонецЕсли;
	
	Возврат СеансНеАктивен;
	
КонецФункции
Показать

Меня устраивает )))
Xershi; e-katerina; mikolamail; ildary; +4 Ответить
21. mikolamail 28.05.18 22:34 Сейчас в теме
(19)
подписка

Не понятно как можно Подписку использовать. Ведь она срабатывает на определенные события. А раз есть событие, значит сеанс еще активен...
22. androgin 29.05.18 00:41 Сейчас в теме
(21) это я так выразился, давая понять, что "пихайте куда хотите" )))
23. ildary 21 29.05.18 07:28 Сейчас в теме
(19) спасибо за интересную реализацию. Жалко что в БСП такого нет.
aabogachev; +1 Ответить
24. Svet_Serg 28.01.19 14:27 Сейчас в теме
Для этого вам понадобится две учетных записи: администратор кластера,

У нас нет администратора кластера. Совсем. Что можно вписать вместо учётки админа кластера?
25. Svet_Serg 11.03.20 16:31 Сейчас в теме
Не прошло и года, настроила на нашем ДО. Всё работает!

Дальше происходит отключение сеанса пользователя, находящегося в списке на отключение, делается это с помощью функционала администрирования кластера 1С.


А как бы им ещё сообщение выдавать особенное, типа "Вы отключены от ИБ, т.к. сидели и жевали сопли"?
26. Svet_Serg 12.03.20 10:24 Сейчас в теме
У всей этой доработки есть один несущественный минус - т.к. не все события пишутся в ПротоколРаботыПользователей, то существует ненулевая вероятность, что пользователя "выкинет" даже если он вёл активность в приложении, но процент этих событий мал.


(0) Второй день тестируем. Выкидывает всех активных пользователей, даже если они заполняют реквизиты в документах, согласовывают документы и т.п.. (((
user1371486; +1 Ответить
27. user1465768 22.09.20 14:38 Сейчас в теме
(26)Добрвй день, что вы вписывали вместо учетки администратора кластера ?
и какой в итоге код получился для ДО?
28. Svet_Serg 22.09.20 15:34 Сейчас в теме
(27) Имя и пароль пользователя с правами "Администратор".
29. user1465768 22.09.20 15:39 Сейчас в теме
(28)Не сталкивались с вот такой ошибкой?

-2147221005(0x800401F3): Invalid class string
{ОбщийМодуль.АдминистрированиеКластераCOMКлиентСервер.Модуль(1036)}: Возврат Новый COMОбъект(ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя());
{ОбщийМодуль.АдминистрированиеКластераCOMКлиентСервер.Модуль(371)}: COMСоединитель = COMСоединитель();
{ОбщийМодуль.АдминистрированиеКластераКлиентСервер.Модуль(476)}: МенеджерАдминистрирования.УдалитьСеансыИнформационнойБазы(
{ОбщийМодуль.ЗавершениеСеансовПользователей.Модуль(65)}: АдминистрированиеКластераКлиентСервер.УдалитьСеансыИнформационнойБазы(ПараметрыАдминистрирования,ПараметрыАдминистрированияИБ, Фильтр);

по причине:
-2147221005(0x800401F3): Invalid class string
31. Svet_Serg 23.09.20 10:06 Сейчас в теме
(29) Была такая ошибка, но она ушла, когда прописали правильные порты и решили вопрос с тем, кто же у нас админ кластера)
Прикрепленные файлы:
32. user1465768 23.09.20 16:24 Сейчас в теме
(31)решили как нибудь проблему с выкидыванием активных пользователей?
33. Svet_Serg 24.09.20 15:50 Сейчас в теме
(32) не, забили, не используем эту обработку. У вас тоже выкидывает?
30. user1465768 22.09.20 15:41 Сейчас в теме
(28)Она проявляется пири запуске фонового задания
34. user1465768 25.09.20 12:57 Сейчас в теме
(33) да , такая же ситуация, придется искать какое то другое решение
Оставьте свое сообщение