Как исправить ошибку «Ограничение базовой версии» при обмене данными между 1С:Управление торговлей и 1С:Бухгалтерия предприятием

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

Синхронизация данных между решениями «1С:Управление торговлей» (УТ) и «1С:Бухгалтерия предприятия» (БП) — одна из самых частых задач при автоматизации торгового бизнеса. Однако при использовании базовой версии «1С:Бухгалтерии» технические специалисты регулярно сталкиваются с серьезной преградой. При попытке загрузки данных в БП возникает следующая ошибка:

{ОбщийМодуль.УправлениеДоступомСлужебный.Модуль(2570)}: Ограничение базовой версии. В информационной базе может быть введена только одна организация.

В этой статье мы подробно разберем, почему возникает этот конфликт, даже если в настройках выгрузки УТ выставлен жесткий отбор по одной-единственной организации, и рассмотрим практические шаги по устранению этой проблемы.

Почему возникает ошибка в базовой версии 1С:Бухгалтерии?

Базовая версия «1С:Бухгалтерии предприятия» имеет жесткое лицензионное ограничение на уровне платформы и конфигурации — в одной информационной базе может вестись учет только по одной организации. В то же время «1С:Управление торговлей» является многофирменной системой, где по умолчанию присутствуют как минимум основная рабочая фирма и предопределенный элемент Управленческая организация.

Проанализируем три главные причины, по которым механизм обмена (XDTO / EnterpriseData) пытается создать вторую организацию в БП:

  1. Неявная выгрузка ссылочных объектов. Даже если вы настроили отборы и выгружаете документы только по одной организации, в файле обмена могут присутствовать ссылки на другие организации. Например, если в документах перемещения, списания или в связанных хозяйственных операциях фигурирует Управленческая организация, платформа пытается импортировать её для сохранения ссылочной целостности базы. Видя новую ссылку, БП пытается записать новый объект в справочник Организации, что моментально вызывает исключение в обработчике ПередЗаписью.
  2. Рассинхронизация уникальных идентификаторов (UUID). Основным признаком сопоставления объектов при обмене является их уникальный идентификатор (GUID/UUID). Если организация в БП и УТ создавалась вручную независимо друг от друга, их внутренние идентификаторы в базах данных не совпадают. БП не распознает присланную из УТ организацию как свою собственную и пытается создать дубликат.
  3. Расхождения в ключевых реквизитах поиска. Если автоматическое сопоставление по UUID не настроено, система пытается сопоставить организации по полям поиска: ИНН, КПП и наименованию. Любое минимальное различие (лишний пробел, кавычки другого типа, разный регистр букв) приводит к тому, что система позиционирует входящий объект как новый.

Выясним, как решить эти проблемы с помощью нескольких эффективных методов.

Решение 1. Прямая привязка UUID через регистр сведений «Публичные идентификаторы синхронизируемых объектов»

Это самый надежный способ решить проблему сопоставления. Нам необходимо принудительно связать уникальный идентификатор организации из «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 соответствует существующей в базе организации, и не будет пытаться создать новую запись.

Решение 2. Очистка нежелательной регистрации изменений в УТ

Проанализируем ситуацию, когда в плане обмена «зависает» регистрация изменений для объектов, которые не должны переноситься (например, документов по закрытым или управленческим организациям). Даже если вы настроили отборы в узле синхронизации, ранее зарегистрированные ошибочные объекты все равно могут попытаться выгрузиться.

Выполним очистку регистрации изменений по шагам:

  1. В «1С:Управление торговлей» перейдем в раздел НСИ и администрирование -> Синхронизация данных.
  2. Откроем настройки нашей синхронизации и нажмем на кнопку «Состав отправляемых данных» (иконка в виде монитора с карандашом).
  3. В открывшемся окне найдем справочник Организации.
  4. Если напротив него стоит число зарегистрированных объектов больше 1, кликнем правой кнопкой мыши по строке справочника и выберем пункт «Отменить регистрацию для всех объектов данного типа».
  5. Также проверим регистрацию документов. Если в списке зарегистрированных к отправке документов числятся операции по «Управленческой организации», выделим их и удалим из регистрации.

Это гарантирует, что в XML-пакет выгрузки попадут только разрешенные к обмену документы.

Решение 3. Первичный экспорт организации из БП в УТ

Рассмотрим альтернативный сценарий, который помогает избежать ручного написания кода и работы со служебными регистрами. Если вы только настраиваете синхронизацию «с нуля», лучше использовать обратный порядок сопоставления.

Посмотрим на этот процесс подробнее:

  1. В базе БП Базовая зайдем в настройки синхронизации данных.
  2. Выполним первоначальную выгрузку данных из БП в сторону УТ. Так как организация в БП гарантированно одна, выгрузится именно её карточка со всеми реквизитами и уникальным идентификатором.
  3. Запустим сеанс обмена в УТ и примем эти данные. В помощнике сопоставления данных сопоставим пришедшую из БП организацию с нашей рабочей организацией в УТ.
  4. После этого UUID организации в УТ перезапишется (или свяжется через таблицы соответствия), и все последующие прямые обмены из УТ в БП пройдут корректно без попыток дублирования.

Важные рекомендации при работе с базовой версией БП

Для стабильной работы синхронизации с базовыми версиями конфигураций 1С рекомендуем соблюдать следующие правила:

Соблюдение этих простых правил и своевременная привязка публичных идентификаторов объектов гарантируют корректную работу обмена данными без необходимости дорогостоящего апгрейда базовой версии «1С:Бухгалтерии» до версии ПРОФ.

← На главную