Часто при работе с файловыми базами 1С (например, 1С:Управление нашей фирмой) возникает проблема с распределением нагрузки. Проанализируем следующую ситуацию: в одной локальной сети работают два пользователя. У одного мощный современный ПК, на котором и лежит папка с базой, а у второго — слабый компьютер. Настроен автоматический обмен данными по расписанию, например, каждые 30 минут.
Проблема заключается в том, что если первый (мощный) ПК выключен или пользователь закрыл 1С, регламентное задание по обмену стартует на слабом компьютере. Это приводит к полному зависанию слабого ПК, а также к ошибкам обмена, так как локальная папка для обмена находится на выключенном компьютере и недоступна. Выясним причину такого поведения и разберем по шагам несколько эффективных решений.
Рассмотрим подробнее, почему обмен "перепрыгивает" между машинами. В клиент-серверном варианте 1С фоновые и регламентные задания выполняются на стороне сервера абсолютно незаметно для пользователей. Однако в файловом варианте выделенного сервера нет. Платформе 1С приходится инициировать фоновые задачи прямо внутри активного клиентского сеанса.
Если в базе одновременно работают два человека, система может запустить обмен в любом из открытых окон программы. Именно поэтому, когда мощный ПК недоступен, вся тяжесть выполнения обмена падает на слабый компьютер.
Так как конфигурация 1С:УНФ построена на базе Библиотеки стандартных подсистем (БСП), у нас есть возможность использовать штатный механизм. Посмотрим, как это сделать:
Если мы укажем пользователя, который авторизуется только за мощным ПК, то при его отсутствии в базе задание просто не запустится. Таким образом, мы спасем слабый компьютер от зависаний.
Разберем еще один изящный способ на уровне платформы. Мы можем жестко запретить или разрешить выполнение фоновых задач на уровне ярлыка запуска 1С с помощью специальных параметров командной строки.
Посмотрим на доступные ключи:
/AllowExecuteScheduledJobs -Force — принудительно разрешает выполнение регламентных заданий в запускаемом сеансе./AllowExecuteScheduledJobs -Off — жестко запрещает выполнение заданий в сеансе.Практическое применение: в свойствах ярлыка 1С на слабом компьютере допишите параметр -Off. Теперь, даже если этот пользователь останется один в базе, платформа никогда не попытается запустить на его ПК фоновый обмен.
Проанализируем самый надежный подход, который полностью изолирует обмен от пользовательских сеансов. Суть метода: мы отключаем расписание обмена внутри самой 1С и перекладываем эту задачу на операционную систему.
Разберем по шагам:
Admin) с правами на выполнение синхронизации..bat файл, который будет запускать 1С в режиме предприятия под этим пользователем.Рассмотрим пример кода для .bat файла:
"c:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\base1C" /N"Admin" /P"123" /Execute"C:\ExchangeScript.epf"
В этом примере /F"D:\base1C" указывает путь к файловой базе, /N и /P передают логин и пароль. Если вам нужно просто запустить базу под служебным пользователем (в сеансе которого настроено выполнение обмена при старте), этого будет достаточно. Если нужно запустить конкретную обработку, используем ключ /Execute.
Преимущества данного метода:
Используя комбинацию этих методов, вы сможете гибко настроить фоновые задания в файловой базе 1С и обеспечить комфортную работу всем пользователям сети.