Синхронизация данных между файловыми базами 1С (например, Управление торговлей и Бухгалтерия предприятия) часто становится источником головной боли для администраторов. Иногда стандартных средств недостаточно, и требуется выборочный перенос документов из УТ для более тонкой настройки. Ситуация осложняется, когда базы опубликованы на веб-сервере IIS, а пользователи работают через тонкий клиент или браузер. Особенно это актуально для старых систем, где требуется, например, поддержка ставки НДС 22% для конфигурации 1С:Управление торговлей 10 при обмене с БП 3.0. В таких условиях стандартное «прямое соединение» по расписанию начинает вести себя непредсказуемо: задания не запускаются вовремя, сеансы зависают, а данные не передаются. Разберем подробно, почему это происходит и как настроить систему для максимально стабильной работы.
Проанализируем ситуацию. При использовании «прямого подключения» одна база 1С пытается инициализировать COM-соединение с другой базой. Если вам требуется именно синхронный обмен и перенос объектов 1С с визуальным анализом, учитывайте следующие нюансы: В среде веб-сервера IIS это рождает целый ряд конфликтов:
IIS настроен как 64-битное приложение, а для COM требуются 32-битные библиотеки 1С (или наоборот), соединение не установится.IIS AppPool\ИмяПула), у которой часто нет прав на запуск COM-объектов или на доступ к сетевым папкам второй базы.Рассмотрим по шагам, какие методы позволяют обойти эти ограничения и заставить синхронизацию работать как часы.
Как справедливо отмечено в обсуждении, в файловой базе для работы планировщика заданий необходим активный сеанс. Если все пользователи работают через Web, планировщик может «засыпать». Создадим условия для его постоянной работы.
Создадим в каждой базе специального пользователя с именем Обмен. Для этого пользователя не обязательно иметь полные права, достаточно прав на выполнение синхронизации данных. Далее настроим автоматический запуск этого пользователя на сервере через bat-файл. Пример строки запуска:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\Trade" /N "Обмен" /P "Пароль" /AllowExecuteScheduledJobsForce /DisableStartupMessages
Обратите внимание на параметр /AllowExecuteScheduledJobsForce. Чтобы избежать конфликтов с зависшими процессами, полезно настроить автоматическое отключение старых задублированных сеансов. Он принудительно назначает данный сеанс ответственным за выполнение регламентных заданий. Чтобы этот сеанс не закрывался при случайных ошибках, рекомендуется обернуть запуск в бесконечный цикл в PowerShell или использовать планировщик задач Windows с перезапуском при завершении.
Выясним причину, по которой регламентные задания могут игнорироваться самим веб-сервером. При публикации базы на IIS создается файл default.vrd. Мы можем разрешить веб-серверу самостоятельно инициировать выполнение заданий 1С:Предприятие.
Откроем файл default.vrd (обычно находится в папке с публикацией базы на веб-сервере) и найдем узел <point>. Нам нужно добавить или изменить параметр allowExecuteScheduledJobs. Рассмотрим пример структуры файла:
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
base="/BaseName"
ib="File="C:\Bases\BaseName";"
allowExecuteScheduledJobs="true">
</point>
Установка allowExecuteScheduledJobs="true" позволяет IIS запускать фоновые задания. Однако помните: если к базе долго никто не обращается через браузер, IIS может «усыпить» рабочий процесс, и задания снова перестанут выполняться. Поэтому этот метод лучше комбинировать с «вечным» сеансом пользователя Обмен.
Для стабильной работы файловых баз крайне важно правильно настроить среду IIS. Посмотрим на критические настройки пула приложений:
IIS завершает процесс. Установим значение в 0, чтобы процесс жил вечно.0, чтобы избежать внезапного завершения сеанса синхронизации из-за плановой переработки пула.ApplicationPoolIdentity укажите конкретного пользователя Windows, который имеет полные права Full Control на папку с базой данных 1С.Если прямое соединение продолжает давать сбои, проанализируем альтернативный, более современный подход. Вместо прямого доступа к файлу 1Cv8.1CD через COM, настроим обмен через Web-сервис.
В настройках синхронизации выберем вариант «Синхронизация через интернет». В качестве адреса укажите URL опубликованной базы:
http://имя_сервера/имя_базы/ws/Interface.1cws
Преимущества этого метода:
HTTP, родной для веб-сервера.COM-компонент.IIS.В самых тяжелых случаях, когда блокировки базы не позволяют провести синхронизацию «на лету», разберем классический метод обмена через каталог. Базы перестают обращаться друг к другу напрямую. Каждая база в свое время выгружает XML-пакет в общую папку и забирает оттуда файлы, подготовленные другой базой.
Этот способ самый «живучий» для файловых баз, так как он полностью исключает проблему COM-соединений и снижает время блокировки таблиц. Каждая база работает независимо, и сбой в БП никак не помешает УТ подготовить данные для выгрузки.
Проанализируем установленный интервал в 900 секунд (15 минут). Для файловой базы с 6–7 активными пользователями это может быть слишком часто. В момент загрузки данных в Бухгалтерию предприятия происходит пересчет итогов и проведение документов, что может вызвать «зависание» интерфейса у бухгалтеров.
Совет: Попробуйте увеличить интервал до 30 или 60 минут в рабочее время, либо настройте более частый обмен в часы минимальной нагрузки. Это снизит вероятность конфликтов блокировок, которые и приводят к тому, что регламентное задание «не срабатывает по времени».