Имя: Пароль:
1C
1С v8
КД2, выгрузка элементов зарегистрированых "по ссылке"
, ,
0 vde69
 
12.03.18
10:15
КД2,

пишу правила, есть документ, в котором реквизиты выгружаются "по ссылке" (то есть в файле только поля поиска), но при этом в приемнике при этом возникают "объект не найден". Конечно можно Установить галочку "не выгружать объекты свойств по ссылкам" и в каждом свойстве написать обработчик "после выгрузки"

ВыгрузитьПоПравилу(Значение,,,,ИмяПКО)

но тогда мы в каждом пакете выгружаем все объекты вне зависимости нужны они нам или нет...

слышал, что данную проблему решают через два разных плана обмена, но что то не очень мне это нравится...

Как Вы решаете эту проблему?
1 Вафель
 
12.03.18
10:33
а почему бы справочники тоже не регистрировать к обмену?
2 mistеr
 
12.03.18
10:39
(0) Не понятно, в чем проблема. Вообще говоря, "реквизиты выгружаются по ссылке" =/= "в файле только поля поиска". Если галка "не выгружать объекты свойств по ссылкам" не установлена, то объекты по ссылкам должны выгружаться, но в файле присутствовать только один раз. Если при загрузке возникает "объект не найден", то возможно неверно настроен поиск.

И вообще, опиши свою ситуацию. Обмен регулярный или разовый? Регламент выгрузки справочников какой планируется?
3 vde69
 
12.03.18
10:45
(2) У меня задача выгружать документы, а справочники только те которые есть в документах. Обмен регулярный.

Если по поиску объектПоСсылке не найден он у меня не создается...
4 Вафель
 
12.03.18
10:46
(3) А почему все нельзя выгружать?
5 vde69
 
12.03.18
10:48
(4) очень много мусора будет... мне не все документы нужно выгружать а только часть...

например контрагентов у меня 50 тыс а реально нужны 15...20шт
6 Вафель
 
12.03.18
10:50
(5) тогда и волноваться нечего, грузи каждый раз
7 Альбатрос
 
12.03.18
10:51
(3) (5) Не понял, в ПКО документа стоит галка "Не выгружать объекты свойств источника по ссылке"? Если да, то просто убрать ее и все :)
8 vde69
 
12.03.18
10:51
по идеи мне нужно регистрировать элемент справочника к выгрузке только когда он не найден по полям поиска в приемнике
9 Альбатрос
 
12.03.18
10:53
(8) И как определить на этапе выгрузки, что он будет не найден в приемнике?
10 Вафель
 
12.03.18
10:53
(8) А если поменялся?
11 vde69
 
12.03.18
10:54
(7) эта галка НЕ СТОИТ, вот что в файле (и при этом организация НЕ СОЗДАЕТСЯ)

- <Объект Нпп="1" Тип="ДокументСсылка.БольничныйЛист" ИмяПравила="БольничныйЛист">
+ <Ссылка>
+ <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="ДокументСсылка.БольничныйЛист" ТипПриемника="ДокументСсылка.БольничныйЛист">
  <Значение>a246323b-11c7-11e6-9f41-001e67078ba4</Значение>
  </Свойство>
+ <Свойство Имя="Номер" Тип="Строка">
  <Значение>РП00-000001</Значение>
  </Свойство>
+ <Свойство Имя="Дата" Тип="Дата">
  <Значение>2016-04-29T10:13:09</Значение>
  </Свойство>
  </Ссылка>
- <Свойство Имя="Организация" Тип="СправочникСсылка.Организации">
- <Ссылка>
- <Свойство Имя="{УникальныйИдентификатор}" Тип="Строка" ТипИсточника="СправочникСсылка.Организации" ТипПриемника="СправочникСсылка.Организации">
  <Значение>972b9aa9-fccf-11e5-8e09-fcaa1407882d</Значение>
  </Свойство>
- <Свойство Имя="Наименование" Тип="Строка">
  <Значение>УК РОДНОЕ ПОЛЕ ООО</Значение>
  </Свойство>
  </Ссылка>
  </Свойство>
12 vde69
 
12.03.18
10:55
(10) ну тут все сложно, пока однозначного решения нет... вероятно часть нужно перезаписывать, а часть нет
13 Вафель
 
12.03.18
10:56
по плану обмена другая обработка - по ссылкам не выгружается
14 Вафель
 
12.03.18
10:56
нужно использоватбь универсальную в режиме по плану обмена
15 Альбатрос
 
12.03.18
10:58
(11) Организация тоже должна быть зарегистрирована к обмену.
16 vde69
 
12.03.18
10:59
(15) как зарегистрировать НСИ только ту которая есть в документах?
17 Вафель
 
12.03.18
11:00
(16) при регистрации документа регистрируй справочники.
Напиши правила регистрации
18 Вафель
 
12.03.18
11:01
Но это равносильно тому что выгружаешь по ссылке
19 vde69
 
12.03.18
11:02
(17) результат будет точно такой-же как я описал в (0) с использованием "ВыгрузитьПоПравилу"
20 mehfk
 
12.03.18
11:05
А если в "ПередВыгрузкой" написать
ВыгрузитьОбъект = Истина;
21 mehfk
 
12.03.18
11:05
(20)+ в ПКС
22 Вафель
 
12.03.18
11:06
Так в правилах есть общие события, можно из использовать, а не в кажом прописывать
23 Альбатрос
 
12.03.18
11:07
(16) Так ты регистрируй справочники при записи нового или измененного и все. Тогда переноситься будут только поля поиска и полностью свойства справочника, если он новый или измененный. Соответственно если элемент уже переносился и не изменялся после этого, то будут переданы только поля поиска и он должен найтись в приемнике. Если он новый или измененный, то передается полностью объект. Типовые же так и работают.
24 vde69
 
12.03.18
11:13
(20) возьму на заметку
25 Ёпрст
 
12.03.18
11:28
(0) дай посмотреть свои правила.
У меня такой же обмен. Регистрируются только документы в плане обмена, и что обмен через обработку ОбменДаннымиXML, что через универсальныйОбменXML выгружаются все ссылки и создаются все справочники..
26 Ёпрст
 
12.03.18
12:01
+ в ПКО Организации в настройках, какие галки стоят ?
Там есть еще галка, что не создавать объект, если он по ссылке выгружен, а только ссылку переносить - как раз твой случай.
27 vde69
 
12.03.18
12:03
(26) "Искать объект приемника по внутреннему идентификатору"

больше ни каких нет
28 Ёпрст
 
12.03.18
13:42
(27) пвд есть для организации ?
29 vde69
 
12.03.18
13:49
(28) нет
30 Ёпрст
 
12.03.18
13:54
(29) попробуй задать..
+ в ПКО Организации, хоть какие реквизиты выгружаешь ?
31 Ёпрст
 
12.03.18
13:54
в ПКС есть че ?
32 vde69
 
12.03.18
14:08
(30) ПКО - есть и он нормальный, единственно есть обработчик "поля поиска"

Если НомерВариантаПоиска = 1 Тогда
    Выполнить(Алгоритмы.НайтиПоСоответствиюОбъектовИнформационныхБаз);
ИначеЕсли НомерВариантаПоиска = 2 Тогда
    СтрокаИменСвойствПоиска = "ИНН, Наименование";
Иначе
    Выполнить(Алгоритмы.ЭлементНеНайден);
КонецЕсли;



ПКС - ничего нет
33 Ёпрст
 
12.03.18
14:10
(32) галка стоит - продолжить по полям поиска ?
34 vde69
 
12.03.18
14:12
(33) ПКО - да
35 Ёпрст
 
12.03.18
14:12
ну и в твоих алгоритмах, хотя бы присваивается ССылкаНаОбъект ? + ПрекратитьПоиск  = Истина ?
36 vde69
 
12.03.18
14:13
(35)
мЗапрос = Новый Запрос("
|ВЫБРАТЬ
|    СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторИсточника
|ИЗ
|    РегистрСведений.СоответствияОбъектовИнформационныхБаз КАК СоответствияОбъектовИнформационныхБаз
|ГДЕ
|    СоответствияОбъектовИнформационныхБаз.УникальныйИдентификаторПриемника = &УникальныйИдентификаторПриемника
|    И СоответствияОбъектовИнформационныхБаз.ТипПриемника = &ТипПриемника
|    И СоответствияОбъектовИнформационныхБаз.ТипИсточника = &ТипИсточника");

мЗапрос.УстановитьПараметр("УникальныйИдентификаторПриемника",СвойстваПоиска["{УникальныйИдентификатор}"]);
мЗапрос.УстановитьПараметр("ТипПриемника",ПКО.Источник);
мЗапрос.УстановитьПараметр("ТипИсточника",ПКО.Приемник);
Если ЗначениеЗаполнено(Параметры.УзелДляОбмена) Тогда
    мЗапрос.Текст = мЗапрос.Текст + "
    | И СоответствияОбъектовИнформационныхБаз.УзелИнформационнойБазы = &УзелИнформационнойБазы";
    мЗапрос.УстановитьПараметр("УзелИнформационнойБазы",Параметры.УзелДляОбмена);
КонецЕсли;

мВыборка = мЗапрос.Выполнить().Выбрать();
Если мВыборка.Следующий() Тогда
    СсылкаНаОбъект = мВыборка.УникальныйИдентификаторИсточника;
КонецЕсли;
37 Ёпрст
 
12.03.18
14:25
(36) я в своих алгоритмах передавал СсылкаНаОбъект в параметрах алгоритмов, ибо не уверен, что эти переменные "видимы" в пределах модуля.
38 Ёпрст
 
12.03.18
14:26
если универсальной выгрузкой выгружаешь, объект создается ?
39 vde69
 
12.03.18
14:43
короче я хочу пойти мудреным путем...

в случае если в получателе НСИ не найден - я его буду создавать програмно (только гуид, так сказать резерв делаю), регистрировать в получателе для обмена в обратную сторону.

а в источнике при получении пакета мне будет приходить НСИ которую я буду регистрировать для нормальной отправки в получатель (там уже есть резерв и мне только поля заполнить останется).

такая многоступенчатая хрень... правда тут будет возникать вопрос с тем кога можно будет проводить полученные документы (а проводить их можно только когда нет зарегестрированой НСИ)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой