Как устранить дублирование документов при обмене между УТ 11 и БП 3.0 при переносе услуг?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

Синхронизация данных между 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 — это мощный инструмент, который, однако, иногда преподносит неприятные сюрпризы. Типичная ситуация: вы переносите данные, и вдруг в Бухгалтерии обнаруживаются два документа с одинаковыми номерами, один из которых пустой или помечен на удаление. В результате Счет-фактура полученный ссылается на оба документа, и его невозможно провести. Разберем подробно, почему это происходит и как исправить ситуацию.

Причина возникновения проблемы: конфликт типов документов

Проанализируем механику обмена. В конфигурации Управление торговлей 11 (УТ) документ Приобретение услуг и прочих активов является универсальным. Однако при выгрузке через формат Enterprise Data система должна сопоставить его с конкретным объектом в Бухгалтерии предприятия 3.0 (БП). Выбор целевого документа в БП зависит от настроек аналитики в УТ, а именно — от Варианта распределения в статье расходов:

  1. Если в статье расходов выбрано На себестоимость товаров, то в БП должен создаться документ Поступление доп. расходов.
  2. Если выбрано На направления деятельности или На расходы будущих периодов, то в БП создается документ Поступление (акт, накладная) с видом операции «Услуги».

Проблема возникает, когда после первой синхронизации бухгалтер в УТ меняет статью расходов или ее настройки. Система обмена уже зафиксировала связь (соответствие) исходного документа УТ с определенным типом документа в БП. При повторном обмене правила пытаются создать документ другого типа, но старая связь в регистре сведений Соответствия объектов информационных баз продолжает указывать на старый объект. В итоге в БП появляются «фантомные» записи или дубли, которые блокируют работу связанных объектов, таких как Счет-фактура полученный.

Шаг 1. Анализ программного кода очистки ссылок

Рассмотрим, как система пытается бороться с этой проблемой на уровне программного кода. В типовых конфигурациях существует процедура, предназначенная для удаления «битых» ссылок из табличной части оснований счета-фактуры. Посмотрим на пример реализации этой логики:


Процедура УдалитьДокументыОснованияСБитымиСсылками(Объект)
    // Нужно удалить документы-основания с битыми ссылками.
    // Это нужно для того, чтобы корректно установить основание в том случае,
    // если исходный документ-основание в сообщении обмена может превращаться в разные объекты ИБ.
    
    Индекс = Объект.ДокументыОснования.Количество() - 1;
    
    Пока Индекс >= 0 Цикл
        ТекущаяСтрока = Объект.ДокументыОснования[Индекс];
        
        Если ЗначениеЗаполнено(ТекущаяСтрока.ДокументОснование)
            И Не ОбщегоНазначения.СсылкаСуществует(ТекущаяСтрока.ДокументОснование) Тогда
            Объект.ДокументыОснования.Удалить(ТекущаяСтрока);
        КонецЕсли;
        
        Индекс = Индекс - 1;
    КонецЦикла;
КонецПроцедуры

Разберем ситуацию: если функция ОбщегоНазначения.СсылкаСуществует возвращает Истина, строка не удаляется. Но коварство ситуации в том, что если документ в базе БП физически существует (пусть даже он пустой или помечен на удаление), ссылка на него считается «живой». Для корректной очистки системе нужно, чтобы ссылка была именно «битой» (Объект не найден).

Шаг 2. Радикальное решение через Тестирование и исправление

Если простые перезагрузки документов не помогают и дубликаты продолжают появляться в табличной части оснований счета-фактуры, необходимо выполнить очистку информационной базы. Рассмотрим пошаговый алгоритм:

  1. Удаление проблемных документов в БП: Найдите в Бухгалтерии оба документа-дубля (и нормальный, и помеченный на удаление). Удалите их непосредственно (через Удаление помеченных объектов), чтобы в базе не осталось ссылок на них.
  2. Запуск Тестирования и исправления (ТиИ): Перейдите в режим Конфигуратор, выберите меню Администрирование — Тестирование и исправление.
  3. Настройка ТиИ: Установите флаг Проверка ссылочной целостности. В нижней части окна, в поле «При наличии ссылок на несуществующие объекты», выберите вариант Очищать ссылки (или «Удалять объект», если это допустимо для вашей ситуации).
  4. Выполнение: Запустите процесс. Это позволит базе данных окончательно «забыть» о старых идентификаторах (GUID), которые мешали корректному сопоставлению.
  5. Повторный обмен: После завершения ТиИ выполните выгрузку документа из УТ заново. Теперь система создаст ровно один документ правильного типа.

Шаг 3. Ручная корректировка регистра соответствий

Если ТиИ проводить слишком долго из-за большого объема базы, проанализируем альтернативный путь — ручную правку регистра соответствий. Выясним причину устойчивости связи объектов. В БП существует регистр Соответствия объектов информационных баз.

Выполним следующие действия:

Важный момент: если этого не сделать, при следующей синхронизации система может снова найти старую связь и попытаться восстановить ненужный документ, создавая пустую «пустышку».

Рекомендации по профилактике

Чтобы избежать подобных коллизий в будущем, проанализируем процесс ввода данных. Основная причина бед — изменение аналитики статьи расходов после того, как документ уже «улетел» в Бухгалтерию.

Рассмотрим правила хорошего тона при работе с обменом:

Таким образом, мы выяснили, что проблема дублирования чаще всего кроется не в ошибке правил обмена, а в накоплении устаревших связей в регистре соответствий и особенностях работы функции СсылкаСуществует. Сочетание физического удаления объектов и очистки битых ссылок через ТиИ является наиболее надежным способом восстановления корректной работы обмена.

← На главную