Немного бэкграунда.
Была очень сильно дописанная БП 2.0, необходимо было осуществить переход на УТ 11. В плане конвертации контактной информации было относительно просто: посмотрел, как это осуществлено в типовой конфигурации, сделал также - готово. Однако, незадача - адреса переносятся все "в свободной форме", как и остальное, а нужно, чтобы переносилось "красиво".
Задача: перенести контактную информацию из регистра сведений в табличные части объектов без потери "разбиения по заполнению", т.е. чтобы номер дома в пользовательском интерфейсе был на своем месте (в поле "Номер дома"), как и добавочный номер и т.п.
Допущение: правила конвертации для видов контактной информации уже написаны и работают как надо. Конфигурация-приемник имеет общие модули РаботаСАдресамиКлиентСервер, УправлениеКонтактнойИнформациейСлужебныйПовтИсп, УправлениеКонтактнойИнформацией (если конфигурация-приемник типовая, 99% что они есть).
Далее по тексту: КИ - контактная информация.
Поскольку в той базе, которую необходимо перенести, КИ есть лишь трех типов (адрес, email, телефон), рассматривал я только их, однако, полагаю, что и этой информации будет достаточно в 90% случаев.
Вся суть нового формата заключается в реквизите Значение, который в формате JSON хранит всю информацию. В БСП уже есть функции, которые очень сильно помогают по работе с данным полем, к тому же, по значению данного поля могут быть заполнены все остальные реквизиты табличной части, поэтому, для выполнения задачи требуется получить значение лишь этого реквизита.
В общем случае код процедуры переноса КИ будет выглядеть примерно следующим образом:
- Получаем данные в "старом" виде.
- По виду КИ получаем структуру, в которой содержатся все возможные поля для данного вида КИ.
- Заполняем структуру.
- По заполненной структуре формируем строку JSON и заполняем остальные поля табличной части КонтактнаяИнформация (этот пункт уже реализован в БСП).
Алгоритм совсем не сложный, сложно было разобраться, какие именно поля необходимо заполнять.
В начале хотел прикрепить к публикации правила конвертации для КД 2.1, однако, решил, что проще будет прикрепить обработку, на которой можно алгоритм протестировать, ведь тому, кто знаком с Конвертацией данных, будет несложно добавить алгоритм в обработчики, а тому, кто с ней не знаком - несложно переделать обработку (например, добавить COM-соединение с нужно базой, брать данные по множеству объектов и заполнять также множество объектов). Она, скорее, дополнение ко всему вышесказанному, нежели суть статьи.
Алгоритм тестировался на платформе 8.3.15.1489, конфигурация УТ 11.4.11.104 с версией БСП 3.0.3.272.