Имя: Пароль:
1C
1С v8
Конвертация данных 2.0 соответствие по регистру
,
0 Aswed
 
29.08.17
12:08
Необходимо реализовать следующий механизм.

При загрузке контрагентов в приемник необходимо производить их поиск по регистру сведений в котором будет храниться соответствие ГУИДов источника и ссылок на элементы справочника приемника.

Соответственно при загрузке нужно:
1) проверить есть ли в этом регистре соответствие загружаемому контрагенту

2) если есть то использовать это соответствие, взяв ссылку на элемент справочника

3) если такого соответствия нет, то создать новый элемент справочника и добавить соответствие на него в этот регистр и после этого его использовать


Как то не соображу как правильно реализовать такую схему.
Подскажите.
1 Ёпрст
 
29.08.17
12:22
В поляхПоиска ищешь по нужному реквизиту в рег сведений, в ПослеЗагрузки пишешь в регсведений
2 Ёпрст
 
29.08.17
12:22
усё.
3 Ёпрст
 
29.08.17
12:26
могу расписать по-шагам, если надо.
4 Aswed
 
29.08.17
12:35
(3) Был бы признателен)
5 Ёпрст
 
29.08.17
13:04
По шагам, весёлые картинки
http://pics.rsh.ru/img/01_234ga74k.jpg
6 Ёпрст
 
29.08.17
13:04
7 Ёпрст
 
29.08.17
13:04
8 Ёпрст
 
29.08.17
13:05
9 Ёпрст
 
29.08.17
13:06
10 Ёпрст
 
29.08.17
13:07
ну и сымаешь галку в настройках - искать по внутреннему идентификатору.
Усё.
Че непонятно, спрашивай.
11 Aswed
 
29.08.17
15:58
Ух ты!!!
Спасибо!!!!
12 aka AMIGO
 
12.09.17
15:30
.
13 Aswed
 
12.09.17
15:31
(0) Ёпрст вроде всё сделал как у тебя в веселых картинках. Выгружает всё нормально, но при загрузке в БП ругается


Ошибка при загрузке данных: {ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1449)}: Ошибка в обработчике события ПоследовательностьПолейПоиска
    ИмяПКО                 =  
    ТипОбъекта             =  Контрагент
    Обработчик             =  Последовательность полей поиска
    ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(9,2)}: Ожидается последовательность операторов
    ПозицияМодуля          =  ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5966)
    КодСообщения           =  73
14 Aswed
 
12.09.17
15:32
+ (13) в модуле обработки это

Выполнить(АлгоритмПоиска);
15 Ёпрст
 
12.09.17
15:34
(14) Че за модуль ?
:)
16 Ёпрст
 
12.09.17
15:34
где этот код пишешь ?
17 Aswed
 
12.09.17
15:35
(15) Модуль обработку обмена. Внешняя что идёт с конвертацией.

Этот код оттуда
"ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(5966)"
18 Ёпрст
 
12.09.17
15:35
там надо писать
выполнить(Алгоритмы.АлгоритмПоиска);
19 Ёпрст
 
12.09.17
15:37
если я тебя правильно понял, ты алгоритм поиска свой слепил и сунул его в закладку алгоритмы ?
И вызываешь его с ПоляПоиска ?
Тогда как в (18)
20 Aswed
 
12.09.17
15:38
(19) Ну да. Как у тебя в 5 картинке)
21 Aswed
 
12.09.17
15:38
(18) Щас попробую.
22 Aswed
 
12.09.17
15:42
(18) Этот код надо писать в типовой обработке обмена?
Если так то ругается что метод не обнаружен)

Я алгоритм вызываю, как у тебя на рисунке 3, в ПКО, в обработчике "ПослеЗагрузки"
23 Aswed
 
12.09.17
15:47
А что такое "ПоследовательностьПолейПоиска" где настраивается?

В модуле обработки загрузке вот что написано

    Если ПКО <> Неопределено Тогда
        
        АлгоритмПоиска = ПКО.ПоследовательностьПолейПоиска;
        
    КонецЕсли;
24 Ёпрст
 
12.09.17
15:52
(22) нет. Обработку обмена вообще править не надо.

Просто на вкладке Алгоритмы/Запросы
задаешь имя своему алгоритму и если нужно его вызвать, просто пишешь:
Выполнить(Алгоритмы.ИмяТвоегоАлгоритма);

Так, меньше кода писать и файло выгрузки меньше.
25 Aswed
 
12.09.17
15:58
(24) Так и делаю
26 Aswed
 
12.09.17
15:58
27 Aswed
 
12.09.17
16:17
Всё нашёл.
там был косяк в тексте запроса. Лишнюю кавычку поставил.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший