![]() |
![]() |
|
Конвертация данных - поиск в регистре сведений при загрузке справочника | ☑ | ||
---|---|---|---|---|
0
sereban
28.06.11
✎
16:27
|
Нужна помощь в реализации на компоновке данных следующего механизма: при загрузке данных из одной базы в другую, нужно искать контрагентов не по полям поиска, а по предварительно настроенному регистру сведений, в котором в качестве измерений указаны поля поиска и есть ресурс Ссылка(ссылка на контрагента в приемнике). Регистр сведений находится в приемнике. Новые объекты создавать не нужно, а только смотреть в регистр и если есть ссылка, то подставлять объект по этой ссылке, а если нет то записывать в регистр измерения без ссылки, чтобы потом вручную заполнить регистр.
|
|||
1
sereban
28.06.11
✎
16:31
|
В обработчике "При загрузке" справочника не доступны свойства, по которым нужно искать в регистре.
|
|||
2
Andy13
28.06.11
✎
16:35
|
"При загрузке", "После загрузки".
|
|||
3
Defender aka LINN
28.06.11
✎
16:36
|
(1) Почему?
|
|||
4
Синий зуб
28.06.11
✎
16:36
|
Может, и не совсем то, но я переносил ссылки на справочники ОС из одной базы в другую по записи в регистре сведений во второй базе. В ПКО ОС в обработчик событий Поля поиска вставил следующий код:
Если СвойстваПоиска.Получить("ЭтоГруппа") Тогда //группу ищем по наименованию СтрокаИменСвойствПоиска = "Наименование"; Иначе //простой элемент, ищем по свойству Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗначенияСвойствОбъектов.Объект КАК СсылкаНаОС |ИЗ | РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов |ГДЕ | ЗначенияСвойствОбъектов.Свойство = &Код_8_1 | И ЗначенияСвойствОбъектов.Значение = &КодОС"; Запрос.УстановитьПараметр("Код_8_1", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоКоду("00000000002")); Запрос.УстановитьПараметр("КодОС", ПараметрыОбъекта.Получить("МойКод")); РезЗапроса = Запрос.Выполнить(); Если РезЗапроса.Пустой() Тогда //не нашли, по наименованию СтрокаИменСвойствПоиска = "Наименование"; Сообщить("ОС ищем по наименованию для кода: " + ПараметрыОбъекта.Получить("МойКод")); Иначе СсылкаНаОбъект = РезЗапроса.Выгрузить()[0].СсылкаНаОС; ПрекратитьПоиск = Истина; КонецЕсли КонецЕсли; |
|||
5
Defender aka LINN
28.06.11
✎
16:37
|
+(3) А, ПриЗагрузке... ПриЗагрузке объект уже найден (или нет). Нужно несколько более иначе другое событие.
|
|||
6
Andy13
28.06.11
✎
16:37
|
Переписываешь типовой механизм сопоставления по UID? Чем он не угодил?
|
|||
7
sereban
28.06.11
✎
16:49
|
(5) ПриЗагрузке доступен найденный объект, если указать поля поиска. Но мне не нужно искать по ним.
(4) ПараметрыОбъекта откуда берутся, я в описании обработчика "поля поиска" не нашел такого параметра |
|||
8
sereban
28.06.11
✎
16:51
|
(6) При загрузке у меня uid приемника
|
|||
9
sereban
28.06.11
✎
16:53
|
(6) При загрузке у меня нет uid приемника
|
|||
10
Andy13
28.06.11
✎
16:54
|
(7) "После загрузки" - Объект создан, но ещё не записан. Или доступен найденный объект.
Проверяешь, если Ссылка = Объект.Ссылка, или ОбъектНайден = Истина, то всё ОК. Ежели новый хочет создаться, пишешь Отказ = Истина. И юзаешь свой модуль с РС. |
|||
11
Синий зуб
28.06.11
✎
16:55
|
(8) Ты эти 2 строчки увидел?
СсылкаНаОбъект = РезЗапроса.Выгрузить()[0].СсылкаНаОС; ПрекратитьПоиск = Истина; |
|||
12
Синий зуб
28.06.11
✎
16:56
|
СсылкаНаОбъект - находишь свой объект и усе, поиск прекращается, а где ты его будешь искать - твое личное дело.
|
|||
13
sereban
28.06.11
✎
16:56
|
(11) Да. С этим понятно.
|
|||
14
Andy13
28.06.11
✎
16:57
|
Как то всё замудрено получается. Изложи суть, может всё вообще иначе делать надо? Подменять контрагентов?
|
|||
15
sereban
28.06.11
✎
16:57
|
Вопрос в другом, как получить свойства по которым я буду искать в регистре?
Запрос.УстановитьПараметр("КодОС", ПараметрыОбъекта.Получить("МойКод")); Что такое параметрыОбъекта? Откуда они берутся? |
|||
16
Defender aka LINN
28.06.11
✎
16:58
|
(15) Поставить для них флаг поиска в правилах
|
|||
17
Синий зуб
28.06.11
✎
17:05
|
(15) В данном случае в ПКС Код ПКО ОсновныеСредства я передавал Код ОС в Параметр МойКод.
|
|||
18
sereban
28.06.11
✎
17:16
|
Всем БОЛЬШОЕ спасибо!!! Поставил галочки поиска на свойствах по которым буду искать. И теперь могу получить из соответствия СвойстваПоиска. Дальше уже мелочи ))
|
|||
19
sereban
28.06.11
✎
17:18
|
(17) Синий зуб, я так и не понял насчет ПараметрыОбъекта. В процедуре Поля поиска переменная не определена.
|
|||
20
Синий зуб
28.06.11
✎
17:30
|
В ПКС ставишь галку Передавать данные в параметр, штатно стоит Передавать данные в приемник. Просто у меня код в источнике был длиннее и обрезался, я передал в параметр.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |