В начало

Конвертация двух свойств в одно

 

            Нужно сконвертировать два свойства в одно при конвертации/переносе периодического регистра сведений «Продажа акций». В базе-источнике есть реквизит «ТипАкции! (с типом перечисление) и ресурс Количество (числовой тип), которые надо преобразовать в свойство УровеньПродаж по определённому правилу. Если акция имеет тип «Обычная», то уровень продаж считается высоким при продаже более 1000 акций, в противном случае УровеньПродаж - низкий. Для привелегированных акций уровень продаж считается высоким при продаже более 100 акций, иначе УровеньПродаж – низкий.

 

Тип акции

(Перечисление)

Уровень продаж

(Перечисление)

Количество

(Число)

 

            Регистр сведений из БАЗЫ-ПРИЕМНИКА показан далее.

Рис. Форма списка периодического регистра сведений «Продажа акций»

в БАЗЕ-ПРИЕМНИКЕ

 

            Выгружаем структуры метаданных в БАЗЕ-ИСТОЧНИКЕ и БАЗЕ-ПРИЕМНИЕ при помощи стандартной обработки «Выгрузка структуры метаданных».

 

Рис. Выгрузка структуры метаданных обработками «MD82Exp.epf» и «MD83Exp.epf»

 

            Переходим в конфигурацию «Конвертация данных» и обновляем данные в конвертации «БАЗА-ИСТОЧНИК  ­ --> БАЗА-ПРИЕМНИК».

            Далее устанавливаем соответствие и создаем новое ПКО «Продажа акций» для регистра сведений.

Рис. Соответствие между объектами Источника и Приемника

 

            Затем создаем ПКС «УровеньПродаж», в котором в качестве источника ничего не указываем. Открываем его и переходим в обработчик событий «Перед выгрузкой», в котором прописываем код, который будет присваивать значения для свойства «УровеньПродаж» в БАЗЕ-ПРИЕМНИКЕ.

 

Листинг. Код обработчика «Перед выгрузкой»

для ПКС «Уровень продаж»

Если Источник.ТипАкции = Перечисления.ТипыАкций.Обычная Тогда

            Если Источник.Количество >= 1000 Тогда

              Значение = "Высокий";

            Иначе

              Значение = "Низкий";

  КонецЕсли;

КонецЕсли; 

 

Если Источник.ТипАкции = Перечисления.ТипыАкций.Привелегированная Тогда

            Если Источник.Количество >= 100 Тогда

              Значение = "Высокий";

            Иначе

              Значение = "Низкий";

  КонецЕсли;

КонецЕсли;   

 

            Далее приведен обработчик «Перед выгрузкой» для ПКС «Уровень продаж».

 

Рис. Обработчик «Перед выгрузкой», ПКС «Уровень продаж»

 

            На закладке «Правила выгрузки данных» создаем ПВД «Продажа акций».

Рис. Создание ПВД «Продажа акций»

 

            Далее сохраняем правила выгрузки в файл, например, «ПРАВИЛА.xml».

Рис. Сохранение правил выгрузки данных в xml-файл

 

            Переходим в БАЗУ-ИСТОЧНИК и выгружаем данные в файл «ДАННЫЕ.xml».

Рис. Выгрузка данных из БАЗЫ-ИСТОЧНИКА

 

            Затем идём в БАЗУ-ПРИЕМНИК и загружаем данные.

Рис. Загрузка данных в БАЗУ-ПРИЕМНИК

 

            После этого проверяем, что у нас загрузилось, идём в регистр сведений «Продажа акций» и смотрим. Лучше еще заглянуть в БАЗУ-ИСТОЧНИК и сравнить оба регистра.

 

Рис. Сравнение регистра «Продажа акций» в двух базах

(в БАЗЕ-ИСТОЧНИКЕ – слева, в БАЗЕ-ПРИЕМНИКЕ – справа)

 

            Например, акции «Лукойл» - обычные, продано 1000, значит «УровеньПродаж» - Высокий, всё правильно.

            Далее акция «Татнефть» - обычные, продано 10, «УровеньПродаж» - Низкий, всё верно, так и есть.

            Из серединки возьмем акции Ростелеком (обычные), продано 600 акций, следовательно «УровеньПродаж» должен быть «Низкий», так и есть.

            Таким образом задание по переносу двух свойств (ТипАкции и Количество) в одно свойство (УровеньПродаж) выполнено.

Всем спасибо за внимание!