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