Как настроить автоматическую замену или объединение складов при синхронизации УТ 11.5 и БП 3.0

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

При организации обмена данными между 1С:Управление торговлей 11.5 и 1С:Бухгалтерия предприятия 3.0 часто возникает ситуация, когда детальный складской учет в торговой базе не должен дублироваться в бухгалтерской. Например, в УТ может быть десять складов для оперативного управления, а в БП учет ведется по одной организации на одном «Основном складе». Разберем подробно, какими инструментами можно решить задачу «схлопывания» складов при использовании универсального формата обмена (Enterprise Data).

Способ 1. Использование штатной настройки «Выгружать аналитику по складам»

Это самый простой и рекомендуемый способ, не требующий программирования. В современных версиях УТ 11 и БП 3.0 механизмы синхронизации уже предусматривают сценарий, когда складская аналитика в базе-приемнике не требуется.

Проанализируем алгоритм настройки по шагам:

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

Выясним причину, почему это работает: когда БП 3.0 получает объект через Enterprise Data, в котором не указан идентификатор склада, срабатывает обработчик заполнения пустых значений. Программа берет склад из констант настройки обмена и подставляет его в документ. Это гарантирует, что все документы «лягут» на один выбранный объект учета.

Способ 2. Очистка регистра соответствия объектов

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

Чтобы решить эту проблему, выполним следующие действия:

  1. В базе БП 3.0 или УТ 11 зайдем в настройки синхронизации.
  2. Найдем пункт «Результаты синхронизации» — «Настройки сопоставления».
  3. Найдем в списке справочник Склады.
  4. Рассмотрим записи сопоставления. Если вы хотите, чтобы все склады из УТ всегда превращались в один склад БП, необходимо удалить все связи для справочника Склады.

После удаления связей и отключения выгрузки аналитики (как описано в первом способе), система перестанет узнавать старые склады и начнет применять правило подстановки значения по умолчанию.

Способ 3. Исключение документов перемещения товаров

Если мы сворачиваем все склады в один, то документы Перемещение товаров в базе БП становятся бессмысленными (перемещение со склада «Основной» на склад «Основной» не создает проводок и только замусоривает базу). Посмотрим, как запретить их передачу.

Для этого в УТ 11 выполним настройку состава отправляемых данных:

  1. В окне настроек синхронизации нажмем кнопку «Состав отправляемых данных» (иконка с синим чемоданчиком).
  2. Найдем в дереве объектов Перемещение товаров.
  3. Мы можем либо полностью снять регистрацию для всех документов этого типа, либо нажать правую кнопку мыши и выбрать «Установить фильтр».
  4. В фильтре можно указать условие, которое никогда не выполнится (например, Номер Содержит "НЕ_ВЫГРУЖАТЬ") или просто запретить выгрузку проведенных документов этого типа.

Способ 4. Программная подмена склада через расширение (для разработчиков)

Если стандартных настроек недостаточно (например, если нужно сворачивать только определенную группу складов, а остальные оставлять как есть), придется прибегнуть к изменению логики обмена. В конфигурациях на базе Enterprise Data это удобнее всего делать в базе-приемнике (БП) через расширение.

Рассмотрим пример кода в модуле менеджера обмена или через обработчик в расширении. Нам понадобится вмешаться в процесс загрузки данных. Используем событие ПередЗаписьюПолученныхДанных.


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

Этот код принудительно перезапишет значение склада в объекте перед тем, как он будет сохранен в базе данных БП 3.0. Преимущество этого метода в том, что он работает «железно», независимо от того, какие GUID-ы пришли из УТ и какие настройки стоят в интерфейсе синхронизации.

Важные нюансы и рекомендации

При использовании любого из вышеперечисленных методов следует учитывать несколько критических моментов:

Подведем итог: наиболее правильным путем является комбинация отключения флажка аналитики в УТ и установки склада по умолчанию в БП. Это сохраняет конфигурации на поддержке и полностью решает задачу автора темы.

← На главную