Как решить проблему с 'зависанием' лицензий и незавершением сеансов регламентных заданий в 1С:Управление торговлей 11.4?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При работе с информационной системой 1С:Предприятие, особенно в условиях высокой нагрузки и активного использования регламентных заданий, мы можем столкнуться с различными нюансами, связанными с управлением сеансами и лицензиями. Одним из таких неочевидных затруднений является ситуация, когда регламентное задание выполняется от имени пользователя, которому установлен флаг «Запретить запуск клиента». На первый взгляд может показаться, что этот флаг не должен влиять на фоновые процессы, однако практика показывает обратное. Давайте разберем эту проблему подробнее, выясним ее причины и найдем эффективное решение.

Выясняем истинную причину: флаг 'Запретить запуск клиента' и лицензии

Многие из нас, сталкиваясь с невозможностью запуска регламентного задания под пользователем с флагом Запретить запуск клиента, могут ошибочно предположить, что именно это ограничение препятствует его выполнению. Однако, как мы выяснили, флаг Запретить запуск клиента в системе 1С:Предприятие предназначен исключительно для предотвращения интерактивного входа пользователя в клиентское приложение. Он не должен влиять на возможность выполнения фоновых задач, таких как регламентные задания, которые по своей природе не требуют интерактивного сеанса.

Тем не менее, в определенных версиях платформы 1С:Предприятие нами было обнаружено, что этот флаг может косвенно вызывать серьезную проблему: незавершение сеансов регламентных заданий и, как следствие, «зависание» занятых серверных лицензий. Мы наблюдали ситуацию, когда регламентное задание успешно отрабатывало, но сеанс пользователя, от имени которого оно было запущено, продолжал оставаться активным в консоли сервера 1С. Это приводило к постоянной потере одной или нескольких лицензий, что могло блокировать работу других пользователей или препятствовать запуску новых фоновых процессов при исчерпании пула лицензий.

Более того, попытки принудительно завершить такие «зависшие» сеансы через консоль сервера 1С часто не приносили долговременного результата. Сеанс мог ненадолго исчезнуть, но затем вновь появлялся, как будто некий процесс или фоновое задание продолжало его удерживать или инициировать заново, снова занимая лицензию.

Диагностика проблемы: как определить 'зависшие' сеансы и лицензии

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

  1. Проверка активных сеансов через консоль сервера 1С.

    Основным инструментом для выявления «зависших» сеансов является консоль сервера 1С:Предприятия. Мы должны регулярно просматривать список активных сеансов. Если мы видим сеансы пользователей, от имени которых запускались регламентные задания, и эти сеансы остаются активными значительно дольше, чем предполагаемое время выполнения задания (или вовсе висят постоянно), это является явным признаком проблемы.

    Особое внимание следует уделить сеансам, запущенным от имени пользователей с флагом Запретить запуск клиента. Если регламентное задание работает корректно, его сеанс должен завершаться и исчезать из списка активных сеансов вскоре после окончания выполнения.

  2. Анализ технологического журнала 1С.

    В более сложных случаях, когда необходимо понять, почему сеанс не завершается, мы можем обратиться к технологическому журналу 1С:Предприятия. В нем фиксируются события, связанные с созданием и завершением сеансов, а также ошибки, которые могли произойти в процессе выполнения регламентного задания или при попытке завершения сеанса. Анализируя записи в журнале, мы можем получить более детальную информацию о поведении системы.

  3. Наблюдение за доступными лицензиями.

    Если количество доступных серверных лицензий постоянно уменьшается, а число активно работающих пользователей или корректно завершившихся фоновых процессов не соответствует этой динамике, это также может указывать на проблему с «зависшими» лицензиями, удерживаемыми незавершенными сеансами регламентных заданий.

Основное решение проблемы: Обновление платформы 1С

Как показывает опыт и подтверждение в рассматриваемой ситуации, самым эффективным и надежным решением описанной проблемы является обновление платформы 1С:Предприятие до актуальной версии. Подобные аномалии в работе с сеансами, управлением ресурсами и лицензиями часто являются следствием ошибок или недоработок в предыдущих версиях платформы, которые разработчики 1С исправляют в последующих релизах.

В нашем конкретном случае, проблема с «зависанием» лицензий и незавершением сеансов регламентных заданий была успешно устранена после обновления платформы 1С:Предприятие с версии 8.3.18.1289 до 8.3.22.1709. Это свидетельствует о том, что в более новых версиях платформы были внесены исправления, касающиеся корректной работы фоновых заданий и освобождения лицензий даже для пользователей с флагом Запретить запуск клиента.

Мы настоятельно рекомендуем всегда использовать последние стабильные версии платформы 1С:Предприятие. Это не только позволяет избежать известных ошибок и проблем, подобных описанной, но и обеспечивает повышение общей стабильности, безопасности и производительности системы.

  1. Планирование обновления.

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

  2. Проверка совместимости.

    Мы должны убедиться, что наша конфигурация (например, 1С:Управление торговлей 11.4) полностью совместима с выбранной версией платформы 1С. Информацию о совместимости всегда можно найти на официальном портале 1С:ИТС (Информационно-Технологическое Сопровождение), в разделе описания версий платформы и конфигураций.

  3. Процесс обновления.

    Мы выполняем обновление платформы в строгом соответствии с инструкциями, предоставляемыми фирмой 1С. Этот процесс обычно включает в себя несколько важных шагов:

    1. Создание резервной копии: Всегда делаем полную резервную копию информационной базы и настроек сервера 1С перед началом любых обновлений.
    2. Установка новой версии платформы: Устанавливаем новую версию платформы на сервер 1С:Предприятия, а также обновляем клиентские приложения на всех рабочих местах.
    3. Обновление информационных баз: После установки платформы, мы должны запустить информационные базы в режиме «Конфигуратор» для их обновления до новой версии платформы.

Дополнительные рекомендации и профилактика

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

  1. Регулярный мониторинг активных сеансов и использования лицензий.

    Нам следует настроить систему мониторинга, которая будет отслеживать активные сеансы на сервере 1С и использование лицензий. Это может быть как встроенные средства консоли сервера, так и специализированные сторонние решения. Регулярный мониторинг позволит нам оперативно выявлять любые аномалии, такие как «зависшие» сеансы или необъяснимое снижение количества доступных лицензий, и предотвращать их развитие до критического состояния.

  2. Тщательная настройка регламентных заданий.

    Мы должны внимательно проверить настройки каждого регламентного задания в нашей системе. Убедимся, что:

    • Интервал запуска: Интервал между запусками регламентного задания достаточно велик, чтобы предыдущий сеанс успел корректно завершиться. Слишком частый запуск может привести к наложению сеансов и возникновению ошибок.
    • Пользователь для запуска: Для каждого регламентного задания мы должны использовать выделенного пользователя с минимально необходимым набором прав доступа. Этот пользователь не должен иметь лишних прав, но при этом иметь все необходимые разрешения для выполнения задач, предусмотренных регламентным заданием. При этом флаг Запретить запуск клиента для такого пользователя остается полезным с точки зрения безопасности, но его корректная работа зависит от стабильности платформы, как мы выяснили.
    • Журналирование: Настроим подробное журналирование для регламентных заданий, чтобы в случае проблем мы могли быстро проанализировать ход их выполнения и выявить ошибки.
  3. Оптимизация кода регламентных заданий.

    Если регламентные задания выполняют сложные или ресурсоемкие операции, нам необходимо стремиться к их максимальной оптимизации. Чем быстрее и эффективнее выполняется задание, тем меньше времени оно занимает, снижая риск различных проблем, включая зависание сеансов. Мы должны использовать наиболее эффективные алгоритмы, минимизировать количество запросов к базе данных и оптимизировать работу с большими объемами данных.

    Например, вместо обработки всех данных за один раз, мы можем рассмотреть возможность их порционной обработки с сохранением состояния между запусками.

    
    // Пример оптимизации: обработка порциями
    Функция ОбработатьДокументыПорциями(НачальныйИндекс) Экспорт
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    Документ.Ссылка
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК Документ
        |ГДЕ
        |    Документ.Проведен = ЛОЖЬ
        |УПОРЯДОЧИТЬ ПО
        |    Документ.Дата
        |ИТЕРАЦИЯ ПО
        |    Документ.Ссылка";
        // В реальной задаче добавляем параметры для порционной выборки
        // Например, ОГРАНИЧИТЬ 100 СМЕЩЕНИЕ НачальныйИндекс
    
        РезультатЗапроса = Запрос.Выполнить().Выбрать();
        Пока РезультатЗапроса.Следующий() И Итератор < 100 Цикл // Обрабатываем не более 100 документов за раз
            Попытка
                ДокументОбъект = РезультатЗапроса.Ссылка.ПолучитьОбъект();
                ДокументОбъект.Провести();
                // Дополнительная логика обработки
            Исключение
                ЗаписатьВЖурналРегистрации("Ошибка обработки документа: " + ОписаниеОшибки());
            КонецПопытки;
            Итератор = Итератор + 1;
        КонецЦикла;
    
        Возврат Итератор > 0; // Возвращаем Истина, если были обработаны документы
    КонецФункции
    
    // В модуле регламентного задания
    Процедура ЗаданиеОбработкиДокументов() Экспорт
        Параметры = РегламентныеЗадания.ПолучитьПараметрыЗадания("ЗаданиеОбработкиДокументов");
        Если Параметры = Неопределено Тогда
            Параметры = Новый Структура("НачальныйИндекс", 0);
        КонецЕсли;
    
        Пока ОбработатьДокументыПорциями(Параметры.НачальныйИндекс) Цикл
            Параметры.НачальныйИндекс = Параметры.НачальныйИндекс + 100; // Смещаемся для следующей порции
            РегламентныеЗадания.УстановитьПараметрыЗадания("ЗаданиеОбработкиДокументов", Параметры);
            // Можно здесь вызывать ЗафиксироватьТранзакцию() для сохранения прогресса
        КонецЦикла;
    
        // Сброс индекса, если все документы обработаны
        Параметры.НачальныйИндекс = 0;
        РегламентныеЗадания.УстановитьПараметрыЗадания("ЗаданиеОбработкиДокументов", Параметры);
    КонецПроцедуры
    
  4. Изучение документации 1С:ИТС.

    Мы должны регулярно обращаться к ресурсам 1С:ИТС и официальной документации, чтобы быть в курсе последних рекомендаций, изменений и исправлений, касающихся работы платформы и конфигураций. Это поможет нам своевременно узнавать о возможных проблемах и их решениях, а также применять лучшие практики в нашей работе.

Заключение

Мы с вами подробно рассмотрели проблему «зависания» лицензий и незавершения сеансов регламентных заданий в 1С:Предприятие 8.3, которая проявляется при использовании пользователей с флагом Запретить запуск клиента. Мы выяснили, что основной причиной является ошибка в платформе 1С, и наиболее эффективным решением является ее обновление до актуальной версии.

Помимо этого, мы проанализировали методы диагностики проблемы, включая мониторинг активных сеансов и технологического журнала, а также обсудили ряд профилактических мер. Эти меры включают тщательную настройку регламентных заданий, оптимизацию их кода и постоянное внимание к официальным рекомендациям 1С. Применяя эти подходы, мы сможем обеспечить стабильную, надежную и эффективную работу нашей системы 1С:Предприятие.

← На главную