|
Подскажите новичку с конвертацией данных | ☑ | ||
---|---|---|---|---|
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
|
Вот правило которое делаю
https://cdn1.savepice.ru/uploads/2018/12/4/5d87d2cb7b43b3da7a2de28eb34e228a-full.png |
|||
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
|
Народ подскажите как быть в данной ситуации.
У меня есть ПКО документа "ПереносДанных" в него в ТЧ я записываю движения из регистра РаботникиОрганизации по сотрудником которые выгружаются, но тут загвоздка. Документ "Переноса данных" в приемнике всегда один и тут я подумал о том что если сделать выгрузку из одного подразделения то будет меньше количество сотрудников и документ "ПереносДанных" перезапишется и тогда пропадут другие записи из Регистра "РаботникиОрганизации". Дайте совет как лучше быть. Думал просто перед загрузкой проверять ТЧ и Данные из запроса на совпадения и просто плюсом добавлять их ко всем... но не пойму как это сделать. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |