При настройке синхронизации между программами 1С:Зарплата и управление персоналом (ЗУП) 3.1 и 1С:Бухгалтерия предприятия (БП) 3.0 часто возникает потребность в реализации строго одностороннего потока данных. Типовой сценарий предполагает, что данные о начислениях и выплатах уходят из ЗУП в БП, но при этом пользователи хотят исключить любое обратное влияние бухгалтерии на кадровую базу. Однако стандартный механизм синхронизации 1С всегда инициирует два процесса: выгрузку и загрузку. Разберем подробно, почему так происходит и как добиться желаемого результата.
Для начала проанализируем ситуацию с точки зрения архитектуры Библиотеки стандартных подсистем (БСП). Механизм обмена в 1С построен на принципе подтверждения (квитирования). Когда ЗУП отправляет пакет данных в БП, она помечает эти объекты как "отправленные". Но она не снимет их с регистрации до тех пор, пока не получит от БП ответное сообщение с номером принятой посылки.
Если мы полностью заблокируем загрузку сообщений в ЗУП, программа "не узнает", что БП успешно приняла данные. В результате при следующей синхронизации ЗУП снова выгрузит те же самые документы, считая, что предыдущая попытка не удалась. Это приведет к бесконечному росту файла обмена и дублированию операций. Поэтому этап загрузки в интерфейсе будет присутствовать всегда — как минимум для приема технических "квитанций".
Самый простой и популярный метод, который обсуждался экспертами, — это использование механизма даты запрета. Этот способ позволяет программе выполнить технический цикл обмена, но при этом блокирует запись любых документов в информационную базу.
Рассмотрим по шагам, как это настроить в ЗУП 3.1:
Проанализируем результат: теперь при выполнении синхронизации ЗУП будет считывать файл из БП, находить там документы, но при попытке их записи сработает механизм защиты. Система увидит, что дата документа (например, 2023 год) значительно меньше даты запрета (3999 год), и отклонит изменения. При этом техническое подтверждение о получении пакета будет обработано, и очередь выгрузки в ЗУП очистится.
Важный нюанс: Как справедливо замечено в профессиональном сообществе, дата запрета эффективно блокирует только объекты, имеющие дату (документы). Справочники (Физические лица, Подразделения, Организации) могут не иметь даты и, в зависимости от настроек правил обмена, все равно могут обновиться в ЗУП, если бухгалтер изменил их в БП.
Чтобы в ЗУП не приходили даже "попытки" загрузки лишних данных, нужно настроить Бухгалтерию предприятия так, чтобы она ничего не предлагала к отправке. Синхронизация работает по принципу регистрации изменений: если объект изменен, он попадает в специальную таблицу (план обмена).
Рассмотрим, как очистить состав отправляемых данных в БП:
Чтобы автоматизировать этот процесс и не заходить сюда каждый раз, можно изменить правила регистрации. В типовых решениях это делается через загрузку модифицированных правил регистрации (xml), где для всех объектов устанавливается условие Отказ = Истина;. После этого БП перестанет "замечать" изменения объектов для данной синхронизации, и файл обмена со стороны БП всегда будет содержать только техническую информацию.
Если мы хотим минимизировать действия, выполняемые вручную, проанализируем возможности сценариев синхронизации. В настройках обмена можно создать отдельный сценарий, который будет выполнять только одну сторону процесса.
Разберем алгоритм настройки сценария:
Однако помните: даже если сценарий настроен только на отправку, программный код 1С все равно инициирует кратковременное подключение к базе-приемнику для получения номера сообщения. Это необходимо для корректной работы ПланыОбмена.ВыбратьИзменения().
После установки даты запрета загрузки в мониторе синхронизации могут начать скапливаться записи в разделе Предупреждения — Непринятые по дате запрета. Это не является ошибкой в работе системы, а лишь информирует вас о том, что блокировка сработала штатно.
Если эти записи мешают работе, выясним причину их появления. Обычно это происходит потому, что в БП включена автоматическая регистрация изменений справочников. Чтобы "успокоить" систему, рекомендуется периодически заходить в Состав отправляемых данных на стороне БП и удалять регистрацию справочников, как это было описано в Способе 2.
Если типовая синхронизация кажется слишком сложной или избыточной, рассмотрим вариант использования обработки "Универсальный обмен данными в формате XML".
В этом случае процесс выглядит так:
Этот метод гарантированно односторонний, так как базы физически не связываются друг с другом в момент обмена и не обмениваются подтверждениями. Но у него есть существенный минус: вам придется вручную отслеживать, какие данные уже были выгружены, а какие — нет, так как автоматического контроля регистрации изменений здесь не будет.
Подводя итог, можно сказать, что наиболее стабильным и безопасным решением для типовой конфигурации является комбинация Способа 1 (Дата запрета 31.12.3999 в ЗУП) и Способа 2 (Отмена регистрации объектов в БП). Это обеспечит чистоту данных в ЗУП и корректную работу механизмов синхронизации без накопления ошибок в очереди обмена.