При автоматизации торговых процессов часто возникает задача разделения управленческого и регламентированного учета. Типичный сценарий — работа в единой базе 1С:Управление торговлей 11 (УТ) с последующей выгрузкой данных в одну или несколько баз 1С:Бухгалтерия предприятия 3.0 (БП). В данной статье мы разберем, как правильно реализовать односторонний перенос данных, настроить фильтрацию по организациям и устранить критические ошибки, возникающие в процессе синхронизации на старых релизах программ.
Для реализации обмена между современными конфигурациями не требуется разработка собственных правил обмена или использование внешних обработок. Мы будем использовать встроенный механизм, основанный на универсальном формате EnterpriseData. Рассмотрим основные этапы настройки.
Прежде всего, проанализируем архитектуру решения. Если у нас есть одна база УТ и три базы БП для разных организаций, нам необходимо создать три отдельные настройки синхронизации в УТ. Каждая настройка будет отвечать за связь с конкретной базой бухгалтерии.
Для начала настройки перейдем в раздел НСИ и администрирование — Синхронизация данных. Здесь необходимо установить флаг СинхронизацияДанных и перейти по ссылке Настройки синхронизации данных. При создании нового обмена мы выбираем программу Бухгалтерия предприятия, редакция 3.0.
Многие пользователи ошибочно полагают, что для одностороннего обмена нужно использовать сторонние утилиты. На самом деле, это стандартная возможность платформы. Разберем по шагам, как ограничить поток данных:
Важно помнить, что выгрузку из БП в УТ можно и нужно отключить именно в настройках на стороне бухгалтерии. Это предотвратит нежелательное изменение управленческих данных бухгалтерскими корректировками.
Проанализируем ситуацию, когда организаций несколько. Для стабильной работы схемы «1 база УТ — N баз БП» необходимо строго соблюдать правило префиксов баз. Разберем, зачем это нужно:
Каждая информационная база должна иметь свой уникальный Префикс (например, «УТ», «Б1», «Б2», «Б3»). Префикс добавляется к номеру каждого документа и коду справочника. Если в разных базах БП будут одинаковые префиксы, в базе УТ возникнет конфликт номеров, и система не сможет корректно идентифицировать объекты. Выясним причину возможной путаницы: без уникальных префиксов синхронизация может начать «затирать» данные или выдавать ошибки при сопоставлении объектов.
В процессе выполнения синхронизации вы можете столкнуться с ошибкой, которая блокирует запись данных. Рассмотрим пример сообщения: «Произошла критическая ошибка при записи в журнал регистрации». Часто это связано с форматом хранения логов в системе 1С.
Посмотрим на техническую сторону вопроса. Начиная с версии платформы 8.3.5, журнал регистрации может храниться в файле формата SQLite (1Cv8.lgd). При интенсивном обмене данными, особенно в старых релизах конфигураций (таких как УТ 11.4.1), этот файл может быть поврежден из-за системных сбоев или проблем с дисковой подсистемой.
Для решения этой проблемы выполним следующие действия:
1Cv8.lgd и переименуем его (например, в 1Cv8_old.lgd).Проанализируем ситуацию с версиями программ. УТ 11.4.1 и БП 3.0.44 — это достаточно старые релизы. В ранних версиях 11.4 механизм EnterpriseData (универсальный формат) содержал ряд недоработок, которые приводили к зависанию фоновых заданий при нажатии кнопки «Записать и закрыть» в настройках синхронизации.
Рассмотрим рекомендации по обновлению. Если база «зависает», это может означать, что система пытается выполнить первичную регистрацию всех документов за огромный период. В этом случае мы рекомендуем:
Выясним причину, почему обновление критично: форматы обмена XSD постоянно меняются. Если ваша БП обновляется регулярно (например, для сдачи отчетности), а УТ остается на старом релизе, структура XML-файла, которую генерирует УТ, может не соответствовать ожиданиям БП. В коде это обрабатывается через чтение версии формата:
// Пример логики проверки версии формата в коде синхронизации
ВерсияФормата = МенеджерОбмена.ОпределитьВерсиюФормата(Данные);
Если ВерсияФормата = "1.3" Тогда
// Выполнить загрузку по старым правилам
ИначеЕсли ВерсияФормата = "1.5" Тогда
// Выполнить загрузку по новым правилам
КонецЕсли;
Если разрыв между версиями слишком велик, программа может просто выдать ошибку о невозможности прочитать сообщение обмена. Поэтому всегда старайтесь поддерживать актуальность обеих баз, участвующих в обмене.
Таким образом, для успешного одностороннего переноса мы выполняем следующие шаги: настраиваем стандартную синхронизацию в УТ, фильтруем данные по организации, отключаем выгрузку в настройках БП и следим за уникальностью префиксов. В случае технических сбоев проверяем целостность журнала регистрации и актуальность версий EnterpriseData.