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