При настройке типовой синхронизации между 1С:Бухгалтерия (БП) и 1С:Управление торговлей (УТ) часто возникает ситуация, когда данные уходят из базы-отправителя, но не появляются в базе-получателе. Особенно остро это проявляется при попытке «наполнить» чистую базу УТ справочниками из работающей БП. Даже если мы принудительно регистрируем все объекты к обмену, в УТ может появиться лишь малая часть данных. Рассмотрим подробно, почему так происходит и как добиться полной выгрузки всей НСИ (нормативно-справочной информации).
Первое, на что мы обратим внимание — это настройки состава отправляемых данных. В типовых обменах 1С по умолчанию часто стоит флаг «Отправлять только используемую в документах». Если при первой синхронизации эта настройка была включена, система проанализирует все документы, зарегистрированные к обмену, и выберет только ту номенклатуру и тех контрагентов, которые в них фигурируют.
Проанализируем ситуацию: если мы позже меняем настройку на «Выгружать всю НСИ», система должна пересчитать состав отправки. Однако на практике часто требуется принудительное перечитывание правил. Давайте выполним следующие действия:
Если после этого данные все равно не приходят, нам поможет обработка «Регистрация изменений для обмена». В ней нужно выбрать узел обмена с УТ, найти справочник Номенклатура, нажать правой кнопкой мыши и выбрать «Зарегистрировать все объекты выбранного типа». Аналогично поступим со справочником Контрагенты.
Часто проблема кроется не в том, что БП «не отдает», а в том, что УТ «не принимает». В 1С:Управление торговлей 11 существуют свои правила получения данных, которые могут блокировать загрузку объектов, даже если они физически присутствуют в файле обмена или COM-соединении.
Посмотрим на настройки на стороне УТ:
Это одна из самых коварных причин «невидимости» данных. В 1С обмен работает на основе уникальных идентификаторов (GUID). Когда объект передается в первый раз, система создает запись в регистре сведений СоответствияОбъектовИнформационныхБаз. Эта запись связывает объект в БП с объектом в УТ.
Представим ситуацию: мы загрузили 100 контрагентов, а потом решили их удалить из УТ напрямую (или пометили на удаление и очистили базу), чтобы «перезалить» заново. Запись в регистре соответствий при этом часто остается «сиротой». При следующей синхронизации БП отправляет данные, УТ видит, что соответствие для этого GUID уже есть, пытается найти объект, не находит его (так как он удален) и... ничего не делает. Объект не создается заново, потому что система считает его уже синхронизированным.
Как это решить:
Необходимо очистить записи в регистре СоответствияОбъектовИнформационныхБаз для конкретного узла обмена. Это заставит систему при следующем сеансе синхронизации искать объекты по полям поиска (ИНН/КПП, Наименование) или создавать новые карточки.
База 1С:Управление торговлей 11 предъявляет гораздо более жесткие требования к заполнению справочников, чем 1С:Бухгалтерия. Если в БП у номенклатуры не заполнены ключевые поля, она может просто не пройти валидацию при загрузке в УТ.
Рассмотрим критически важные реквизиты:
Выясним причину через Журнал регистрации. Откроем его в УТ в момент совершения обмена. Ищем события с уровнем «Ошибка» или «Предупреждение». Часто там можно встретить сообщения типа Ошибка при вызове метода контекста (Записать), за которыми следует описание: Поле 'Вид номенклатуры' не заполнено. Это и будет ответом, почему данные не «залетают» в базу.
Если вы используете прямое подключение (COM), процесс загрузки для нас остается «черным ящиком». Чтобы увидеть, что на самом деле передает БП, перенастроим обмен временно через локальный каталог (XML-файл).
Выполним выгрузку из БП в файл и откроем полученный Message_БП_УТ.xml любым текстовым редактором (например, Notepad++). Поищем в файле теги CatalogObject.Номенклатура. Если в файле мы видим все наши 5000 позиций, а в УТ загрузилось только 1000 — значит, проблема на 100% на стороне приемника (УТ), и нужно копать в сторону фильтров и правил записи объектов.
Пример структуры данных в файле, на которую стоит обратить внимание:
<CatalogObject.Номенклатура>
<Ref>uuid-вашего-объекта</Ref>
<DeletionMark>false</DeletionMark>
<Description>Товар из БП</Description>
<Артикул>001</Артикул>
...
</CatalogObject.Номенклатура>
В настройках синхронизации есть важный пункт: «Правила разрешения коллизий». Если установлено «Приоритет данных информационной базы-приемника», то при несовпадении данных или наличии в УТ объекта с таким же кодом/наименованием (но пустым), система может игнорировать входящие данные из БП, чтобы не затереть то, что уже есть в УТ.
Для первоначальной массовой загрузки данных мы рекомендуем временно установить «Приоритет данных информационной базы-отправителя». Это гарантирует, что информация из Бухгалтерии «победит» и корректно запишется в Управление торговлей.
Если вы столкнулись с тем, что данные не переносятся полностью, пройдите по этому чек-листу:
Справочник.Номенклатура.Следуя этим шагам, вы обязательно найдете «узкое горлышко» и сможете успешно завершить миграцию данных между конфигурациями.