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

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

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

что я тут делаю не так?

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ЗначенияСвойствОбъектов.Объект,
        |    ЗначенияСвойствОбъектов.Свойство,
        |    ЗначенияСвойствОбъектов.Значение
        |ИЗ
        |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        |ГДЕ
        |    ЗначенияСвойствОбъектов.Объект = &Объект";
    
    Запрос.УстановитьПараметр("Объект", Источник);
    Результат =  Запрос.Выполнить().Выбрать();
    Результат.Следующий();
Значение = Результат.Значение;
9 azt-yur
 
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
Кажись вся проблема тут:

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



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

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

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

Возник вот такой вопросик.
Хочу перенести информацию точнее данные регистра "Кадровое перемещение". Но увы не получается. Создал ПКО Регистра, и использовал "ВыгрузитьПоПравилу". Но при выгрузке дает ошибку что не установлен отбор по регистратору. Я так полагаю что проблема в ПКО так как в ПКС у поля регистратор несколько документов а мне выгружить документы нет необходимости. Подскажите есть ли еще варианты по переносу этого регистра?
24 tesseract
 
17.12.18
12:57
(23) Нужен хоть какой-нибудь регистратор. Или вводостатков или ОперацияБух/КорректировкаРегистра.
25 АлександрП
 
17.12.18
13:09
Я тут думаю про Документ Перенос данных.
26 АлександрП
 
24.12.18
08:19
Народ подскажите как быть в данной ситуации.

У меня есть ПКО документа "ПереносДанных" в него в ТЧ я записываю движения из регистра РаботникиОрганизации по сотрудником которые выгружаются, но тут загвоздка.

Документ "Переноса данных" в приемнике всегда один и тут я подумал о том что если сделать выгрузку из одного подразделения то будет меньше количество сотрудников и документ "ПереносДанных" перезапишется и тогда пропадут другие записи из Регистра "РаботникиОрганизации".

Дайте совет как лучше быть. Думал просто перед загрузкой проверять ТЧ и Данные из запроса на совпадения и просто плюсом добавлять их ко всем... но не пойму как это сделать.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший