После обновления конфигурации «Бухгалтерия предприятия» до версии 3.0.129.13 и последующих релизов пользователи и администраторы часто сталкиваются с рядом специфических проблем. Мы разберем наиболее частые из них: ошибки при программном подключении через COM-объекты (в частности, V83.Application) и проблему зависших сеансов на сервере 1С:Предприятия. Также рассмотрим особенности настройки «Вариант работы» для механизма RLS.
Одним из самых неприятных «сюрпризов» после обновления стало невозможность программного взаимодействия с базой через COM-объект V83.Application. Пользователи сообщали, что при попытке вызова метода Connect приложение просто «висит» без ошибки или, что еще чаще, выдает сообщение:
{ОбщийМодуль.УведомленияОтФНСАУСНКлиент.Модуль(109,23)}: Тип не определен (ОписаниеКомандыСистемыВзаимодействия)
Эта ошибка указывала на проблему с инициализацией модуля УведомленияОтФНСАУСНКлиент при программном запуске.
Выяснилось, что проблема была вызвана изменениями, связанными с обменом с банком через сервис АУСН (Автоматизированная упрощенная система налогообложения), реализованными в версии 3.0.129.13 «Бухгалтерии предприятия».
Фирма 1С оперативно отреагировала на проблему и выпустила официальное исправление. Если вы столкнулись с ошибкой ОписаниеКомандыСистемыВзаимодействия при подключении через V83.Application, первым делом проверьте наличие и установку патча под названием EF_60005452. Этот патч предназначен специально для устранения данной ошибки.
Как работают патчи (исправления) 1С:
Если патч установлен, но проблема остается, убедитесь, что он применился корректно, и попробуйте перезапустить приложение 1С. В одном из сообщений форума упоминалось, что ошибка появлялась, несмотря на установленный патч, что может указывать на специфические условия запуска или неполное применение патча.
Если официальный патч не помогает или вы по каким-то причинам не можете его установить, пользователи нашли обходное решение: вместо V83.Application использовать V83.COMConnector.
Особенности перехода:
V83.COMConnector.Используя V83.COMConnector, мы можем подключаться к базе, обходить метаданные и выполнять SQL-запросы. Рассмотрим общие принципы:
// Пример подключения на VBA из Excel
Dim ComConnector As Object
Dim V83Connection As Object
Set ComConnector = CreateObject("V83.COMConnector")
' Строка соединения может быть разной, для файловой базы или клиент-серверной
' Для файловой: File="C:\Базы\МояБаза";Usr="ИмяПользователя";Pwd="Пароль";
' Для клиент-серверной: Srvr="ИмяСервера";Ref="ИмяБазы";Usr="ИмяПользователя";Pwd="Пароль";
Dim ConnectionString As String
ConnectionString = "File=""C:\1CBase\MyBP30"";Usr=""МойПользователь"";Pwd=""МойПароль"";"
Set V83Connection = ComConnector.Connect(ConnectionString)
' Теперь V83Connection - это объект, через который можно взаимодействовать с 1С
' Например, получить менеджер запросов:
Dim Запрос As Object
Set Запрос = V83Connection.NewObject("Запрос")
' Выполнить SQL-запрос
Запрос.Текст = "ВЫБРАТЬ * ИЗ Документ.РеализацияТоваровУслуг";
Dim РезультатЗапроса As Object
Set РезультатЗапроса = Запрос.Выполнить()
' Выгрузить результат
Dim Выборка As Object
Set Выборка = РезультатЗапроса.Выбрать()
' Обход метаданных также возможен через V83Connection.Метаданные
Dim МетаданныеКонфигурации As Object
Set МетаданныеКонфигурации = V83Connection.Метаданные
' Например, получить все документы
For Each ДокументМетаданных In МетаданныеКонфигурации.Документы
' Работаем с ДокументМетаданных.Имя, ДокументМетаданных.Представление
Next
' Закрытие соединения
Set V83Connection = Nothing
Set ComConnector = Nothing
Обратите внимание, что при использовании V83.COMConnector для пользователя, под которым происходит подключение к целевой базе, должны быть корректно настроены права доступа. Часто требуется установить профили «Администратор» и/или «Синхронизация данных с другими программами» в разделе «Администрирование» -> «Настройки пользователей и прав» -> «Пользователи» целевой базы. Иначе вы можете получить ошибку «Внешнее соединение не разрешено для указанного пользователя 1С:Предприятия».
V83.COMConnector, имея только логин/пароль бухгалтера, невозможно. COM-объекты предполагают прямое взаимодействие с установленной на сервере или локально платформой 1С:Предприятия. Для работы с 1С.Фрэш используются другие механизмы, как правило, через веб-сервисы или специализированные API, предоставляемые сервисом.В некоторых случаях после обновления платформы классы V83.Application или V83.COMConnector могут исчезнуть из реестра. В таком случае их необходимо зарегистрировать вручную. Мы выполним это с помощью командной строки:
V83.COMConnector:
regsvr32 "C:\Program Files\1cv8\[номер платформы]\bin\comcntr.dll"
Замените [номер платформы] на актуальную версию вашей платформы 1С (например, 8.3.22.1750).
V83.Application:
"C:\Program Files\1cv8\[версия платформы]\bin\1cv8.exe" /regserver
Также замените [версия платформы] на вашу версию.
Еще одна распространенная проблема, с которой столкнулись пользователи после обновлений, – это «зависшие» сеансы на сервере 1С:Предприятия. Сеанс вроде бы удаляется, но через некоторое время появляется вновь и может висеть сутками, мешая работе администраторов, например, для выполнения регламентных операций в монопольном режиме.
Важно различать действительно зависшие сеансы и «спящие» сеансы. Начиная с платформы 8.3.5, 1С реализовала механизм «спящих» сеансов для повышения устойчивости работы клиентских приложений. При длительной неактивности пользователя или засыпании клиентского компьютера сеанс не завершается, а переходит в спящий режим и возобновляется при появлении активности. Платформа периодически (каждые 5-10 минут) вызывает сервер для поддержания активности сеанса, поэтому не рекомендуется устанавливать время засыпания сеанса менее 10 минут. Зависшие сеансы, в отличие от спящих, не имеют активного соединения и рабочего процесса и могут висеть сутками, не реагируя на стандартные методы завершения.
Мы предлагаем эффективный способ борьбы с зависшими сеансами через консоль администрирования серверов 1С:Предприятия:
86400 секунд (24 часа). Мы временно изменим его на 10 секунд.86400) и снимем флаг «Принудительно завершать проблемные процессы».Важное примечание: Данная настройка распространяется на все базы данных, входящие в этот кластер. Поэтому используйте этот метод с осторожностью, понимая, что он может временно повлиять на всех пользователей в кластере.
Помимо настроек в консоли кластера, существуют и другие подходы к управлению зависшими сеансами:
В ходе обсуждения проблем с COM-подключениями был затронут вопрос настройки «Вариант работы» в разделе «Администрирование» -> «Настройки пользователей и прав» -> «Группы доступа». Хотя эта настройка не оказалась прямым решением проблем с COM-объектами, она важна для понимания работы системы.
Данная настройка относится к механизму RLS (ограничение доступа на уровне записей). Она определяет, каким образом платформа 1С будет обрабатывать ограничения прав доступа:
В контексте нашей проблемы с COM-объектами, кратковременное переключение на «Производительный» и затем обратно на «Стандартный» вариант (как было описано в сообщении 6) не оказалось стабильным решением и было признано заблуждением (сообщение 9). Однако понимание этой настройки является частью общей грамотности системного администратора и разработчика 1С.
В ходе обсуждения упоминалась платформа 8.3.23.1437. Мы выяснили, что на момент обсуждения она была доступна как «Версия для ознакомления» или тестовая. Это указывает на то, что данная версия могла содержать новые функциональные возможности, например, автоматическое (каждые 20 минут) сохранение измененных пользователем данных для клиентского приложения, а также возможность управлять сохранением настроек окна клиентского приложения.
Мы всегда рекомендуем следующие действия для поддержания стабильности и работоспособности вашей системы 1С:
Следуя этим рекомендациям и используя предложенные решения, вы сможете эффективно справляться с проблемами, возникающими после обновлений 1С:Бухгалтерии 3.0.