При организации обмена данными между 1С:Управление торговлей 10.3 (УТ) и 1С:Бухгалтерия предприятия 3.0 (БП) часто возникает вопрос: если мы используем прямое подключение через COM-соединение и выгружаем данные только в одну сторону, нужно ли вообще заходить в базу-приемник и что-то там настраивать? Кажется, что раз УТ сама «подключается и кладет» данные, то БП может оставаться «пассивной». Однако это опасное заблуждение, которое может привести к бесконечной выгрузке одних и тех же документов.
Рассмотрим подробнее, как работает механизм обмена на базе планов обмена и почему настройка обеих сторон является обязательным условием стабильной работы системы.
Разберем механику взаимодействия баз. Даже если инициатором всегда выступает УТ 10.3, обмен в 1С — это всегда двусторонний процесс на уровне квитирования (подтверждения). Когда УТ отправляет пакет данных, она ожидает от БП ответ: «Я приняла сообщение номер N, можешь больше не присылать объекты, которые в него входили».
Проанализируем, что произойдет, если в БП 3.0 не будет создан соответствующий узел плана обмена:
Таким образом, настройка в БП необходима для квитирования. База-приемник должна хранить номер последнего полученного сообщения и сообщать его базе-источнику. Только тогда в УТ очистится таблица регистрации изменений для уже переданных объектов.
Выясним техническую причину частых ошибок при настройке прямого подключения. Самая распространенная проблема — ошибка «Класс не зарегистрирован». Это происходит из-за конфликта разрядности. Если ваш сервер 1С:Предприятие работает в 64-битном режиме, а база БП 3.0 требует обращения через 32-битный COM-соединитель (или наоборот), система не сможет инициализировать библиотеку comcntr.dll.
Для решения этой проблемы выполним следующие действия:
Пример команды для регистрации библиотеки (путь может отличаться в зависимости от версии платформы):
regsvr32 "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"
Посмотрим на пример кода, который часто используется внутри типовых механизмов для проверки соединения. Если этот блок выдает ошибку, значит, COM-соединитель не настроен в операционной системе:
Попытка
COMСоединитель = Новый COMОбъект("V83.COMConnector");
БазаПриемник = COMСоединитель.Connect("Srvr='ServerName';Ref='BaseName';Usr='Login';Pwd='Password';");
Исключение
Сообщить("Не удалось установить соединение: " + ОписаниеОшибки());
КонецПопытки;
Рассмотрим по шагам, что именно нужно сделать на стороне БП 3.0, чтобы обмен заработал корректно:
Проанализируем ситуацию с правилами обмена. Обмен между УТ 10.3 и БП 3.0 базируется на технологии Конверсия данных 2.1. Правила представляют собой XML-файлы. Важно понимать, что БП 3.0 постоянно обновляется, в ней появляются новые реквизиты (например, связанные с прослеживаемостью товаров или новыми формами счетов-фактур).
Чтобы избежать ошибок при загрузке, всегда берите актуальные правила обмена. Обычно они находятся в каталоге установленного релиза БП 3.0 в подпапке \Обмены данными\Обмен с конфигурацией Управление торговлей, ред. 10.3\. Эти правила нужно загрузить в настройку обмена на стороне УТ 10.3.
При использовании COM-соединения необходимо создать в БП 3.0 специального пользователя, от имени которого будет подключаться УТ. Разберем требования к этому пользователю:
Администратор системы или Полные права.USR1CV8), имеет права доступа к COM-объектам в Windows.Таким образом, мы выяснили, что полноценная настройка обеих баз — это не прихоть, а техническая необходимость для корректной работы механизма квитирования сообщений и обеспечения целостности данных.