При настройке обмена данными между устаревшими конфигурациями (например, Бухгалтерия предприятия 2.0 на обычных формах) и современными решениями на базе Библиотеки стандартных подсистем (БСП), такими как Бухгалтерия предприятия 3.0, специалисты часто сталкиваются с ситуацией, когда стандартная загрузка правил выдает ошибку: «Не заданы правила конвертации для плана обмена. Загрузка данных отменена». В этой статье мы подробно разберем, почему возникает эта ошибка, как правильно подготовить пакет правил и как добиться корректного снятия объектов с регистрации при одностороннем обмене.
Проанализируем ситуацию: почему система требует правила, если вы их уже загрузили? В современных конфигурациях 1С (начиная с БП 3.0) используется механизм обмена через БСП. В отличие от старых универсальных обменов, БСП ожидает увидеть в базе-приемнике не только правила загрузки, но и так называемые правила корреспондента.
Разберем подробнее: для БП 3.0 «правила корреспондента» — это те самые правила, по которым данные выгружаются из БП 2.0. Даже если ваш обмен односторонний, БСП должна «знать», в каком формате приходят данные от источника, чтобы корректно их интерпретировать и, что немаловажно, подготовить ответное сообщение (квитирование). Без этого «понимания» загрузка блокируется на этапе проверки целостности настроек плана обмена.
Выясним, в каком виде правила должны попадать в базу. Для корректной загрузки через интерфейс «Синхронизация данных» необходимо подготовить ZIP-архив строго определенной структуры. Рассмотрим состав этого архива:
Важный нюанс: как отмечалось в обсуждении, если у вас есть только один файл правил, вы можете попробовать переименовать его копию в CorrespondentExchangeRules.xml. Однако при одностороннем обмене на стороне приемника (БП 3.0) основные правила (ExchangeRules) могут быть практически пустыми, в то время как правила корреспондента должны полностью соответствовать правилам выгрузки источника.
Рассмотрим проблему, когда данные успешно загружаются в БП 3.0, но в БП 2.0 они не снимаются с регистрации и выгружаются повторно при каждом сеансе. Это происходит потому, что в 1С реализован механизм квитирования (подтверждения приема).
Проанализируем процесс обмена по шагам:
Если вы настроили обмен как «абсолютно односторонний» (просто забираете файл и ничего не отдаете назад), БП 2.0 никогда не узнает, что данные дошли. Для решения этой задачи нам все равно придется настроить «обратное плечо» обмена, даже если мы не планируем передавать реальные документы или справочники.
Для того чтобы обратный файл из БП 3.0 не содержал лишних данных, но при этом корректно подтверждал прием, нам необходимо создать пустые правила регистрации. Посмотрим, как это сделать правильно в «Конвертации данных 2.0» (КД):
Загрузим конфигурацию приемника в КД. Создадим новый план обмена, выберем нужные объекты, но в обработчиках ПередОбработкой для каждого объекта пропишем:
Отказ = Истина;
Это позволит системе формировать файл обмена, содержащий только технический заголовок с номером принятого сообщения, без выгрузки самих данных. Как было замечено в сообщении 47, при использовании пустых правил 1С может оставлять в обмене только технические регистры, такие как РегистрСведений.СоответствияОбъектовИнформационныхБаз, что является нормальным поведением. Для быстрой настройки таких обработчиков по выбранным объектам подойдёт обработка для группового создания правил регистрации в КД 2.
Разберем типичную ошибку: Тип не определен (СправочникСсылка.КлассификаторСтранМира). Это происходит из-за различия метаданных в версиях 2.0 и 3.0. В Бухгалтерии 3.0 многие справочники переведены на использование объектов из БСП.
При возникновении таких ошибок проанализируем правила в КД. Убедимся, что:
ExchangeRules.xml идентификаторы конфигураций (теги Ид) соответствуют фактическим идентификаторам в узлах плана обмена.Если по каким-то причинам настроить обратный обмен не удается, мы можем прибегнуть к программному методу очистки регистрации в базе-источнике (БП 2.0). Для этого можно использовать внешнюю обработку или добавить код в процедуру после выгрузки. Воспользуемся методом УдалитьРегистрациюИзменений:
УзелОбмена = ПланыОбмена.ТвойПланОбмена.НайтиПоКоду("КодУзлаПриемника");
// Удаляем регистрацию для всех объектов до номера сообщения, который мы считаем успешно принятым
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, НомерПоследнегоСообщения);
Однако помните: это «костыль», который не гарантирует, что данные действительно попали в приемник. Рекомендуется всегда использовать штатный механизм квитирования через ответные сообщения. При необходимости разовой ручной очистки изменений можно воспользоваться инструментом для отмены регистрации к обмену всех документов с выбранной даты.
Выясним основные моменты, которые мы разобрали:
Отказ = Истина — лучший способ минимизировать объем обратного файла.Соблюдение этих правил позволит вам создать надежный мост между старой и новой версиями программ 1С, обеспечив стабильную синхронизацию данных без дублей и бесконечного накопления изменений в планах обмена. Для автоматизации этого процесса по расписанию можно настроить регулярный автоматический обмен данными между базами 1С без изменения конфигураций.