При переходе с конфигурации 1С:Бухгалтерия предприятия 3.0 на 1С:Комплексная автоматизация 2 (или ERP 2) пользователи часто сталкиваются с критической ошибкой на этапе выгрузки данных. Текст ошибки: «Не найдено ПКО с именем Справочник_Валюты». Эта проблема возникает даже при использовании типовых обработок перехода, идущих в составе свежих релизов программ.
В данной статье мы подробно разберем причины возникновения этой ситуации и рассмотрим несколько методов ее решения: от манипуляций с объектами конфигурации до внесения правок непосредственно в программный код обработки выгрузки.
Разберем ситуацию глубже. Основная причина кроется в эволюции формата обмена EnterpriseData (ED). Фирма «1С» в последних релизах БП 3.0 планомерно удаляет поддержку устаревших версий формата (1.0, 1.1, 1.2, 1.4) для оптимизации конфигурации. В то же время внешние обработки «Выгрузка данных из БП 3.0.epf», которые входят в состав дистрибутивов КА 2 или ERP, зачастую продолжают обращаться к старым версиям формата, в частности к версии 1.3.
Когда обработка пытается инициализировать правила конвертации объектов (ПКО), она ищет их в менеджере обмена, соответствующем версии 1.3. Поскольку в новых релизах БП 3.0 метаданные этих форматов (XDTO-пакеты) отсутствуют, система не может сопоставить объекты, и первым же «камнем преткновения» становится справочник валют.
Проанализируем самый эффективный, хотя и требующий изменения конфигурации метод. Нам необходимо вернуть в базу те элементы, которые были удалены разработчиками «1С». Это позволит обработке выгрузки увидеть привычную ей структуру данных.
Рассмотрим пошагово, как это сделать:
EnterpriseData_1_0_4EnterpriseData_1_0_betaEnterpriseData_1_1_4Важный момент: после добавления пакетов обработка начнет «видеть» правила обмена, и ошибка со справочником валют исчезнет. Однако помните, что внесение изменений в типовую конфигурацию может усложнить дальнейшие обновления.
Если вы не хотите менять конфигурацию БП 3.0, можно пойти путем исправления самой обработки Выгрузка данных из БП 3.0.epf. Проблема заключается в том, что по умолчанию она пытается использовать старый менеджер обмена. Выясним, как перенаправить ее на актуальные механизмы.
Откроем обработку в конфигураторе и перейдем в модуль формы. Найдем процедуру ПриСозданииНаСервере. Нам необходимо изменить логику выбора версии формата и схемы. Рассмотрим пример кода, который нужно внедрить:
Если ДоступныеВерсииФормата.Получить("1.3") <> Неопределено Тогда
Объект.XMLСхема = "http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.3";
Объект.ВерсияФормата = "1.3";
КонецЕсли;
Если ДоступныеВерсииФормата.Получить("1.4") <> Неопределено Тогда
Объект.XMLСхема = "http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.4";
Объект.ВерсияФормата = "1.4";
КонецЕсли;
Далее перейдем в модуль самой обработки. Там необходимо найти строку инициализации менеджера обмена. По умолчанию она выглядит так:
КомпонентыОбмена.МенеджерОбмена = МенеджерОбменаЧерезУниверсальныйФормат;
Нам необходимо принудительно указать использование менеджера версии 1.3 (или выше, в зависимости от доступных модулей в вашей БП):
КомпонентыОбмена.МенеджерОбмена = МенеджерОбменаЧерезУниверсальныйФормат13;
После этих правок обработка станет использовать правильный программный интерфейс, существующий в текущем релизе БП 3.0.
Даже если вы запустите выгрузку, вы можете столкнуться с тем, что некоторые данные переносятся некорректно. Например, часто возникают проблемы со справочником Статьи движения денежных средств, если в нем используются группы. Выясним, как это исправить в модуле МенеджерОбменаЧерезУниверсальныйФормат (внутри обработки или конфигурации).
Найдем процедуру ДобавитьПКО_Справочник_СтатьиДДС и добавим в нее правила для обработки иерархии:
Процедура ДобавитьПКО_Справочник_СтатьиДДС(ПравилаКонвертации)
ПравилоКонвертации = ОбменДаннымиXDTOСервер.ИнициализироватьПравилоКонвертацииОбъекта(ПравилаКонвертации);
ПравилоКонвертации.ИмяПКО = "Справочник_СтатьиДДС";
ПравилоКонвертации.ОбъектДанных = Метаданные.Справочники.СтатьиДвиженияДенежныхСредств;
ПравилоКонвертации.ОбъектФормата = "Справочник.СтатьиДДС";
// Добавляем обработку родителя (группы)
НоваяСтрока = ПравилоКонвертации.Свойства.Добавить();
НоваяСтрока.СвойствоКонфигурации = "Родитель";
НоваяСтрока.СвойствоФормата = "Группа";
НоваяСтрока.ИспользуетсяАлгоритмКонвертации = Истина;
НоваяСтрока.ПравилоКонвертацииСвойства = "Справочник_СтатьиДДС_Группа";
ПравилоКонвертации.ПоляПоиска.Добавить("Код,Наименование,ЭтоГруппа");
КонецПроцедуры
Проанализировав опыт специалистов, можно выделить еще несколько важных моментов при таком переходе:
EnterpriseData могут инициализироваться не полностью, что приведет к ошибкам ПКО.СтатьяДвиженияДенежныхСредств). Если выгрузка прерывается на этом документе, придется отлаживать текст запроса в ПКО документа.Подводя итог, можно сказать, что переход с БП 3.0 на КА 2.4/2.5 — задача нетривиальная. Если стандартный помощник выдает ошибку ПКО, самым быстрым решением является временное добавление старых XDTO-пакетов в конфигурацию БП для выполнения разовой выгрузки. Если же перенос данных планируется выполнять регулярно, необходимо адаптировать внешнюю обработку выгрузки под формат EnterpriseData версии 1.5 или 1.6, которые являются актуальными для современных релизов 1С.