Как реализовать выборочный обмен банковскими и кассовыми документами за произвольный период между УТ 10.3 и БП 3.0?

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

Задача выборочной выгрузки банковских и кассовых документов за определенный, произвольно задаваемый период является весьма распространенной при интеграции различных конфигураций 1С. Особенно актуален этот вопрос для связки УТ 10.3 и БП 3.0, где типовой обмен может не всегда соответствовать специфическим требованиям оперативной выгрузки данных. Рассмотрим подробнее, как мы можем эффективно решить эту задачу, используя как встроенные механизмы, так и разработку собственных инструментов.

Понимание специфики обмена УТ 10.3 и БП 3.0

Прежде чем перейти к конкретным решениям, проанализируем ситуацию. Конфигурация УТ 10.3 является решением на более старой версии платформы (хотя и совместима с 1С:Предприятием 8.3), которая не поддерживает современную технологию универсального обмена по формату XDTO (EnterpriseData), в отличие от более новых конфигураций. Это означает, что для обмена между УТ 10.3 и БП 3.0 мы чаще всего используем механизмы на основе XML с применением правил конвертации данных (КД2). Именно на этих принципах и будут строиться наши решения.

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

Метод 1: Использование типовой обработки "Универсальный обмен данными в формате XML" с правилами обмена

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

  1. Шаг 1: Подготовка или доработка правил конвертации данных (КД2)

    Ключевым элементом этого метода являются правила обмена. Именно они определяют логику переноса данных, включая их отборы, сопоставление объектов и преобразование. Если у вас уже есть типовые правила обмена между УТ 10.3 и БП 3.0, нам, возможно, потребуется их доработать. Если их нет, мы создадим их с нуля.

    • Создание или загрузка правил: Если правила обмена отсутствуют, мы можем создать их с помощью конфигурации "Конвертация данных, редакция 2". В ней мы описываем соответствие объектов источника и приемника.

    • Настройка отборов по дате и типу документа: В правилах выгрузки данных для документов ( ОбъектВыборки = Новый ВыборкаДанныхПоПериодам; ОбъектВыборки.УстановитьПараметры(НачалоПериода, КонецПериода, "Документы.ПлатежноеПоручениеИсходящее"); // или другие типы документов ОбъектВыборки.ДобавитьОтбор("Организация", ОрганизацияПолучатель); или более сложные запросы в источнике) мы можем задать жесткие отборы по периоду и по типу документа. Однако, для интерактивной выгрузки по произвольному периоду, мы чаще используем отборы непосредственно в обработке "Универсальный обмен данными в формате XML", а в правилах предусматриваем возможность их применения.

      Мы должны убедиться, что для типов документов, которые нас интересуют (например, Документ.ПлатежноеПоручениеВходящее Документ.ПлатежноеПоручениеИсходящее Документ.ПриходныйКассовыйОрдер Документ.РасходныйКассовыйОрдер ), в правилах обмена настроены соответствующие правила выгрузки и загрузки. Если эти правила уже существуют, мы можем быть уверены, что типовая обработка сможет корректно их перенести.

  2. Шаг 2: Настройка узла синхронизации в конфигурациях (если не настроен типовой обмен)

    Хотя этот метод позволяет выполнять разовые выгрузки без полноценно настроенного обмена, для более стабильной работы и корректного сопоставления объектов желательно иметь настроенную синхронизацию данных. Если обмена у вас нет, как упомянул автор в сообщении 2, это означает, что синхронизация данных не включена.

    • В УТ 10.3: Мы включаем обмен через меню "Сервис - Обмен данными с продуктами на платформе 1С:Предприятие 8". Здесь мы настраиваем узел обмена, указываем префиксы и начальную дату выгрузки документов.

    • В БП 3.0: Мы переходим в "Администрирование - Синхронизация данных" и включаем ее. Здесь также настраивается узел, префиксы и другие параметры.

    • Важность префиксов: Префиксы информационных баз помогают избежать конфликтов идентификаторов при обмене и упрощают сопоставление объектов.

    • Сопоставление организаций: Критически важно корректно сопоставить организации в обеих базах. Обычно это делается по ИНН/КПП или по внутреннему идентификатору, настроенному в правилах.

  3. Шаг 3: Выгрузка данных через обработку "Универсальный обмен данными в формате XML"

    Теперь, когда правила готовы, и (при необходимости) синхронизация настроена, мы приступаем к непосредственной выгрузке. Мы запускаем эту обработку в базе-источнике (УТ 10.3): "Файл -> Открыть" или через "Операции -> Обработки" (если обработка добавлена в список). Обычно она находится в каталоге шаблонов конфигурации.

    • Выбор файла правил: На первой вкладке "Выгрузка данных" мы указываем файл с нашими правилами обмена (файл *.xml или *.zip).

    • Установка периода выгрузки: Обработка предоставляет поля для указания даты начала и даты окончания периода выгрузки. Это напрямую отвечает на наш запрос о выборочной выгрузке за любой период.

    • Настройка пользовательских отборов: Это одна из самых мощных функций обработки, как было подтверждено в сообщении 6. Нам следует перейти на вкладку "Выгрузка данных" и найти раздел "Настройка отборов". Здесь мы можем добавить отборы по различным критериям:

      • По типу объекта: Мы можем выбрать только необходимые нам типы документов, например, "Платежное поручение входящее", "Приходный кассовый ордер" и т.д. Если мы хотим выгрузить все банковские и кассовые документы, мы можем выбрать каждый тип по отдельности.

      • По организации: Если мы работаем с несколькими организациями, мы можем указать конкретную организацию для выгрузки.

      • По другим реквизитам: В зависимости от правил, мы можем добавлять отборы по другим реквизитам документов.

      Мы должны установить отбор по дате (если он не работает через основные поля "Дата начала" / "Дата окончания") и по видам документов "Платежное поручение (входящее/исходящее)", "Приходный кассовый ордер", "Расходный кассовый ордер".

    • Процесс выгрузки: После всех настроек мы нажимаем кнопку "Выгрузить данные". Обработка сформирует XML-файл с данными, который мы можем сохранить в выбранном каталоге.

  4. Шаг 4: Загрузка данных в целевую базу (БП 3.0)

    После успешной выгрузки данных из УТ 10.3 нам необходимо загрузить их в БП 3.0. Мы также запускаем обработку "Универсальный обмен данными в формате XML" в базе-приемнике (БП 3.0).

    • Переход на вкладку "Загрузка данных": Мы выбираем файл правил обмена (тот же, что и для выгрузки, или специализированный для загрузки) и указываем XML-файл с данными, который мы сохранили на предыдущем шаге.

    • Процесс загрузки: Мы нажимаем кнопку "Загрузить данные". Обработка проанализирует XML-файл и создаст соответствующие документы в БП 3.0.

    • Важность порядка загрузки: Иногда при загрузке данных важно соблюдать порядок, особенно если есть зависимые объекты. Правила КД2 обычно это учитывают, но стоит проверять журнал регистрации на предмет ошибок.

Этот метод очень гибок и не требует программирования, если правила обмена уже созданы и поддерживают нужные типы документов и отборы. Он идеально подходит для разовых или периодических выборочных выгрузок.

Метод 2: Разработка собственной обработки для регистрации изменений на узле обмена

В сообщении 1 предлагается написать простую обработку, которая регистрирует на нужном узле обмена необходимые документы за период, а затем запускает существующий обмен. Этот подход наиболее актуален, когда у нас уже настроен регулярный обмен между базами, но для некоторых ситуаций требуется "вынужденная" или повторная выгрузка определенных данных.

  1. Шаг 1: Принцип работы и создание внешней обработки

    Суть метода заключается в том, что мы не создаем XML-файл напрямую, а "заставляем" типовой механизм обмена включить в следующее сообщение обмена конкретные объекты, даже если они не изменились с момента последнего обмена или уже были выгружены. Для этого мы создаем внешнюю обработку в УТ 10.3.

    На форме обработки мы размещаем следующие элементы:

    • Поля для ввода ДатаНачала и ДатаКонца.
    • Группу переключателей или флажков для выбора типов документов: "Банк" (охватывает Платежные поручения), "Касса" (охватывает Приходные и Расходные кассовые ордера). Возможно, также флажок "Все документы за период".
    • Кнопку "Зарегистрировать для обмена".
    • Поле для выбора узла обмена, если у нас их несколько.
  2. Шаг 2: Логика регистрации документов

    Основная часть логики будет находиться в процедуре, вызываемой по кнопке "Зарегистрировать для обмена". Здесь нам предстоит:

    • Определить узел обмена: Мы получаем ссылку на узел обмена, для которого хотим зарегистрировать изменения. Например, если у нас один узел обмена с БП 3.0, мы можем выбрать его программно или предоставить выбор пользователю на форме.

      
      // Пример получения узла обмена (нужно адаптировать под вашу конкретную конфигурацию ПланаОбмена)
      УзелОбмена = ПланыОбмена.ПоМетаданным.МойПланОбменаСБП3.НайтиПоКоду("КодУзлаОбмена");
      Если УзелОбмена = Неопределено Тогда
          Сообщить("Узел обмена не найден!");
          Возврат;
      КонецЕсли;
      
    • Перебрать документы за период: Мы будем использовать запросы к базе данных для выборки необходимых документов за указанный пользователем период и выбранных типов.

      
      Запрос = Новый Запрос;
      Запрос.Текст = 
          "ВЫБРАТЬ
          |    Документ.ПлатежноеПоручениеИсходящее.Ссылка КАК Ссылка
          |ИЗ
          |    Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее
          |ГДЕ
          |    ПлатежноеПоручениеИсходящее.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
          |    И ПлатежноеПоручениеИсходящее.Проведен = ИСТИНА"; // Важно регистрировать только проведенные документы
      
      Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
      Запрос.УстановитьПараметр("ДатаКонца", ДатаКонец);
      
      Выборка = Запрос.Выполнить().Выбрать();
      Пока Выборка.Следующий() Цикл
          ПланыОбмена.ЗарегистрироватьИзменение(УзелОбмена, Выборка.Ссылка);
      КонецЦикла;
      

      Мы должны повторить этот код для всех типов документов, которые нас интересуют (Документ.ПлатежноеПоручениеВходящее, Документ.ПриходныйКассовыйОрдер, Документ.РасходныйКассовыйОрдер).

    • Использование метода ПланыОбмена.ЗарегистрироватьИзменение(): Этот метод платформы 1С регистрирует указанный объект на указанном узле обмена, помечая его как требующий выгрузки при следующем сеансе обмена. Это именно то, что нам нужно для повторной или выборочной выгрузки.

    • Важность отбора по проведенным документам: Обязательно добавляем условие Проведен = ИСТИНА в запросы, чтобы регистрировать только те документы, которые уже прошли проводку и готовы к переносу.

    После завершения регистрации, мы сообщаем пользователю об успешном выполнении операции.

  3. Шаг 3: Запуск типового сценария обмена

    Как только документы зарегистрированы, мы просто запускаем стандартный сценарий обмена, который у нас уже настроен (или который был бы настроен, если бы мы имели полноценный обмен). Это может быть:

    • Ручной запуск: Через соответствующий пункт меню в УТ 10.3 ("Сервис -> Обмен данными с продуктами на платформе 1С:Предприятие 8 -> Выполнить обмен").

    • По расписанию: Если у вас настроены регламентные задания для автоматического обмена, то при следующем запуске регламентного задания зарегистрированные документы будут автоматически включены в сообщение обмена.

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

Метод 3: Использование готовых решений и расширенных обработок

В некоторых случаях, если нам необходимо более сложное управление обменом, или мы хотим избежать доработок конфигурации и разработки собственных инструментов, мы можем рассмотреть готовые решения. Сообщение 5 на форуме как раз и указывает на эту возможность.

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

Важные аспекты и рекомендации при настройке обмена

Независимо от выбранного метода, нам необходимо учитывать несколько важных аспектов, чтобы обеспечить надежный и корректный обмен данными:

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

  2. Тщательное изучение правил КД2: Понимание логики, заложенной в правилах конвертации данных, является залогом успешного обмена. Мы должны знать, как сопоставляются объекты, как преобразуются значения, и какие отборы применяются. Именно в КД2 определяется, как ПлатежноеПоручениеИсходящее из УТ 10.3 превратится в СписаниеСРасчетногоСчета в БП 3.0, а также какие реквизиты будут заполнены.

  3. Производительность: При выгрузке больших объемов данных, особенно за длительные периоды, производительность может стать проблемой. Мы должны быть готовы к тому, что процесс может занять значительное время. Оптимизация запросов в правилах КД2 или в собственной обработке может помочь.

  4. Обработка ошибок: Мы всегда должны проверять журналы регистрации в обеих базах после обмена на предмет ошибок или предупреждений. Многие проблемы можно выявить и исправить на ранних этапах.

  5. Сопоставление справочников и других объектов: Убедимся, что все зависимые справочники (контрагенты, банки, номенклатура, статьи движения денежных средств и т.д.) корректно сопоставляются между базами или переносятся до основных документов. Несоответствие в справочниках является частой причиной ошибок при загрузке документов.

  6. Использование транспорта сообщений через каталог: Как правило, для обмена между УТ 10.3 и БП 3.0 мы используем файловый обмен, то есть передачу данных через общий каталог. Это наиболее простой и надежный способ для данной связки.

Выбирая метод реализации, мы должны исходить из текущей ситуации (наличие настроенного обмена, сложность требований, наличие ресурсов для разработки) и учитывать перспективы дальнейшего развития системы. Каждый из представленных подходов позволяет нам гибко настроить выборочную выгрузку банковских и кассовых документов за произвольный период, что отвечает на поставленную задачу.

← На главную