Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Подскажите новичку с конвертацией данных

Подскажите новичку с конвертацией данных
Я
   АлександрП
 
04.12.18 - 15:27
Делаю перенос справочников из ЗУП в УПП.
Встал на моменте сопоставления подразделений организации.
В ЗУП у подразделения создал Свойство "КодВУПП" и значением является код подразделения в УПП. И вот вопрос как мне в правиле прописать это сопоставление?
Сделал правило источник пусто, а приемник УПП поле код. И вот нужно как то получать у источника значение свойства. Ни как не могу понять ка это сделать. подскажите плиз.
 
 
   vicof
 
1 - 04.12.18 - 15:34
Покажи на скриншоте, что такое свойство "КодВУПП"
   АлександрП
 
2 - 04.12.18 - 15:38
   АлександрП
 
3 - 04.12.18 - 15:40
   vicof
 
4 - 04.12.18 - 15:45
Ну если медленно и топорно, пишешь запрос к регистру значениясвойствобъектов, получая значение своего свойства в событии "перед выгрузкой".  
Более правильно Перед выгрузкой данных в конвертации получить таблицу подразделений с их кодами, а потом в свойстве обращаться к этой таблице по подразделению, и получать код.
   АлександрП
 
5 - 04.12.18 - 15:48
на счет первого варианта про запрос понял. Сам запрос могу же писать в правиле или нужно писать в алгоритмы/запросы?

А вот про второй более правильный вариант не совсем понял. Можно чуть подробнее.
   vicof
 
6 - 04.12.18 - 15:53
Можешь в правиле.
У конвертации тоже есть обработчик ПередКонвертацией.
Создаешь параметр конвертации "подразделения".
В этом обработчике в параметр пишешь таблицу вида подразделение/код, полученную запросом.

Перед конвертации свойства обращаешься к этой таблице по подразделению, получаешь код.
   АлександрП
 
7 - 04.12.18 - 15:57
Хорошо, спасибо. Буду пробовать
   АлександрП
 
8 - 05.12.18 - 07:59
На начале пути в конвертацию, еще не изучил как правильно писать код.

что я тут делаю не так?
Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Объект,
        |    ЗначенияСвойствОбъектов.Свойство,
        |    ЗначенияСвойствОбъектов.Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &Объект";
    
    Запрос.УстановитьПараметр("Объект", Источник);
    Результат =  Запрос.Выполнить().Выбрать();
    Результат.Следующий();
Значение = Результат.Значение;
   azt-yur
 
9 - 05.12.18 - 08:07
(8) В условиях запроса не указал отбор на свойство которое ищешь.
И если у тебя в подразделение не указано это свойство то будет ошибка.
Правильнее было бы:
Пока Результат.Следующий() Цикл
 Значение = Результат.Значение;
КонецЦикла

В так вроде должно работать, какая ошибка выдается?
   АлександрП
 
10 - 05.12.18 - 08:24
https://cdn1.savepice.ru/uploads/2018/12/5/58f955e9d5d37c8da3a38138f9133b7f-full.png

Свойство есть, ошибка при выгрузки не возникает, только вот значения поля получается кодом самого подразделения а не код свойства которое достаю. Попробую еще тогда добавить отбор по свойству.
 
 Рекламное место пустует
   АлександрП
 
11 - 05.12.18 - 08:30
<Свойство Имя="Наименование" Тип="Строка">
        <Значение>Административно-хозяйственная служба</Значение>
    </Свойство>
</Ссылка>
    <Свойство Имя="ПометкаУдаления" Тип="Булево">
        <Значение>false</Значение>
    </Свойство><Свойство Имя="Код" Тип="Строка">
    <Значение>100000005</Значение>
</Свойство>


только почему то все равно получаю код из справочника а не из свойства.. где то что то нет так(((
   АлександрП
 
12 - 05.12.18 - 09:05
Кажись вся проблема тут:

Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Объект,
        |    ЗначенияСвойствОбъектов.Свойство,
        |    ЗначенияСвойствОбъектов.Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &Объект
        |    И ЗначенияСвойствОбъектов.Свойство = &Свойство";
    
    Запрос.УстановитьПараметр("Объект", Источник.Наименование);
    Запрос.УстановитьПараметр("Свойство", "КодВУПП");
    Результат =  Запрос.Выполнить().Выбрать();



Наверное не правильно параметр "Объект" задаю... запрос пустой
   azt-yur
 
13 - 05.12.18 - 09:09
(12)
Запрос.УстановитьПараметр("Объект", Источник.Ссылка);
Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("КодВУПП");
   АлександрП
 
14 - 05.12.18 - 09:16
Спасибо, получилось... Чет затупил про свойство что аж передавал просто строку))
   АлександрП
 
15 - 07.12.18 - 09:09
Нарисовался такой момент.
Выгружается справочник ФизЛиц все норм, но вот такой момент, на форме справочника есть поля Фамилия, Имя, Отчество и они не заполняются так как эти данные не передаются. В общем эти данные заполняются с помощью функции из общего модуля. Вот тут и вопрос возможно ли сделать что после загрузки объекта выполнялась функция из общего модуля? и если можно то пример чтоб понять как это делать.
Вот нужный модуль кстати - ФизическиеЛицаКлиент.ФормаЭлементаНаименованиеПриИзменении(Элемент, ЭтаФорма);
   azt-yur
 
16 - 07.12.18 - 09:16
(15) Надо сделать запись в регистр сведений ФИОФизЛиц.
Посмотри как в общем модуле разбивается наименование на ФИО и сделай запись в регистр программно.
   АлександрП
 
17 - 07.12.18 - 09:18
ФИО = ЭтаФорма.Наименование;
    
    Если ПустаяСтрока(ЭтаФорма.Фамилия) Или ЭтаФорма.ЭтоНовый() Тогда
        МассивФИО = ОбщегоНазначенияЗК.ПолучитьМассивФИО(ФИО);
        ЭтаФорма.Фамилия  = МассивФИО[0];
        ЭтаФорма.Имя      = МассивФИО[1];
        ЭтаФорма.Отчество = МассивФИО[2];
        
        Если ЗначениеЗаполнено(ЭтаФорма.Отчество) И Не ЗначениеЗаполнено(ЭтаФорма.Пол) Тогда
            ЭтаФорма.Пол = ПроцедурыУправленияПерсоналом.ПолучитьПол(ЭтаФорма.Отчество);
        КонецЕсли;
        
    КонецЕсли;

вот так разбивается ФИО
   azt-yur
 
18 - 07.12.18 - 09:22
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
    Объект.Записать();
КонецЕсли;
Запись = РегистрыСведений.ФИОФизЛиц.СоздатьМенеджерЗаписи();
Запись.ФизЛицо = Объект.Ссылка;
МассивФИО = ОбщегоНазначенияЗК.ПолучитьМассивФИО(Объект.Наименование);
Запись.Фамилия  = МассивФИО[0];
Запись.Имя      = МассивФИО[1];
Запись.Отчество = МассивФИО[2];
Запись.Записать();
   АлександрП
 
19 - 07.12.18 - 09:26
Раз мне нужно это делать для определенного Объекта то вот так будет правильно?
Если ТипЗнч(Объект) = ТИП("Справочники.ФизическиеЛица") Тогда 
    
    Запись = РегистрыСведений.ФИОФизЛиц.СоздатьМенеджерЗаписи();
    Запись.ФизЛицо = Объект.Ссылка;
    МассивФИО = ОбщегоНазначенияЗК.ПолучитьМассивФИО(Объект.Наименование);
    Запись.Фамилия  = МассивФИО[0];
    Запись.Имя      = МассивФИО[1];
    Запись.Отчество = МассивФИО[2];
    Запись.Записать();
    
КонецЕсли;
   azt-yur
 
20 - 07.12.18 - 09:30
(19) Пиши код в ПослеЗагрузки для ПКО физ.лиц, тогда и тип не надо проверять, у тебя там только физ.лица
   azt-yur
 
21 - 07.12.18 - 09:31
(19) и вот так ТИП("Справочники.ФизическиеЛица") не работает, надо ТИП("СправочникОбъект.ФизическиеЛица")
   АлександрП
 
22 - 07.12.18 - 09:33
Выгружаю ФизЛица и Сотрудники.
Точно напишу в ПКО ФизЛиц. Спасибо за помощь


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует