Синхронизация данных между решениями «1С:Управление торговлей» (УТ) и «1С:Бухгалтерия предприятия» (БП) — одна из самых частых задач при автоматизации торгового бизнеса. Однако при использовании базовой версии «1С:Бухгалтерии» технические специалисты регулярно сталкиваются с серьезной преградой. При попытке загрузки данных в БП возникает следующая ошибка:
{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(2570)}: Ограничение базовой версии. В информационной базе может быть введена только одна организация.
В этой статье мы подробно разберем, почему возникает этот конфликт, даже если в настройках выгрузки УТ выставлен жесткий отбор по одной-единственной организации, и рассмотрим практические шаги по устранению этой проблемы.
Базовая версия «1С:Бухгалтерии предприятия» имеет жесткое лицензионное ограничение на уровне платформы и конфигурации — в одной информационной базе может вестись учет только по одной организации. В то же время «1С:Управление торговлей» является многофирменной системой, где по умолчанию присутствуют как минимум основная рабочая фирма и предопределенный элемент Управленческая организация.
Проанализируем три главные причины, по которым механизм обмена (XDTO / EnterpriseData) пытается создать вторую организацию в БП:
Управленческая организация, платформа пытается импортировать её для сохранения ссылочной целостности базы. Видя новую ссылку, БП пытается записать новый объект в справочник Организации, что моментально вызывает исключение в обработчике ПередЗаписью.Выясним, как решить эти проблемы с помощью нескольких эффективных методов.
Это самый надежный способ решить проблему сопоставления. Нам необходимо принудительно связать уникальный идентификатор организации из «1С:Управление торговлей» с уже существующей организацией в «1С:Бухгалтерии предприятия». Для этого используется служебный регистр сведений ПубличныеИдентификаторыСинхронизируемыхОбъектов.
Разберем этот процесс по шагам:
Шаг 1. Получение UUID организации из базы УТ
Для начала нам нужно узнать внутренний идентификатор (GUID) нашей организации в базе «1С:Управление торговлей». Сделать это можно с помощью внешней обработки «Поиск и замена дублей», через стандартную консоль запросов или выполнив простой код в режиме отладки или через групповую обработку реквизитов. Напишем небольшой пример кода, который возвращает UUID организации:
СсылкаНаОрг = Справочники.Организации.НайтиПоРеквизиту("ИНН", "7701020304"); // Укажите ИНН вашей организации
Если Не СсылкаНаОрг.Пустая() Тогда
Сообщить("UUID организации в УТ: " + Строка(СсылкаНаОрг.УникальныйИдентификатор()));
КонецЕсли;
Допустим, полученный идентификатор выглядит так: dee65c5b-d372-11e7-80cc-0cc47a697177.
Шаг 2. Запись идентификатора в базу БП Базовая
Теперь перейдем в информационную базу «1С:Бухгалтерия предприятия». Нам нужно прописать этот UUID в регистр сведений, отвечающий за синхронизацию. Выполним этот процесс программно, запустив внешнюю обработку в БП:
// Определим ссылку на нашу единственную организацию в БП
СсылкаОргБП = Справочники.Организации.Выбрать().Следующий(); // Так как организация одна, получим первую выборку
СсылкаОргБП = Справочники.Организации.НайтиПоРеквизиту("ИНН", "7701020304");
// Найдем узел обмена, соответствующий нашей интеграции с УТ
УзелОбмена = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоНаименованию("Управление торговлей, редакция 11");
Если ЗначениеЗаполнено(СсылкаОргБП) И ЗначениеЗаполнено(УзелОбмена) Тогда
МенеджерЗаписи = РегистрыСведений.ПубличныеИдентификаторыСинхронизируемыхОбъектов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Ссылка = СсылкаОргБП;
МенеджерЗаписи.УзелИнформационнойБазы = УзелОбмена;
МенеджерЗаписи.Идентификатор = "dee65c5b-d372-11e7-80cc-0cc47a697177"; // Вставляем UUID из УТ
Попытка
МенеджерЗаписи.Записать(Истина);
Сообщить("Сопоставление организации успешно записано!");
Исключение
Сообщить("Ошибка записи сопоставления: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
После успешного выполнения данного кода «1С:Бухгалтерия» при получении пакета данных из УТ мгновенно определит, что входящий объект с UUID dee65c5b-d372-11e7-80cc-0cc47a697177 соответствует существующей в базе организации, и не будет пытаться создать новую запись.
Проанализируем ситуацию, когда в плане обмена «зависает» регистрация изменений для объектов, которые не должны переноситься (например, документов по закрытым или управленческим организациям). Даже если вы настроили отборы в узле синхронизации, ранее зарегистрированные ошибочные объекты все равно могут попытаться выгрузиться.
Выполним очистку регистрации изменений по шагам:
Организации.Это гарантирует, что в XML-пакет выгрузки попадут только разрешенные к обмену документы.
Рассмотрим альтернативный сценарий, который помогает избежать ручного написания кода и работы со служебными регистрами. Если вы только настраиваете синхронизацию «с нуля», лучше использовать обратный порядок сопоставления.
Посмотрим на этот процесс подробнее:
Для стабильной работы синхронизации с базовыми версиями конфигураций 1С рекомендуем соблюдать следующие правила:
Соблюдение этих простых правил и своевременная привязка публичных идентификаторов объектов гарантируют корректную работу обмена данными без необходимости дорогостоящего апгрейда базовой версии «1С:Бухгалтерии» до версии ПРОФ.