При работе с программными продуктами семейства 1С:Предприятие пользователи часто сталкиваются с ситуацией, когда базовая версия конфигурации разворачивается в клиент-серверном варианте (на SQL-сервере). Несмотря на то что технически это осуществимо при наличии серверной лицензии и лицензий уровня ПРОФ, программный код базовой конфигурации продолжает соблюдать жесткие ограничения. Одной из самых неприятных проблем является невозможность загрузки банковских выписок из-за запуска фоновых процессов. В этой статье мы подробно разберем, почему это происходит и как можно обойти данное ограничение.
Давайте проанализируем, как работает механизм загрузки банковских выписок в современных редакциях 1С:Бухгалтерии. Для того чтобы интерфейс программы не «зависал» во время парсинга тяжелых текстовых файлов или взаимодействия с банковскими сервисами, разработчики используют механизм длительных операций. Когда мы инициируем процесс загрузки, система вызывает метод ФоновыеЗадания.Выполнить().
В файловом варианте работы это может проходить незаметно, но в клиент-серверном режиме (SQL) сервер «1С:Предприятия» создает для выполнения этого задания новый сеанс. Здесь и кроется корень проблемы: базовая версия конфигурации на программном уровне проверяет количество активных соединений. Как только счетчик сеансов увеличивается до двух (один — основной сеанс пользователя, второй — фоновое задание для парсинга выписки), система выдает ошибку о нарушении ограничений базовой версии.
Рассмотрим технический способ решения, который позволяет выполнить операцию в контексте текущего сеанса, не создавая новый поток на сервере. Для этого мы можем воспользоваться специфическим параметром запуска платформы.
Выясним, как это работает. Если запустить информационную базу с параметром /O"РежимОтладки", платформа переводит выполнение большинства механизмов длительных операций из асинхронного режима в синхронный. Это означает, что процедура парсинга будет выполняться «здесь и сейчас», блокируя интерфейс пользователя, но зато в рамках того же самого единственного разрешенного сеанса.
Пошаговая инструкция по настройке:
/O"РежимОтладки" (важно соблюдать регистр и кавычки).После этого попробуем снова выполнить загрузку банковских выписок. Проанализируем поведение системы: интерфейс может стать неактивным на время обработки файла, однако ошибка о превышении количества сеансов должна исчезнуть.
Разберем ситуацию с точки зрения лицензионной чистоты и стабильности. Использование базовой версии конфигурации в клиент-серверном режиме — это нештатная ситуация. Согласно лицензионному соглашению, базовые версии не предназначены для работы на SQL-сервере. Даже если мы решим проблему с фоновыми заданиями, мы можем столкнуться с другими ограничениями, такими как невозможность ведения учета по нескольким организациям в одной базе или отсутствие поддержки COM-соединений.
Процесс перехода на версию ПРОФ является наиболее надежным решением. Для этого нам необходимо:
.cf) версии ПРОФ.Важно понимать, что ограничения базовой версии «зашиты» не только в платформу, но и в саму логику конфигурации. Посмотрим на список основных запретов, которые влияют на серверную работу:
Проанализируем программный код, который обычно вызывает проблему. В типовых конфигурациях это выглядит примерно так:
Процедура ЗагрузитьВыписки()
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
// Именно здесь в SQL-варианте создается второй сеанс
Результат = ДлительныеОперации.ВыполнитьВФоне("МодульЗагрузки.ВыполнитьПарсинг", Параметры, ПараметрыВыполнения);
КонецПроцедуры
Использование параметра РежимОтладки заставляет метод ВыполнитьВФоне проигнорировать создание фонового задания и запустить процедуру МодульЗагрузки.ВыполнитьПарсинг напрямую.
Мы рассмотрели два основных пути решения проблемы. Если вам требуется быстрое устранение ошибки «малой кровью» для разовой загрузки данных, используйте параметр запуска /O"РежимОтладки". Однако для постоянной и стабильной работы организации в клиент-серверном режиме мы настоятельно рекомендуем выполнить переход на версию ПРОФ.
Это не только решит проблему с банковскими выписками, но и позволит полноценно использовать возможности SQL-сервера, такие как параллельное выполнение регламентных заданий, автоматическое обновление полнотекстового поиска и корректное создание резервных копий без отключения пользователей.