При работе с Распределенными Информационными Базами (РИБ) в 1С:Предприятии, особенно когда сервер развернут на операционной системе Linux, пользователи часто сталкиваются с трудностями при обновлении расширений. Часто это происходит в рамках реализации защищенной IT-инфраструктуры на базе Astra Linux, где требования к стабильности и безопасности выше. Эти проблемы могут проявляться по-разному: от невозможности запустить обновление из клиентского приложения до критических ошибок при попытке изменить структуру данных — для предотвращения таких ситуаций полезен архитектурный анализ и выявление зависимостей расширений. Давайте рассмотрим основные причины этих проблем и предложим эффективные решения, основанные на опыте коллег и рекомендациях специалистов 1С.
Мы выяснили, что существует несколько ключевых моментов, которые могут помешать успешному применению обновлений расширений в РИБ, особенно в связке с сервером 1С на Linux.
Одна из наиболее частых причин, по которой пользователи не могут установить обновления расширений, запускаемые из режима «Предприятие» по кнопке «Установить обновления», заключается во встроенной проверке операционной системы. Механизм обновления в стандартных подсистемах 1С, например, в функции ПоддерживаетсяУстановкаОбновлений общего модуля ОбновлениеКонфигурацииКлиент, содержит условие, которое блокирует выполнение обновления, если клиентское приложение запущено не под управлением Windows. Это означает, что если вы работаете с тонким клиентом 1С под Linux, система не позволит вам инициировать процесс обновления.
Если Не ОбщегоНазначенияКлиент.ЭтоWindowsКлиент Тогда
Результат.ОписаниеОшибки = НСтр("ru = 'Установка обновления доступна только в ОС Windows.'");
КонецЕсли;
Мы видим, что это условие является прямой причиной, по которой обновление не может быть выполнено из Linux-клиента.
Если ваше расширение включает в себя изменения, затрагивающие структуру базы данных (например, добавление новых реквизитов, документов, справочников), то при попытке его обновить может возникнуть следующая ошибка:
"Установка расширений конфигурации, модифицирующих структуры данных, в фоновом задании запрещена"
Это ограничение платформы 1С:Предприятие направлено на обеспечение целостности данных. Изменения структуры базы данных – это критически важные операции, которые должны выполняться в монопольном режиме, чтобы избежать конфликтов и повреждения данных. Фоновые процессы или регламентные задания не имеют таких гарантий монопольности, поэтому платформа блокирует подобные операции.
Пользователи сталкивались с тем, что на некоторых версиях платформы 1С:Предприятие (например, 8.3.27.1644) процесс принятия изменений конфигурации мог занимать аномально долгое время, вплоть до нескольких часов, даже при незначительных изменениях в метаданных. Само сравнение и анализ конфигураций проходили быстро, но этап непосредственного принятия изменений сильно затягивался.
Теперь, когда мы понимаем причины возникновения проблем, давайте рассмотрим, как мы можем их решить или обойти.
Поскольку платформа 1С требует выполнения обновлений из среды Windows, мы можем использовать следующий обходной путь:
Этот метод эффективно обходит проверку операционной системы, так как клиентское приложение, инициирующее обновление, работает под Windows.
Если вы сталкиваетесь с ошибкой "Установка расширений конфигурации, модифицирующих структуры данных, в фоновом задании запрещена", нам потребуется выполнить обновление в монопольном режиме и отключить все фоновые процессы:
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, что указывает на глубокие проблемы с механизмом обновления расширений в конкретной версии платформы или в данной среде.
Этот способ может быть приемлем для небольшого количества периферийных узлов или для редких обновлений расширений. Однако для систем с большим количеством точек и частыми изменениями он становится крайне трудозатратным и неэффективным. Кроме того, этот метод не решает проблему синхронизации данных через РИБ для новых объектов расширения, если они должны участвовать в обмене. Его стоит рассматривать как крайний случай для восстановления работоспособности.
Если вы столкнулись с аномально долгим принятием изменений конфигурации или расширений (как это было замечено на платформе 8.3.27.1644), нам необходимо предпринять следующее:
Для минимизации проблем при работе с РИБ и расширениями мы можем придерживаться следующих практик:
Работая в условиях РИБ с серверами на Linux, мы понимаем, что процесс обновления расширений может быть сложным. Однако, применяя предложенные решения и подходы, мы сможем эффективно справляться с возникающими трудностями и поддерживать работоспособность наших информационных систем.