|
Конфигурация «Конвертация данных 2.0» (или более поздние версии) позволяет создавать правила обмена между базами данных для универсального обмена данными в формате xml. |
|
Для конвертации объектов источника в объекты приемника используются: | ||
|
||
В случаях, когда правила конвертации достаточно очевидны, ПКО и ПКС позволяют вполне естественным образом описывать механизм преобразования данных. Однако встречаются случаи, когда механизм преобразования гораздо сложнее, чем простое преобразование объектов. В этих случаях более естественным является алгоритмическое программирование на встроенном языке 1С. То есть, если есть алгоритм преобразования, то он реализуется с помощью соответствующей программы без использования ПКО и ПКС. Естественным способом представления информации для обмена между базами данных в этом случае является таблица значений. В Интернете многократно обсуждали вопрос, каким образом можно передавать таблицу значений между источником и приемником. В ответах предлагается использовать ПКО и ПКС. | ||
Возникает вопрос: а зачем для передачи таблицы значений использовать конвертацию данных. Сами же пользователи дают ответ, что конвертация данных позволяет использовать стандартные обработки для обмена данными, то есть не нужно думать о собственном формате передачи данных. И это не единственное достоинство конвертации данных. Но как же передать таблицу значений из источника в приемник? Предлагается следующий способ: |
Вот и всё, задача решена! |
||
Отметим, что в таблицу ТЗ не имеет смысла включать ссылочные объекты. А вот уникальные идентификаторы (УИД) объектов можно использовать для установления соответствия между объектами источника и приемника. Хранить соответствие можно в регистре сведений (например, «соответствие объектов для обмена»), в который записывать УИД источника и ссылку на объект приемника. |
||
Отметим также удобство отладки модулей событий: каждый из модулей можно отлаживать в соответствующей конфигурации вне использования обработок для универсального обмена данными в формате xml. В конфигурации приемника нужно в этом случае после проведения обмена получить таблицу значений следующим образом: | ||
Спр = Справочники.КД.ДляОбмена.ПолучитьОбъект();
ТЗ = Спр.ТЗ.Получить(); |
||
После проведения отладки текст модулей включается в правила обмена. | ||
Если конвертация данных используется совместно с планами обмена, то справочник КД нужно включить в план обмена, авторегистрацию запретить. | ||
С помощью описанного способа удалось решить задачу обмена данными для очень сложного механизма преобразования данных. | ||
В заключение выделим важную мысль. Встроенный язык 1С является языком предметно-ориентированного типа, и это позволяет ускорять разработку приложений и повышать надежность разработанных приложений. Однако никто не отменял применение языка 1С в качестве алгоритмического языка там, где это улучшает характеристики программы. То есть вместо применения методов языка и методов объектов гораздо эффективнее написать обычный цикл. | ||
Аналогично можно утверждать, что вместо применения ПКО и ПКС конвертации данных в определенных случаях лучше использовать обычное алгоритмическое программирование, применяя описанный выше способ. | ||
Ps: | ||
Со статьей "Односторонний обмен данными с использованием планов обмена" можно ознакомиться здесь. Если возникли вопросы по способам конвертации данных - обращайтесь! |
||
Семенов Сергей, разработчик 1С ООО “Кодерлайн” |