Как обновить расширения в Распределенной Информационной Базе (РИБ) 1С:Предприятие при работе сервера на Linux и избежать ошибок?

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

При работе с Распределенными Информационными Базами (РИБ) в 1С:Предприятии, особенно когда сервер развернут на операционной системе Linux, пользователи часто сталкиваются с трудностями при обновлении расширений. Часто это происходит в рамках реализации защищенной IT-инфраструктуры на базе Astra Linux, где требования к стабильности и безопасности выше. Эти проблемы могут проявляться по-разному: от невозможности запустить обновление из клиентского приложения до критических ошибок при попытке изменить структуру данных — для предотвращения таких ситуаций полезен архитектурный анализ и выявление зависимостей расширений. Давайте рассмотрим основные причины этих проблем и предложим эффективные решения, основанные на опыте коллег и рекомендациях специалистов 1С.

Основные трудности при обновлении расширений в РИБ на Linux-серверах

Мы выяснили, что существует несколько ключевых моментов, которые могут помешать успешному применению обновлений расширений в РИБ, особенно в связке с сервером 1С на Linux.

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

    
    Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент Тогда
        Результат.ОписаниеОшибки = НСтр("ru = 'Установка обновления доступна только в ОС Windows.'");
    КонецЕсли;
    

    Мы видим, что это условие является прямой причиной, по которой обновление не может быть выполнено из Linux-клиента.

  3. Ошибки при изменении структуры данных расширений
  4. Если ваше расширение включает в себя изменения, затрагивающие структуру базы данных (например, добавление новых реквизитов, документов, справочников), то при попытке его обновить может возникнуть следующая ошибка:

    "Установка расширений конфигурации, модифицирующих структуры данных, в фоновом задании запрещена"

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

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

Эффективные решения и обходные пути

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

1. Обновление расширений на Linux-сервере: обход ограничения Windows-клиента

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

  1. Подготовьте удалённую рабочую станцию на Windows: Нам понадобится отдельный компьютер или виртуальная машина под управлением Windows. На этой машине должен быть установлен полный дистрибутив платформы 1С:Предприятие той же версии, что и на сервере Linux, включая клиентские приложения.
  2. Настройте подключение к базе на Linux-сервере: На этой Windows-машине мы добавляем в список информационных баз подключение к вашей базе данных, которая размещена на Linux-сервере. Убедитесь, что Windows-машина имеет сетевой доступ к серверу 1С и серверу СУБД (PostgreSQL).
  3. Выфорните обновление из Windows-клиента: Запустите клиент 1С (толстый или тонкий, в зависимости от конфигурации) с Windows-машины, подключитесь к базе на Linux-сервере. Теперь вы сможете нажать кнопку «Установить обновления» в режиме «Предприятие» или выполнить обновление через конфигуратор. Платформа 1С увидит, что операция инициирована из Windows-среды, и позволит её выполнить.

Этот метод эффективно обходит проверку операционной системы, так как клиентское приложение, инициирующее обновление, работает под Windows.

2. Работа с расширениями, изменяющими структуру данных

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

  1. Отключите регламентные задания: Перед началом обновления убедитесь, что все регламентные задания в информационной базе отключены. Для этих целей удобно использовать полноценный центр администрирования 1С, который позволяет массово завершать сеансы и управлять блокировками ИБ — для этого подойдёт централизованное управление сеансами и блокировками 1С.
  2. Запустите базу в монопольном режиме: Для применения изменений расширения, затрагивающих структуру данных, нам необходимо обеспечить монопольный доступ к информационной базе — поможет обработка для принудительного завершения сеансов пользователей. В этом процессе может помочь помощник оператора обновления конфигурации базы данных, который упрощает рутинные операции при обновлении рабочих баз.
  3. Используйте команду запуска 1cv8c.exe: В некоторых случаях, когда автоматическое обновление через RAS не срабатывает, можно применить специализированное регламентное задание для автоматического обновления конфигурации, адаптировав его под свои нужды, или использовать прямое выполнение команды для обновления расширений с параметрами: — есть автоматизация массового обновления баз и расширений.
  4. 
    C:\Program Files\1cv8\8.3.27.1644\bin\1cv8c.exe ENTERPRISE /S"server1c.lan\SMB" /N"****" /P"******" /WA- /AllowExecuteScheduledJobs -Off /DisableStartupMessages /DisableStartupDialogs /C"ВыполнитьЗагрузкуРасширенийИЗавершитьРаботу;РегламентныеЗаданияОтключены;РазрешитьРаботуПользователей" /UC ПакетноеОбновлениеКонфигурацииИБ
    

    Обратите внимание на параметр /C"ВыполнитьЗагрузкуРасширенийИЗавершитьРаботу;РегламентныеЗаданияОтключены;РазрешитьРаботуПользователей". Он указывает 1С выполнить загрузку расширений, отключить регламентные задания (если они были включены), а затем завершить работу. Однако, как показал лог, даже такой подход может завершиться с ошибкой Код возврата: 1, что указывает на глубокие проблемы с механизмом обновления расширений в конкретной версии платформы или в данной среде.

  5. Ручное применение расширений (как временное решение): Если автоматическое обновление через РИБ не срабатывает, мы можем прибегнуть к ручному методу. Для этого необходимо:
    1. На центральной базе сохранить файл расширения (*.cfe) через конфигуратор.
    2. Перенести этот файл на периферийный узел.
    3. На периферийном узле зайти в конфигуратор и вручную загрузить расширение из файла.

    Этот способ может быть приемлем для небольшого количества периферийных узлов или для редких обновлений расширений. Однако для систем с большим количеством точек и частыми изменениями он становится крайне трудозатратным и неэффективным. Кроме того, этот метод не решает проблему синхронизации данных через РИБ для новых объектов расширения, если они должны участвовать в обмене. Его стоит рассматривать как крайний случай для восстановления работоспособности.

3. Решение проблем с производительностью обновления

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

  1. Обновите платформу 1С:Предприятие: Пользователи и официальные ответы от 1С подтверждают, что проблема с медленным обновлением на версии 8.3.27.1644 была исправлена в более поздних релизах. Например, после обновления до версии 8.3.27.1719 и выше, производительность процесса обновления восстановилась до нормальных значений. Всегда следуйте рекомендациям 1С по использованию актуальных и стабильных версий платформы.
  2. Проверьте системные ресурсы: Хотя проблема в основном связана с платформой, убедитесь, что сервер 1С и сервер СУБД имеют достаточные ресурсы (процессор, оперативная память, дисковая подсистема) для выполнения операций обновления. Недостаток ресурсов может усугублять проблемы с производительностью.

Общие рекомендации при работе с РИБ и расширениями

Для минимизации проблем при работе с РИБ и расширениями мы можем придерживаться следующих практик:

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

Работая в условиях РИБ с серверами на Linux, мы понимаем, что процесс обновления расширений может быть сложным. Однако, применяя предложенные решения и подходы, мы сможем эффективно справляться с возникающими трудностями и поддерживать работоспособность наших информационных систем.

← На главную