При настройке синхронизации данных между 1С:Управление торговлей 11 и 1С:Бухгалтерия предприятия 3.0 специалисты часто сталкиваются с загадочным поведением нумерации. Типичная ситуация: документ в УТ имеет номер ООТ1-001776, а после загрузки в БП он превращается в ООТ1-Х00588. Особенно часто это проявляется у документов с видом операции "Передача товара" (межфирменные продажи или комиссия). Разберемся, почему система ведет себя именно так, и где в конфигураторе скрыты механизмы, отвечающие за эту модификацию.
Современные обмены между конфигурациями 1С строятся на базе технологии Enterprise Data (Конвертация данных 3.0). В отличие от старой версии КД 2.0, где правила были жестко прописаны в XML-файле, здесь основная логика трансформации данных сосредоточена непосредственно внутри конфигурации в специальных модулях менеджеров обмена. Рассмотрим подробнее, как это влияет на нумерацию.
Когда документ выгружается из УТ, он преобразуется в универсальный формат XDTO. При загрузке в БП 3.0 система анализирует входящие данные. Префикс "Х" (или аналогичные буквенные индексы) часто используется разработчиками фирмы "1С" как средство предотвращения коллизий или для визуального разделения потоков документов. Если в БП один и тот же тип документа (например, РеализацияТоваровУслуг) используется для отражения разных хозяйственных операций, которые в УТ являются разными объектами или имеют разную логику нумерации, механизм обмена может принудительно добавить символ в номер, чтобы избежать дублирования в базе-приемнике.
Основная точка входа для логики трансформации — это общий модуль МенеджерОбменаЧерезУниверсальныйФормат. Если вы столкнулись с префиксом "Х", первым делом проанализируем именно его. Нам необходимо найти процедуры, отвечающие за инициализацию или преобразование свойств загружаемых объектов.
Выясним причину, изучив код. В модуле менеджера обмена ищите функции, связанные с получением номера. Часто это процедуры с именами типа ПолучитьНомерДляДокументаОбъекта или обработчики ПОД (правил обработки данных). Рассмотрим пример кода, который может скрываться внутри:
// Пример логики, которая может добавлять префикс
Если ДанныеXDTO.ВидОперации = "ПередачаНаКомиссию" Тогда
ПрефиксОперации = "Х";
Объект.Номер = ПрефиксОперации + СтрЗаменить(ДанныеXDTO.Номер, " ", "");
КонецЕсли;
Проанализируем ситуацию: если префикс появляется только у "Передач", значит, в коде обмена стоит жесткое условие на вид операции. Система пытается отделить "внутренние" или "комиссионные" реализации от обычных оптовых продаж, чтобы бухгалтер сразу видел разницу в списке документов.
Если в коде менеджера обмена префикс не найден, проверим стандартные механизмы БП 3.0. В этой конфигурации активно используется подписка на событие ПриУстановкеНовогоНомера. Пройдем по шагам процесс проверки:
УстановитьПрефиксИнформационнойБазыНомеруДокумента.ПрефиксацияОбъектовСобытия.ПриУстановкеНовогоНомераДокумента.Важно помнить, что в БП 3.0 префиксация может зависеть не только от организации и информационной базы, но и от подразделения. Если в документе заполнено обособленное подразделение, система может добавлять к номеру свой специфический индекс.
В конфигурации "Управление торговлей 11" существует функционал Intercompany. При передаче товаров между собственными организациями документы создаются парой. При выгрузке такой передачи в "Бухгалтерию предприятия" срабатывают особые правила. Разберем ситуацию: в БП документ РеализацияТоваровУслуг с видом операции "Передача между организациями" может требовать уникальной нумерации, отличной от торговых операций.
В некоторых версиях правил обмена префикс "Х" зашит как признак того, что документ пришел из обмена и относится к категории перемещений/передач, чтобы не "сбить" счетчик обычных реализаций в БП. Посмотрим на это со стороны базы-приемника: если документ загружается с готовым номером, БП пытается его сохранить. Но если в алгоритме загрузки стоит вызов функции ОбменДаннымиСервер.СформироватьНомерОбъекта, то номер может быть пересчитан с учетом префиксов обмена.
Иногда причина кроется не в текущем коде, а в "памяти" системы. Когда объект первый раз попадает из УТ в БП, создается запись в регистре сведений СоответствияОбъектовИнформационныхБаз. Если при первой загрузке (возможно, ошибочной или на старых правилах) документу был присвоен номер с префиксом "Х", система закрепит эту связь.
Рассмотрим порядок действий для исправления:
СоответствияОбъектовИнформационныхБаз (через функции технического специалиста).Чтобы окончательно выяснить, в какой момент приклеивается "Х", воспользуемся отладкой. Поскольку обмен идет через универсальный формат, нам нужно поймать момент работы Менеджера обмена на стороне БП 3.0.
Выполним следующие шаги:
ОбменДаннымиСервер в процедуре ВыполнитьЗагрузкуДанныхДляУзлаИнформационнойБазы.ИнициализироватьОбъект для типа Документ.РеализацияТоваровУслуг.Объект.Номер до и после выполнения процедур трансформации.Важный момент: Если вы видите, что номер меняется в процедуре ПослеЗагрузкиОбъекта, значит, это программная логика правил КД 3.0, призванная разделить нумерацию по типам операций. Чтобы это изменить, придется создать расширение и переопределить логику в модуле МенеджерОбменаЧерезУниверсальныйФормат, найдя соответствующий участок кода по ключевой строке "Х".
Подведем итог: префикс "Х" не появляется "просто так". Это либо результат работы алгоритмов предотвращения коллизий в КД 3.0, либо специфическая настройка для выделения операций межфирменных передач. Тщательный анализ модуля менеджера обмена и проверка регистра соответствий позволят вам найти и устранить эту особенность нумерации.