Нередко на предприятиях возникает ситуация, когда параллельно ведутся две независимые информационные базы конфигурации 1С:Бухгалтерия предприятия 3.0 (например, для управленческого и регламентированного учета), после чего принимается решение перевести оперативный контур в 1С:Управление торговлей. Основная сложность заключается в том, что справочники контрагентов, номенклатуры и физических лиц в этих базах не синхронизированы, идентификаторы УникальныйИдентификатор различаются, а структура учета в УТ существенно сложнее, чем в БП. Разберем по шагам, как выстроить архитектуру такого переноса, избежать появления дублей и подключить скорректированные правила обмена без снятия типовой конфигурации с поддержки.
Для успешного перехода рекомендуется разделить проект на последовательные этапы, не пытаясь настроить сквозной двухсторонний обмен сразу между тремя информационными базами:
Проанализируем специфику идентификации ключевых объектов учета при слиянии баз:
КонтактнаяИнформация).После первоначального переноса нормативно-справочной информации в базу УТ воспользуемся типовой обработкой ПоискИУдалениеДублей (раздел НСИ и администрирование → Обслуживание → Корректировка данных). Выполним поиск совпадений по ИНН/наименованию, назначим правильные элементы оригинальными и произведем слияние с заменой ссылок во всех перенесенных объектах.
При самостоятельной разработке правил конвертации (в «Конвертации данных 2.0» или 3.0) разработчики часто сталкиваются с двумя проблемами в УТ 11:
Контрагенты (юридические лица) архитектурно разделен со справочником Партнеры (управленческие сущности). Если в настройках системы отключена опция раздельного ведения партнеров и контрагентов, форма элемента контрагента программно перенаправляет пользователя на форму связанного партнера. Если при переносе реквизит Партнер у контрагента не был заполнен, платформа пытается открыть форму по пустой ссылке, что приводит к открытию окна создания нового партнера.Партнер и Контрагент жестко взаимосвязаны. В форме и модулях объекта срабатывает проверка соответствия: значение поля Контрагент должно принадлежать партнеру, выбранному в поле Партнер (условие Контрагент.Партнер = Партнер). Если переносится только контрагент, алгоритмы документа очищают поле. Кроме того, в справочнике Партнеры у покупателя обязательно должен быть взведен признак Клиент = Истина.Посмотрим на пример заполнения связки партнера и контрагента в обработчике «ПослеЗагрузки» правила конвертации объекта (ПКО) справочника Контрагенты:
Если Не ЗначениеЗаполнено(Объект.Партнер) Тогда
// Создаем или находим связанного управленческого партнера
НовыйПартнер = Справочники.Партнеры.СоздатьЭлемент();
НовыйПартнер.Наименование = Объект.Наименование;
НовыйПартнер.НаименованиеПолное = Объект.НаименованиеПолное;
НовыйПартнер.Клиент = Истина;
НовыйПартнер.ЮрФизЛицо = Объект.ЮрФизЛицо;
НовыйПартнер.Записать();
Объект.Партнер = НовыйПартнер.Ссылка;
КонецЕсли;
Выясним, как внести корректировки в типовой обмен, не изменяя конфигурацию поставщика:
МенеджерОбменаЧерезУниверсальныйФормат. Создадим расширение конфигурации и переопределим необходимые обработчики событий выгрузки или загрузки с помощью директив &Перед, &После или &Вместо.Рассмотрим пример в расширении для общего модуля, где мы переопределяем заполнение реквизитов объекта при выгрузке, чтобы избежать ошибок валидации схемы XDTO:
&Вместо("ПКО_Справочник_БанковскиеСчета_ПриВыгрузке")
Процедура Расш1_ПКО_Справочник_БанковскиеСчета_ПриВыгрузке(Источник, ДанныеXDTO, КомпонентыОбмена)
// Выполняем стандартное поведение
ПродолжитьВызов(Источник, ДанныеXDTO, КомпонентыОбмена);
// Защита от незаполненного наименования банковского счета для формата EnterpriseData
Если ПустаяСтрока(ДанныеXDTO.Наименование) Тогда
ДанныеXDTO.Наименование = "Основной счет (авто)";
КонецЕсли;
КонецПроцедуры
При использовании типового универсального формата разработчики регулярно сталкиваются с фатальными ошибками проверки XML по схеме XDTO. Причина заключается в том, что в схеме формата многие реквизиты имеют ограничение minOccurs="1" (обязательное наличие поля в пакете). Если в базе-источнике не заполнены наименование счета, ставка НДС или подразделение, выгрузка прерывается аварийно.
Для устранения этой проблемы применяются два подхода: