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