Ситуация, когда типовая синхронизация между «1С:Управление торговлей 11» (УТ) и «1С:Бухгалтерия предприятия 3.0» (БП) работает частично, — одна из самых распространенных и при этом трудоемких в плане поиска причин. Часто бывает так, что документы одного типа (например, «Поступление товаров и услуг») переносятся без проблем, а другие (например, «Реализация товаров и услуг») «застревают» в пути, хотя система не выдает явных ошибок. Разберем пошагово, как продиагностировать эту проблему и найти «потерянные» документы.
Прежде чем искать причину в базе-приемнике (БП), нам необходимо убедиться, что база-источник (УТ) действительно пытается отправить нужные документы. Проанализируем Монитор состава отправляемых данных. В окне настроек синхронизации данных выберем пункт «Состав отправляемых данных» (иконка с синим карандашом или кнопка в меню).
В открывшемся окне найдем объект Документ.РеализацияТоваровУслуг. Нам нужно проверить:
Если автоматический обмен через прямое подключение не дает ответов, воспользуемся проверенным методом диагностики: временно перенастроим синхронизацию через локальный каталог. Рассмотрим, как это поможет нам в исследовании проблемы.
Выполним выгрузку из УТ в XML-файл. После завершения процесса откроем полученный файл любым текстовым редактором или браузером. Нам нужно найти в тексте XML строки, соответствующие нашим реализациям (поиск по номеру документа или по тегу Document.SalesInvoice, если используется формат EnterpriseData).
Проанализируем ситуацию:
Часто корень проблемы кроется в «забытых» настройках. Проверим параметры в УТ, которые могут отсекать реализации:
Иногда документы в БП попадают, но не туда, где их ожидает увидеть пользователь. Разберем, где они могут прятаться:
Реализация (акты, накладные, УПД).Выясним причину «молчаливого» отказа системы от загрузки данных. Для этого в БП перейдем в Администрирование — Обслуживание — Журнал регистрации.
Установим фильтр по событию «Обмен данными». Нам нужно найти записи со статусом «Ошибка» или «Предупреждение». Часто там можно встретить сообщения следующего типа:
«Объект не может быть записан, так как дата документа находится в закрытом периоде».
Проверим Дату запрета загрузки данных (Администрирование — Синхронизация данных). Если в БП установлена дата запрета, и апрель в нее попадает, документы будут проигнорированы без вывода критической ошибки в интерфейс обмена.
Рассмотрим ситуацию, когда документ уже был создан в БП вручную. Система синхронизации пытается сопоставить объекты. Если в БП уже есть документ с таким же номером и датой, но другой внутренней ссылкой (GUID), может возникнуть конфликт.
Если ни один из вышеперечисленных способов не помог, придется прибегнуть к отладке. Посмотрим, как это сделать правильно:
Для этого в БП нужно использовать обработку «Регистрация изменений для обмена» или запустить сеанс в режиме отладки. Основной интерес представляет модуль ОбменДаннымиСервер и процедуры, отвечающие за чтение сообщения обмена.
Нам важно поймать момент выполнения следующего кода в приемнике:
// В момент загрузки объекта система выполняет поиск по правилам
ПланыОбмена.ВыполнитьЗагрузкуДанных(ЧтениеСообщения);
// Если документ не проходит проверку заполнения в БП, он может не записаться
Если Не ДокументОбъект.Записать() Тогда
ЗаписатьВЖурналРегистрации("Ошибка записи при обмене", ...);
КонецЕсли;
Иногда полезно в модуле объекта документа РеализацияТоваровУслуг в процедуре ПередЗаписью поставить точку останова с условием на конкретный номер документа. Это позволит увидеть, какие именно поля не заполнены или какие проверки «отфутболивают» документ обратно.
Резюме: Чаще всего отсутствие реализаций при наличии поступлений связано либо с фильтром по складам/организациям в УТ, либо с датой запрета загрузки в БП. Пройдя по шагам от состава отправляемых данных до анализа XML-файла, вы гарантированно найдете точку, на которой данные теряются.