|
Обмен. Конвертация данных. Узел "Ссылка". Атрибут "ПродолжитьПоиск". | ☑ | ||
---|---|---|---|---|
0
PiotrLoginov
22.09.13
✎
12:18
|
Здрасте всем. Строю произвольный обмен. При приеме данных в Конфигурации-приемнике не хочет выполняться поиск объекта по полю поиска, если поиск по ID не увенчался успехом, хотя в КД соответствующее ПКО имеет галку "Продолжить поиск по полям поиска, если по идентификатору объект не найден". Нашел отладчиком место в обработке конфигурации, где идет проверка на необходимость дальнейшего поиска:
ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли = ?(РежимЗагрузкиДанныхВТаблицуЗначений(), Ложь, одАтрибут(ФайлОбмена, ТипБулево, "ПродолжитьПоиск")); Соответственно если вручную в файле обмена дописываю узлу Ссылка атрибут ПродолжитьПоиск со значением "true", то все ищется "за милую душу". Вопрос: может как-то можно что-то сделать при настройке правил в КД чтобы атрибут проставлялся автоматически и не приходилось дописывать его вручную всем ссылкам? Если кто знает, заранее спасибо за подсказку. |
|||
1
Serg_1960
22.09.13
✎
14:48
|
ПКО - Обработчики событий - Поля поиска
v8: Последовательность поиска полей в "Конвертации данных" 2 |
|||
2
PiotrLoginov
22.09.13
✎
16:52
|
(1) код для полей поиска (написанный в соответствующей вкладке ПКО) используется. Это само собой. И прекрасно ищется объект по указанным мною (в этом коде) полям на пятом этапе нехитрого алгоритма:
// Этапы идентификации (поиска) объекта: // 1. Поиск объекта по регистру сопоставления объектов ИБ // 2. Поиск объекта по имени предопределенного элемента // 3. Поиск объекта по уникальному идентификатору ссылки // 4. Поиск объекта по произвольному алгоритму поиска // 5. Поиск объекта по полям поиска Но чтобы после неуспешного поиска на третьем этапе код дошел до пятого этапа, необходимо, чтобы значение переменной ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли было равно Истина. А для этого должен быть атрибут ПродолжитьПоиск (см (0) ) |
|||
3
Ageres
23.09.13
✎
03:52
|
Ну так сразу нужно говорить, что используешь подсистему обмена из БСП. В одной из старых версий была ошибка, где данный атрибут не проставлялся.
|
|||
4
PiotrLoginov
23.09.13
✎
15:05
|
(3) Выгружается из БП 2.0.45.6 . Произвольный обмен использует План обмена ОбменУправлениеТорговлейБухгалтерияКОРП (который обычно используется в БП для связи с УТ 10.3). Так Вы думаете, в обработках БСП, используемых для этого плана обмена, некорректный код? А правилами обмена я эту проблему не нивелирую никак?
|
|||
5
PiotrLoginov
23.09.13
✎
18:31
|
Какой-то ужас. Новая беда: если в запросе к регистру с соответствиями объектов источника объектам приемника, который выполняется механизмом обмена при поиске очередного объекта:
ВЫБРАТЬ ПЕРВЫЕ 1 СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточникаСтрокой КАК УникальныйИдентификаторИсточникаСтрокой ИЗ РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз ГДЕ СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы = &УзелИнформационнойБазы И СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника = &УникальныйИдентификаторПриемника И СоответствияОбъектовИнформационныхБаз.ТипПриемника = &ТипПриемника И СоответствияОбъектовИнформационныхБаз.ТипИсточника = &ТипИсточника , указать в качестве параметра ТипПриемника или ТипИсточника пустую строку (т.е. ""), то запрос тогда найдет первую попавшуюся запись из регистра с ID, указанным в качестве УникальныйИдентификаторПриемника, даже если это строка, сформированная совсем другим обменом (заданный параметр УзелИнформационнойБазы игнорируется?); так что обязательно надо корректно указывать перед поиском параметры ТипПриемника и ТипИсточника, а они, блин, тоже берутся из соответствующих атрибутов узла, в моем случае тупо отсутствующих. Господа, зверски нужен механизм формирования произвольных атрибутов тем или иным узлам. Неужели если код в БСП не хочет формировать все необходимые мне атрибуты, я ничего не могу с этим поделать? |
|||
6
Ageres
24.09.13
✎
04:55
|
В обработке КонвертацияОбъектовИнформационныхБаз в месте, где формируется ссылка (УзелСсылки = СоздатьУзел("Ссылка")), дописать атрибут:
Если ПКО.ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли Тогда УстановитьАтрибут(УзелСсылки, "ПродолжитьПоиск", Истина); КонецЕсли; |
|||
7
PiotrLoginov
24.09.13
✎
16:32
|
Спасибо. Думаю, это то, что мне надо. Модифицировать конфу я не могу, но попытаюсь организовать создание необходимых атрибутов во время событий ПередВыгрузкой, ПриВыгрузке, ПослеВыгрузки.
|
|||
8
PiotrLoginov
26.09.13
✎
03:04
|
Ну что ж, на момент наступления события ПриВыгрузке В узле, содержащем какой-либо выгружаемый объект ссылочного типа, полностью сформирован узел Ссылка со свойством УникальныйИдентификатор. Тут-то бы его отредактировать во время ПриВыгрузке, добавив необходимые атрибуты, да вот беда, не знаю я, как залезть внутрь ЗаписьXML , дабы изменить одно из свойств находящегося внутри узла. Создам, наверное, отдельную темку с этим вопросом. А здесь еще раз благодарю Ageres, отозвавшегося на мою просьбу о помощи.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |