При переносе данных и бухгалтерских операций из конфигурации 1С:ERP Управление предприятием 2 в 1С:Бухгалтерия предприятия 3.0 разработчики часто сталкиваются с несовпадением архитектуры аналитических разрезов. В ERP аналитика проводок по подразделениям представлена справочником СтруктураПредприятия, который не имеет подчинения и задает общую управленческую иерархию компании. В БП 3.0 справочник ПодразделенияОрганизаций жестко подчинен справочнику Организации.
Проанализируем специфику этой проблемы и разберем по шагам, как настроить правила конвертации данных (КД 2.1), чтобы корректно заполнять владельца подразделения при переносе проводок и документов.
Рассмотрим ключевые особенности структуры данных в обеих конфигурациях:
GUID), при выгрузке операций по второй и последующим организациям элемент приемника будет перезаписывать своего владельца. Это приведет к нарушению целостности ранее перенесенных данных.Рассмотрим классический механизм «Конвертации данных 2.1», при котором контекст документа или проводки передается в подчиненное правило конвертации свойств (ПКС).
Разберем реализацию по шагам:
ПодразделениеДт или ПодразделениеКт).ИсходящиеДанные и помещаем в нее ссылку на организацию:
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Организация", Источник.Организация);
Перейдем в ПКО справочника ПодразделенияОрганизаций и настроим обработку владельца:
Владелец укажем источник данных программно.Владелец извлекаем организацию из переданного контекста:
Если ВходящиеДанные <> Неопределено И ВходящиеДанные.Свойство("Организация") Тогда
Значение = ВходящиеДанные.Организация;
Иначе
// Если операция не содержит организации, можно назначить организацию по умолчанию
Значение = Неопределено;
КонецЕсли;
Посмотрим на более гибкий вариант, который часто применяется при конвертации проводок регистра бухгалтерии в обработчиках ПриВыгрузке или ПередВыгрузкой строки движений.
В этом случае мы собираем структуру полей для поиска и заполнения объекта приемника и вызываем правило конвертации явно:
ИсходящиеДанные = Новый Структура("Наименование, Владелец");
ИсходящиеДанные.Наименование = СтрокаПроводки.Подразделение.Наименование;
ИсходящиеДанные.Владелец = СтрокаПроводки.Организация;
ВыгрузитьПоПравилу( , , ИсходящиеДанные, , "СтруктураВПодразделенияОрганизаций");
Выясним причину возможных дублей и затирания данных при загрузке. Чтобы правило конвертации корректно создавало и находило элементы в подчиненном справочнике приемника, выполним обязательные настройки в ПКО ПодразделенияОрганизаций:
Наименование и Владелец установим флаги Поля поиска.Родитель также в качестве поля поиска.Если структура предприятия жестко закреплена за юридическими лицами уже на этапе управленческого контура, проанализируем вариант с привязкой в источнике:
СтруктураПредприятия дополнительный реквизит (через механизм Свойства и категории) с типом СправочникСсылка.Организации.Владелец обратимся к данному дополнительному реквизиту напрямую через свойства объекта-источника.Этот вариант удобен тем, что избавляет от необходимости передавать контекст организации через все документы и проводки, однако требует предварительной ручной классификации структуры в базе-источнике.
Если в выгружаемых движениях подразделение или организация не заполнены (например, по счетам, где подразделение не является обязательным субконто), настроим безопасное поведение в обработчике ПередЗаписью или ПриЗагрузке в ПКО приемника:
Если Не ЗначениеЗаполнено(Объект.Владелец) Тогда
// Подставляем основную организацию базы или отменяем запись объекта
Отказ = Истина;
КонецЕсли;
При отсутствии строгих требований к аналитике подразделений в регламентированном учете можно перенаправлять все проводки на реквизит ОсновноеПодразделение, указанный в карточке соответствующей организации.