Как настроить автоматический обмен кассовыми документами между двумя базами 1С:Бухгалтерия 2.0?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Синхронизация данных между двумя информационными базами — задача классическая, но имеющая свои нюансы, когда речь заходит о конфигурациях на обычных формах, таких как «Бухгалтерия предприятия 2.0». В данной статье мы разберем, как организовать автоматический перенос документов ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер, учитывая специфику работы 15 пользователей в файловом режиме и необходимость частого обновления данных (каждые 15 минут).

Анализ исходной ситуации и выбор стратегии

Прежде чем приступать к техническим настройкам, проанализируем условия. Мы имеем две идентичные конфигурации. Хотя в обсуждении упоминалась «Базовая» версия, наличие 15 одновременно работающих сотрудников однозначно указывает на использование версии ПРОФ или КОРП, так как Базовая версия жестко ограничена одним сеансом. Это дает нам возможность использовать профессиональные инструменты интеграции.

Рассмотрим три основных способа реализации автоматического обмена:

  1. Использование конфигурации «1С:Конвертация данных 2.1» (обмен через XML-файлы).
  2. Прямое подключение через COM-соединение.
  3. Механизм РИБ (Распределенные информационные базы) с фильтрацией объектов.

Вариант 1: Универсальный обмен данными через правила (КД 2.1)

Этот метод наиболее гибкий и безопасный. Он позволяет выгружать только нужные объекты и корректно сопоставлять справочники. Разберем процесс по шагам.

Шаг 1: Создание правил обмена. Нам потребуется конфигурация КонвертацияДанных. В ней мы создаем правила, где источником и приемником выступает наша «Бухгалтерия 2.0». Важно настроить поиск объектов по УникальномуИдентификатору (GUID), чтобы при повторном обмене документы не дублировались, а обновлялись.

Шаг 2: Настройка выгрузки. В правилах выгрузки данных мы указываем только два объекта: ПриходныйКассовыйОрдер и РасходныйКассовыйОрдер. Обязательно проверяем, чтобы вместе с документами переносились необходимые ссылки: Контрагенты, СтатьиДвиженияДенежныхСредств, Кассы и ФизическиеЛица. Если эти справочники в базах отличаются, в правилах нужно настроить поиск «По наименованию» или «По артикулу».

Шаг 3: Автоматизация через планировщик. Чтобы обмен запускался каждые 15 минут без участия человека, мы воспользуемся возможностью запуска 1С из командной строки. Проанализируем пример команды для пакетного режима:


"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Base_A" /N "ExchangeUser" /P "Password" /Execute "D:\Scripts\UniversalExchange.epf" /C "ПараметрыЗапуска"

В данном примере мы используем внешнюю обработку УниверсальныйОбменДаннымиXML, модифицированную для автоматического выполнения при открытии. Параметры пути к файлу правил и файлу данных передаются через строку запуска.

Вариант 2: Прямое COM-соединение между базами

Если базы находятся в одной локальной сети и на одном сервере, мы можем настроить передачу данных напрямую из одной базы в другую без промежуточных файлов. Это ускоряет процесс и уменьшает количество «точек отказа».

Рассмотрим пример кода на языке 1С, который устанавливает связь с базой-приемником:


Попытка
    COMConnector = Новый COMОбъект("V83.COMConnector");
    ПутьКБазе = "File=""D:\Bases\Base_B"";Usr=""Admin"";Pwd=""123"";";
    БазаПриемник = COMConnector.Connect(ПутьКБазе);
    Сообщить("Соединение успешно установлено!");
Исключение
    Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;

Выясним, как происходит перенос документа. Мы находим нужный ПКО в текущей базе, создаем объект в БазаПриемник, заполняем его реквизиты и вызываем метод Записать(). Основная сложность здесь — синхронизация ссылочных типов. Для каждого справочника (например, СтатьиДДС) придется написать функцию поиска соответствия в удаленной базе.

Вариант 3: Распределенные информационные базы (РИБ)

Механизм РИБ предназначен для полной синхронизации, но его можно адаптировать. Это «родной» функционал 1С, который умеет отслеживать изменения объектов автоматически через ПланыОбмена.

Для реализации задачи «только касса» нам потребуется:

  1. В конфигураторе создать новый ПланОбмена.
  2. В состав плана включить только документы ПКО, РКО и связанные справочники.
  3. Настроить автоматическую регистрацию изменений для этих объектов.
  4. Использовать типовую обработку «Настройка выполнения регламентных операций» для установки расписания (15 минут).

Важный нюанс: РИБ требует идентичности конфигураций. Если вы решите обновить одну базу, вам обязательно придется обновить и вторую, иначе обмен заблокируется.

Проблема блокировок и производительности

Проанализируем ситуацию с 15 пользователями в файловом режиме. Файловая база данных (файл 1Cv8.1CD) чувствительна к количеству транзакций. Когда запускается обмен, он начинает массово записывать документы, что вызывает блокировку таблиц для остальных сотрудников.

Чтобы минимизировать дискомфорт для пользователей, рекомендуем:

Синхронизация справочников и GUID

Рассмотрим подробнее проблему «Объект не найден». Она возникает, когда документ переносится, а связанный с ним контрагент — нет. Чтобы этого избежать, при использовании Конвертации данных в ПКО для реквизита Контрагент нужно установить флаг «Выгружать объект целиком, если он не найден».

Если вы создаете документы программно через COM, используйте метод поиска по уникальному идентификатору:


// В текущей базе получаем GUID
ИдентификаторСтрока = Строка(СсылкаНаОбъект.УникальныйИдентификатор());

// В базе-приемнике ищем по этому же GUID
СсылкаВПриемнике = БазаПриемник.Справочники.Контрагенты.ПолучитьСсылку(БазаПриемник.NewObject("UUID", ИдентификаторСтрока));
Если СсылкаВПриемнике.Пустая() Тогда
    // Создаем нового контрагента, если не нашли
КонецЕсли;

Итоги и рекомендации

Подведем итог нашему разбору. Для реализации задачи автоматического обмена кассовыми документами в «Бухгалтерии 2.0» наиболее надежным и масштабируемым решением будет использование правил конвертации данных (КД 2.1) в связке с планировщиком задач Windows.

Этот подход позволит вам:

Помните, что перед внедрением автоматического обмена на «живой» базе необходимо провести тестирование на копиях, чтобы убедиться в корректности переноса проводок и аналитики по статьям движения денежных средств.

← На главную