Как исправить ошибку «Правило не найдено: БанковскиеСчета» при синхронизации Розница 2.3 и Бухгалтерия 3.0?

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

Синхронизация данных между конфигурациями «1С:Розница 2.3» и «1С:Бухгалтерия предприятия 3.0» — это стандартный процесс, который, однако, часто требует доработки под нужды конкретного бизнеса. Одной из наиболее запутанных проблем является ситуация, когда обмен отлично работает в одной информационной базе (например, в одном магазине), но выдает критическую ошибку в другой при использовании тех же самых правил конвертации. Рассмотрим подробнее, почему возникает ошибка инициализации правил и как ее устранить с помощью «1С:Конвертация данных 2.1».

Разбор технической сути проблемы

Ситуация, описанная в теме, типична для распределенных систем: при загрузке данных в приемник (Бухгалтерия предприятия 3.0) система выдает ошибку о том, что не найдено правило с именем БанковскиеСчета. Это происходит в момент обработки входящего XML-файла с данными. Проанализируем причину: если в источнике (Розница) объект (например, ПоступлениеТоваров или Контрагент) содержит заполненное поле «Банковский счет», механизм выгрузки пытается найти соответствующее Правило Конвертации Объекта (ПКО), чтобы преобразовать этот счет в понятный для БП формат. Если ПКО в файле правил отсутствует, загрузка прерывается.

Выясним причину, почему в одном магазине обмен шел успешно, а в другом — нет. Ответ кроется в данных: в первом магазине банковские счета у контрагентов или организаций просто не были заполнены. Система не видела данных для выгрузки и не обращалась к правилу БанковскиеСчета. Во втором магазине данные были введены, что и спровоцировало обращение к несуществующему в правилах объекту.

Структура файлов правил обмена (ZIP-архив)

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

  1. ExchangeRules.xml — основные правила конвертации из текущей базы в базу-корреспондент. Это главный файл, который мы редактируем в КД 2.1.
  2. CorrespondentExchangeRules.xml — правила для обратного потока данных (из приемника в источник). Даже если обмен односторонний, этот файл должен присутствовать в архиве.
  3. RegistrationRules.xml — правила регистрации. Они определяют условия, при которых объект вообще попадает в план обмена для выгрузки.

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

Способ 1: Отключение выгрузки свойства (быстрое решение)

Если перенос банковских счетов не является критически важным для бухгалтерского учета (например, они создаются в БП вручную), самым простым решением будет отключение этого свойства в правилах выгрузки. Проанализируем шаги в Конвертации данных 2.1:

  1. Загрузим ExchangeRules.xml в базу КД 2.1.
  2. Найдем ПКО для документа ПоступлениеТоваровУслуг или справочника Контрагенты.
  3. В списке ПКС (Правила конвертации свойств) найдем строку, где источником или приемником выступает банковский счет.
  4. Снимем галочку «Включить» для этого свойства или просто удалим ссылку на правило БанковскиеСчета в колонке «Правило конвертации».
  5. Сохраним правила, упакуем их в ZIP и обновим в настройках синхронизации.

Способ 2: Создание ПКО «БанковскиеСчета» (полное решение)

Если счета переносить необходимо, нужно убедиться, что ПКО с таким именем существует и корректно настроено. Посмотрим на пример настройки ПКО для банковского счета:

В справочнике БанковскиеСчета в БП 3.0 ключевыми полями являются НомерСчета и Владелец (это может быть либо Организация, либо Контрагент). Рассмотрим пример кода в обработчике «Поля поиска» для этого ПКО, чтобы избежать дублей:


// Пример кода в ПКО БанковскиеСчета -> Поля поиска
Если СвойстваПоиска.Получить("НомерСчета") <> Неопределено Тогда
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.БанковскиеСчета ГДЕ НомерСчета = &НомерСчета И Владелец = &Владелец";
    Запрос.УстановитьПараметр("НомерСчета", СвойстваПоиска["НомерСчета"]);
    Запрос.УстановитьПараметр("Владелец", СвойстваПоиска["Владелец"]);
    // ... логика поиска ссылки
КонецЕсли;

После создания ПКО необходимо вернуться в правила свойств (ПКС) родительских объектов (Контрагенты, Организации) и в колонке «Правило» выбрать вновь созданное ПКО БанковскиеСчета.

Тонкости обновления правил в Бухгалтерии 3.0

Частая ошибка программистов — обновить правила в Рознице и ожидать, что БП магическим образом узнает о них. Разберем, как правильно применить изменения:

  1. В «1С:Розница» зайдите в «Синхронизация данных» -> «Настройки синхронизации».
  2. Выберите вашу настройку и нажмите «Загрузить правила». Выберите ваш новый ZIP-архив.
  3. Важный момент: если вы используете типовой механизм БСП, Розница при следующей выгрузке передаст информацию о правилах в файл обмена. Однако для надежности рекомендуется также зайти в «1С:Бухгалтерия» и в аналогичном меню загрузить тот же ZIP-архив в «Правила для этой базы» (так как в БП это будут правила корреспондента).
  4. Обязательно очистите кэш правил, если изменения не подхватились сразу. Это можно сделать, временно выбрав «Использовать типовые правила», сохранив, а затем снова выбрав «Загрузить из файла».

Проверка результата

Проанализируем ситуацию после внесения правок. Выполните выгрузку из «проблемного» магазина. В сформированном XML-файле (его можно открыть любым текстовым редактором) найдите узел, соответствующий банковскому счету. Он должен выглядеть примерно так:

<Свойство Имя="БанковскийСчет" Тип="СправочникСсылка.БанковскиеСчета" ПКО="БанковскиеСчета">

Если атрибут ПКО="БанковскиеСчета" присутствует, а в самом начале XML-файла (в секции <ПравилаКонвертацииОбъектов>) есть описание этого правила — ошибка исчезнет. Если же вы выбрали Способ 1, то данное свойство просто будет отсутствовать в выгрузке, и документ ПоступлениеТоваров проведется без проблем, оставив поле счета пустым для ручного заполнения бухгалтером.

Подведем итог: любая ошибка «Правило не найдено» в синхронизации 1С всегда означает несоответствие между выгруженными данными и составом ПКО в файле ExchangeRules.xml. Тщательная проверка состава ПКС в Конвертации данных 2.1 и синхронное обновление правил в обеих базах — залог успешного обмена.

← На главную