Как настроить односторонний обмен из УНФ в БП 3.0 с фильтрацией документов для 1С:Фреш

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

При работе с типовыми конфигурациями часто возникает задача ограничить поток данных при синхронизации. Например, нам нужно переносить из 1С:Управление нашей фирмой (УНФ) в 1С:Бухгалтерию предприятия (БП) 3.0 только определенные документы, помечая их специальным признаком в комментарии или дополнительным реквизитом. Ситуация осложняется, если база находится в облаке 1С:Фреш, где нельзя вносить изменения в код конфигурации. Разберем по шагам, как решить эту задачу, используя механизмы конвертации данных и правила регистрации.

Анализ задачи и выбор инструмента

Для реализации отбора документов нам необходимо вмешаться в логику работы обмена. Поскольку конфигурация должна оставаться на поддержке, мы не можем изменять модули. Однако 1С предоставляет штатные механизмы для загрузки собственных правил. Существует два основных подхода к фильтрации:

  1. Правила конвертации объектов (ПКО): Отсеивание происходит в момент выгрузки. Документ встает в очередь на обмен, программа начинает его обрабатывать, но на этапе выгрузки срабатывает условие, и данные не уходят.
  2. Правила регистрации объектов (ПРО): Это более правильный метод. Фильтрация происходит еще на этапе записи документа в информационной базе. Если документ не соответствует условию, он просто не регистрируется в плане обмена. Это экономит ресурсы системы и предотвращает «засорение» таблиц регистрации изменений.

Рассмотрим, как технически реализовать оба варианта, используя Конвертацию данных 2.1.

Шаг 1. Получение типовых правил из конфигурации

Прежде чем вносить изменения, нам нужно достать актуальные правила обмена, которые заложены разработчиками в 1С:УНФ. Рассмотрим алгоритм действий в конфигураторе:

  1. Откроем конфигуратор 1С:УНФ.
  2. Перейдем в ветку Общие — Макеты.
  3. Найдем макеты, отвечающие за обмен с БП 3.0. Обычно они называются ПравилаОбмена_УНФ_БП или аналогично (в зависимости от версии конфигурации).
  4. Откроем нужный макет. Поскольку макет чаще всего имеет тип «Текстовый документ» или «Двоичные данные», содержащие XML, нам нужно извлечь его содержимое.
  5. Выделим весь текст макета (Ctrl+A), скопируем его и вставим в любой текстовый редактор (например, Notepad++).
  6. Сохраним файл с расширением .xml. Это и будет наш исходный файл для работы в Конвертации данных 2.1.

Шаг 2. Редактирование правил в Конвертации данных 2.1

Теперь проанализируем ситуацию в специализированной конфигурации. Загрузим полученный XML-файл в базу Конвертация данных 2.1.

Для настройки отбора по комментарию нам нужно найти соответствующее Правило выгрузки данных (ПВД) или Правило конвертации объекта (ПКО) для конкретного типа документа (например, «Реализация товаров и услуг»).

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


// Пример фильтрации по комментарию
Если Найти(Объект.Комментарий, "Переносить") = 0 Тогда
    Отказ = Истина;
КонецЕсли;

В данном примере, если в комментарии документа нет ключевого слова «Переносить», система проигнорирует этот объект при выгрузке. Параметр Отказ = Истина является стандартным способом отмены текущей операции в правилах 1С.

Шаг 3. Использование правил регистрации объектов (ПРО)

Проанализируем более эффективный способ — фильтрацию на уровне регистрации. Если мы не хотим, чтобы «лишние» документы вообще попадали в узлы обмена, нам нужно отредактировать Правила регистрации. Они находятся в тех же макетах конфигурации, но называются ПравилаРегистрации_УНФ_БП.

Загрузим их в Конвертацию данных 2.1 (выбрав соответствующий тип правил при загрузке). В правиле для нужного объекта выберем обработчик ПередРегистрациейОбъекта и пропишем логику:


// Отменяем регистрацию, если условие не выполнено
Если Объект.Комментарий <> "1" Тогда
    Отказ = Истина;
КонецЕсли;

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

Шаг 4. Настройка обмена в 1С:Фреш

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

Посмотрим, как загрузить измененные правила:

  1. Зайдем в раздел Администрирование — Синхронизация данных.
  2. Откроем Настройки синхронизации данных.
  3. Выберем нашу настройку обмена с БП 3.0.
  4. Найдем пункт меню Параметры синхронизации данных — Загрузить правила (или аналогичный пункт в зависимости от версии интерфейса).
  5. Загрузим наш модифицированный файл правил регистрации или конвертации.

Обратите внимание: После обновления конфигурации 1С:УНФ со стороны провайдера 1С:Фреш, ваши кастомные правила могут быть заменены на типовые. Рекомендуется сохранять копию правил и проверять их работоспособность после крупных релизов. Если структура метаданных в новом релизе сильно изменится, правила придется пересобирать заново в КД 2.1.

Дополнительные рекомендации по стабильности

Рассмотрим альтернативный вариант для облака — Расширение конфигурации. Если загрузка XML-правил по какой-то причине недоступна или нестабильна, можно создать небольшое расширение, которое будет содержать Подписку на событие ПриЗаписи для нужных документов. В этой подписке можно программно проверять условие и удалять регистрацию объекта из планов обмена.

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

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

← На главную