Почему не заполняются счета учета при синхронизации УТ 11 и базовой версии БП 3.0 и как это исправить?

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

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

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

Анализ ситуации: специфика базовой версии и Интеркампани

Рассмотрим исходные условия. В конфигурации Управление торговлей ведется учет по нескольким организациям и настроена схема Интеркампани (перепродажа товаров между собственными организациями). Бухгалтерский учет при этом ведется в Бухгалтерии предприятия 3.0 базовой версии. Главное ограничение базовой версии БП — возможность ведения учета только по одной организации в одной информационной базе.

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

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

Выясняем техническую причину сбоя

Почему же очищаются счета учета? В БП 3.0 за заполнение этих данных отвечает механизм, работающий при загрузке или при записи объекта. Счета не передаются напрямую из УТ, они определяются в БП на основании регистра сведений СчетаУчетаНоменклатуры и СчетаУчетаРасчетовСКонтрагентами.

Разберем по шагам, что ломает этот алгоритм:

  1. При загрузке XML-пакета программный код обмена пытается сопоставить организацию-продавца и организацию-контрагента.
  2. В базовой версии попытка создать или обновить «чужую» организацию блокируется или вызывает внутреннюю ошибку в обработчике МенеджерОбменаЧерезУниверсальныйФормат.
  3. В результате документ создается, но подписки на события (например, ПриЗаписи), которые запускают процедуру ЗаполнитьСчетаУчета, либо игнорируются, либо прерываются из-за конфликта прав/лицензионных ограничений базовой версии.
  4. В журнале регистрации могут появляться ошибки типа «Объект не входит в состав фильтра по организации», хотя сам документ фильтр проходит.

Решение проблемы: работа с планом обмена

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

Рассмотрим основной способ решения — ручную очистку регистрации договоров:

Если счета учета перестали заполняться, необходимо проверить состав отправляемых данных в Управлении торговлей. Для этого выполним следующие действия:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем Состав отправляемых данных для нужной настройки обмена.
  3. Найдем в списке справочник Договоры контрагентов.
  4. Проанализируем зарегистрированные к обмену договоры. Если там присутствуют договоры, в которых контрагентом является ваша же организация (интеркампани), их необходимо разрегистрировать (удалить из списка регистрации).

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

Дополнительные рекомендации по настройке

Чтобы избежать повторения проблемы после обновлений или при регулярной работе, проанализируем еще несколько важных моментов.

1. Проверка регистра «Счета учета номенклатуры»

В базовой БП убедимся, что в регистре Счета учета номенклатуры поле Организация оставлено пустым. Это позволит алгоритму поиска счетов работать универсально, не привязываясь к конкретному идентификатору организации, который может временно «сбоить» при загрузке через Enterprise Data.

2. Настройка фильтров в УТ

В настройках синхронизации на стороне УТ 11 важно убедиться, что фильтр по организации настроен жестко. Однако помните, что типовые правила все равно могут тянуть связанные объекты по ссылкам. Если проблема возникает регулярно, можно рассмотреть создание небольшого расширения для УТ, которое будет автоматически исключать договоры типа «между организациями» из плана обмена.

3. Использование версии формата

Иногда помогает принудительное понижение версии универсального формата в настройках синхронизации (например, переход с версии 1.13 на 1.10). В более старых версиях формата проверки на стороне приемника могут быть менее агрессивными к «лишним» данным в пакете.

Пример анализа через отладчик (для технических специалистов)

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


// В модуле менеджера обмена проверяется заполнение реквизитов
Процедура ПриИмпортеОбъекта(ДанныеИксмл, Объект, ДанныеОбъекта)
    // Если это документ, запускаем стандартное заполнение счетов
    Если Справочники.ТипЗнч(Объект) = Тип("ДокументОбъект.РеализацияТоваровУслуг") Тогда
        Объект.ЗаполнитьСчетаУчета(); 
        // В базовой версии этот вызов может не сработать, 
        // если Объект.Организация не прошла валидацию
    КонецЕсли;
КонецПроцедуры

В базовой версии 1С программный код часто содержит скрытые проверки вида Если ЭтоБазоваяВерсия() Тогда..., которые могут блокировать запись объекта, если в транзакции участвует более одной ссылки на справочник Организации. Удаление договоров из обмена — это самый эффективный способ обойти это ограничение без изменения программного кода конфигурации.

Заключение

Проблема незаполнения счетов учета при синхронизации с базовой БП 3.0 — это следствие конфликта между сложной бизнес-логикой УТ (Интеркампани) и лицензионными ограничениями базовой версии Бухгалтерии. Основное решение: контроль плана обмена и исключение из него договоров между собственными организациями. Это позволяет «изолировать» базовую базу от данных о других юрлицах и восстановить нормальную работу типовых алгоритмов заполнения документов.

← На главную