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