При настройке обмена данными между конфигурациями 1С:Бухгалтерия предприятия (БП) и 1С:Управление автотранспортом (УАТ) (в том числе если используется синхронный обмен данными) часто возникает избыточность данных. Например, бухгалтерии необходимо учитывать весь спектр ТМЦ (от запчастей до канцтоваров), в то время как в УАТ требуется только номенклатура, связанная с обслуживанием автопарка и ГСМ. Одной из эффективных стратегий ограничения потока данных является фильтрация документов Поступление (акты, накладные, УПД) по конкретному складу. Разберем подробно, как реализовать этот механизм при использовании синхронизации через универсальный формат (Enterprise Data).
Прежде чем приступать к кодингу, проанализируем, как работает механизм синхронизации. В современных версиях 1С обмен строится на двух этапах:
МенеджерОбменаЧерезУниверсальныйФормат и отправляет в базу-приемник.Для нашей задачи наиболее правильным будет вмешаться на первом этапе — этапе регистрации. Если документ не попадет в очередь на выгрузку, нам не придется тратить ресурсы системы на его конвертацию и передачу по сети.
Этот метод является наиболее безопасным и «чистым», так как не требует изменения основной конфигурации 1С:БП и не создает проблем при последующих обновлениях. Нам необходимо перехватить событие регистрации документа для обмена.
Рассмотрим ситуацию, когда нам нужно выгружать поступления только по складу Основной склад. Проанализируем программный код, который нужно добавить в расширение:
&После("ПриРегистрацииДляОбмена")
Процедура Расш1_ПриРегистрацииДляОбмена(Объект, Узлы)
// Проверяем, что объект — это документ поступления
Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг") Тогда
// Определяем имя узла обмена с УАТ (зависит от настроек вашей синхронизации)
Для Каждого Узел Из Узлы Цикл
Если Узел.Метаданные().Имя = "СинхронизацияДанныхЧерезУниверсальныйФормат" Тогда
// Проверяем склад в документе
// Если склад не соответствует нашему условию — удаляем регистрацию
Если Объект.Склад.Наименование <> "Основной склад" Тогда
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Объект);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
В данном примере мы используем метод ПланыОбмена.УдалитьРегистрациюИзменений(). Это гарантирует, что даже если платформа автоматически зарегистрировала документ при проведении, наше расширение тут же снимет его с регистрации, если склад не совпадает с разрешенным.
Если вы предпочитаете использовать штатные инструменты настройки Enterprise Data, можно изменить Правила Регистрации Объектов (ПРО). Эти правила обычно хранятся внутри конфигурации в виде макета ПравилаРегистрации.
Выясним, как правильно внести изменения:
ПоступлениеТоваровУслуг.ПередОбработкой пропишите условие фильтрации.Пример логики для ПРО:
// Условие в правилах регистрации
Если Объект.Склад.Наименование = "Склад ГСМ" Тогда
Отказ = Ложь; // Выгружаем
Иначе
Отказ = Истина; // Игнорируем
КонецЕсли;
Важный момент: после правки XML-макета его нужно загрузить обратно в информационную базу через настройки синхронизации данных. Прямая правка текста XML в конфигураторе (как пытались сделать в сообщении №15) крайне не рекомендуется, так как малейшая ошибка в структуре тегов приведет к полной остановке обмена.
Рассмотрим ситуацию с точки зрения методологии учета, упомянутую в сообщении №2. Ограничение выгрузки только поступлений может привести к логическим ошибкам в УАТ:
Перемещение товаров был переведен на «Основной склад» (который выгружается), то в УАТ придет перемещение без первичного прихода. Это создаст отрицательный остаток на складе в УАТ.Совет: Вместе с ограничением поступлений обязательно проанализируйте настройки выгрузки документов ПеремещениеТоваров и ТребованиеНакладная. Логика фильтрации по складу должна быть идентичной во всех складских документах.
Для реализации задачи мы выяснили следующее:
Enterprise Data за логику выгрузки отвечает МенеджерОбменаЧерезУниверсальныйФормат, но фильтрацию объектов лучше делать через ПланыОбмена.Проанализировав все способы, мы рекомендуем использовать именно расширение с подпиской на событие, так как это позволяет гибко управлять списком разрешенных складов (например, вынести их в константу или дополнительный параметр) без необходимости пересобирать правила конвертации в специализированном ПО.