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