При работе в 1С:Управление торговлей 10.3 часто возникает задача разделить потоки данных при выгрузке в 1С:Бухгалтерию предприятия 2.0. Типичная ситуация: в торговой базе ведется учет по многим организациям, а в бухгалтерскую базу нужно передавать данные только по некоторым из них, причем делать это независимо (в разное время и по разным правилам). Если настроить обмен некорректно, можно столкнуться с тем, что номера сообщений «сбиваются», а документы одной организации начинают помечаться на удаление при выгрузке другой. Рассмотрим подробно, как правильно организовать этот процесс и избежать конфликтов данных.
Основная причина проблем при создании второго «параллельного» обмена заключается в том, что механизмы 1С идентифицируют обмен по коду узла плана обмена. Если вы создаете новый узел в УТ, но в БП пытаетесь использовать уже существующий узел или создаете новый с некорректными кодами, программа теряет связь.
Когда вы запускаете обмен, система сверяет номер отправленного и номер принятого сообщения. Если для одной и той же пары баз используются разные узлы, но записи в них пересекаются, возникает хаос в нумерации. Еще более опасная проблема — автоматическая пометка на удаление. В типовых правилах обмена заложен алгоритм: если объект ранее был передан через данный узел, но в текущей выгрузке его нет (так как сработал фильтр по другой организации), система может решить, что объект был удален в источнике, и пометит его на удаление в приемнике.
Для того чтобы два обмена были полностью независимы, мы должны создать в каждой базе строго уникальные пары узлов. Проанализируем схему именования кодов:
ОбменУправлениемТорговлейБухгалтерияПредприятия).БП1.БП2.УТ2, который будет соответствовать коду отправителя из УТ.Важно: Код «Этот узел» (помечен иконкой компьютера) в УТ должен совпадать с кодом узла-отправителя в БП, и наоборот. Только при соблюдении этой парности НомерПринятого и НомерОтправленного будут инкрементироваться корректно и независимо для каждого потока данных.
Чтобы документы разных организаций не конфликтовали в бухгалтерской базе, выясним, установлены ли префиксы. Префикс позволяет разделять нумерацию документов. Если у Организации №1 префикс 001, а у Организации №2 — 002, то даже при одинаковых номерах документов в УТ, в БП они лягут как разные объекты.
Настройку префиксов проверим в справочнике Организации. Без уникальных префиксов существует риск, что обмен «найдет» документ другой организации по номеру и дате и попытается перезаписать его данными текущей организации.
Проблема «взаимного удаления» документов (сообщение 16 на форуме) часто кроется в механизме авторегистрации. Проанализируем ситуацию: когда вы записываете документ в УТ, он регистрируется на ВСЕХ узлах плана обмена, к которым он относится по составу. Если у вас два узла (для Орг1 и Орг2), документ зарегистрируется на обоих.
Чтобы решить эту проблему, рассмотрим два способа:
НастройкиОбменаДанными) на вкладке «Объекты обмена» необходимо четко указать фильтр по конкретной организации для каждого узла.В программе 1С:Бухгалтерия предприятия 2.0 перейдем по пути:
Меню Сервис -> Настройка прав доступа -> Дата запрета изменения данных.
Здесь мы можем установить дату запрета не просто для всех пользователей, а в разрезе узлов планов обмена. Установите дату запрета для узла Организации №1, когда планируете заниматься выгрузкой только по Организации №2. Это создаст дополнительный «защитный барьер» для уже проведенных и выверенных документов.
Если вы используете файловый обмен (через каталог), убедитесь, что каждый обмен работает со своим файлом. Рассмотрим пример настройки:
C:\Exchange\Org1\Message_UT_BP.xmlC:\Exchange\Org2\Message_UT_BP.xmlЕсли оба узла будут пытаться писать и читать из одного и того же файла в одном каталоге, то база-приемник будет постоянно сообщать о несоответствии номеров сообщений, так как каждый узел ожидает увидеть свой порядковый номер (например, узел 1 ждет сообщение №45, а в файл записал данные узел 2 с номером №10).
Если проблема с пометкой на удаление сохраняется даже после настройки фильтров, проанализируем правила обмена (файл xml). В конфигурации «Конвертация данных» можно проверить обработчик ПередВыгрузкой.
Иногда в типовых правилах включена опция «Удалять объекты, не попавшие в выборку». Рассмотрим, как это выглядит в коде настроек (метафорически): система формирует список всех ИДов, которые были ранее переданы, и сравнивает их с текущими. Если идентификатора нет в текущем пакете — ставится пометка на удаление.
В такой ситуации наиболее надежным решением будет создание двух отдельных настроек обмена в справочнике НастройкиОбменаДанными в УТ 10.3, каждая из которых ссылается на свой узел плана обмена с жестко заданным фильтром по организации на уровне самого плана обмена (состав плана обмена и фильтрация при регистрации).
Подведем итог нашим действиям. Чтобы развести обмены по разным организациям, мы:
БП_НОВАЯ и УТ_НОВАЯ).НастройкиОбменаДанными отдельно для каждой записи.Следуя этим шагам, мы обеспечим полную независимость процессов синхронизации, и документы по разным организациям будут попадать в целевую базу корректно, не затрагивая работу коллег и не сбивая настройки уже существующих обменов.