Синхронизация данных между 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 — это мощный инструмент, который, однако, иногда преподносит неприятные сюрпризы. Типичная ситуация: вы переносите данные, и вдруг в Бухгалтерии обнаруживаются два документа с одинаковыми номерами, один из которых пустой или помечен на удаление. В результате Счет-фактура полученный ссылается на оба документа, и его невозможно провести. Разберем подробно, почему это происходит и как исправить ситуацию.
Проанализируем механику обмена. В конфигурации Управление торговлей 11 (УТ) документ Приобретение услуг и прочих активов является универсальным. Однако при выгрузке через формат Enterprise Data система должна сопоставить его с конкретным объектом в Бухгалтерии предприятия 3.0 (БП). Выбор целевого документа в БП зависит от настроек аналитики в УТ, а именно — от Варианта распределения в статье расходов:
Поступление доп. расходов.Поступление (акт, накладная) с видом операции «Услуги».Проблема возникает, когда после первой синхронизации бухгалтер в УТ меняет статью расходов или ее настройки. Система обмена уже зафиксировала связь (соответствие) исходного документа УТ с определенным типом документа в БП. При повторном обмене правила пытаются создать документ другого типа, но старая связь в регистре сведений Соответствия объектов информационных баз продолжает указывать на старый объект. В итоге в БП появляются «фантомные» записи или дубли, которые блокируют работу связанных объектов, таких как Счет-фактура полученный.
Рассмотрим, как система пытается бороться с этой проблемой на уровне программного кода. В типовых конфигурациях существует процедура, предназначенная для удаления «битых» ссылок из табличной части оснований счета-фактуры. Посмотрим на пример реализации этой логики:
Процедура УдалитьДокументыОснованияСБитымиСсылками(Объект)
// Нужно удалить документы-основания с битыми ссылками.
// Это нужно для того, чтобы корректно установить основание в том случае,
// если исходный документ-основание в сообщении обмена может превращаться в разные объекты ИБ.
Индекс = Объект.ДокументыОснования.Количество() - 1;
Пока Индекс >= 0 Цикл
ТекущаяСтрока = Объект.ДокументыОснования[Индекс];
Если ЗначениеЗаполнено(ТекущаяСтрока.ДокументОснование)
И Не ОбщегоНазначения.СсылкаСуществует(ТекущаяСтрока.ДокументОснование) Тогда
Объект.ДокументыОснования.Удалить(ТекущаяСтрока);
КонецЕсли;
Индекс = Индекс - 1;
КонецЦикла;
КонецПроцедуры
Разберем ситуацию: если функция ОбщегоНазначения.СсылкаСуществует возвращает Истина, строка не удаляется. Но коварство ситуации в том, что если документ в базе БП физически существует (пусть даже он пустой или помечен на удаление), ссылка на него считается «живой». Для корректной очистки системе нужно, чтобы ссылка была именно «битой» (Объект не найден).
Если простые перезагрузки документов не помогают и дубликаты продолжают появляться в табличной части оснований счета-фактуры, необходимо выполнить очистку информационной базы. Рассмотрим пошаговый алгоритм:
Удаление помеченных объектов), чтобы в базе не осталось ссылок на них.Если ТиИ проводить слишком долго из-за большого объема базы, проанализируем альтернативный путь — ручную правку регистра соответствий. Выясним причину устойчивости связи объектов. В БП существует регистр Соответствия объектов информационных баз.
Выполним следующие действия:
Все функции или Функции для специалиста).Важный момент: если этого не сделать, при следующей синхронизации система может снова найти старую связь и попытаться восстановить ненужный документ, создавая пустую «пустышку».
Чтобы избежать подобных коллизий в будущем, проанализируем процесс ввода данных. Основная причина бед — изменение аналитики статьи расходов после того, как документ уже «улетел» в Бухгалтерию.
Рассмотрим правила хорошего тона при работе с обменом:
Таким образом, мы выяснили, что проблема дублирования чаще всего кроется не в ошибке правил обмена, а в накоплении устаревших связей в регистре соответствий и особенностях работы функции СсылкаСуществует. Сочетание физического удаления объектов и очистки битых ссылок через ТиИ является наиболее надежным способом восстановления корректной работы обмена.