|
Помогите настроить обмен. | ☑ | ||
---|---|---|---|---|
0
НеПапоКарло
07.06.18
✎
09:59
|
Доброго дня!
Разработчик правил обмена данных предоставил правила, которые не работают в один этап, а в два. Необходимо допилить чтоб выгружалась/загружалось в один заход. Имеем в источнике документ Документ с реквизитами в табчасти Номенклатура и Партия (создаётся автоматически при проведении). По текущим правилам Документ загружается в приемник, а также загружаются партии, но в таб.часть не проставляются. При повторной выгрузке/загрузке Документа партии в табчасти Документа проставляются. Анализируя файл выгрузки данных обнаружил, что данные по партиям находятся в конце файла. Думаю, что в этом проблема, записи по партиям должны быть раньше данных о документе. Где и как в Конвертация данных версии 2.1 настроить порядок выгрузки? Дополнительные настройки правил конвертации объектов имеют Истину у следующих значений: - Искать объект приемника по внутреннему идентификатору - Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их - Не создавать новый объект в приемнике, если он НЕ найден |
|||
1
Cool_Profi
07.06.18
✎
10:00
|
Отпинать разработчика, чтобы он сделал нормальные правила - не вариант?
|
|||
2
НеПапоКарло
07.06.18
✎
10:12
|
(1) Его ответ таков: "Данные выгружаются? Выгружаются, а в сколько этапов у нас договора не было".
|
|||
3
aleks_default
07.06.18
✎
10:12
|
Не очень понятно. Посмотрите в файле выгрузки данных, там в табличной части документа уже указана партия (как минимум GUID)?. Если указана, то порядок выгрузки данных значения не имеет. Или же партии заполняются в документ уже после загрузки какой-то постобработкой?
|
|||
4
Cool_Profi
07.06.18
✎
10:14
|
(2) вы деньги уже заплатили? Если нет, тогда пинок.
Если да - ещё добавьте. Пинка, разумеется. Ну и копейку, когда исправит. Накосячил - пусть правит |
|||
5
НеПапоКарло
07.06.18
✎
10:21
|
(3) Постобработки нет.
|
|||
6
Cyberhawk
07.06.18
✎
10:22
|
Порядок выгрузки ни в типовой обработке обмена, ни в обычных правилах конвертации (забор объектов с узла) не "настраивается".
Но добиться нужного порядка обмена все-таки можно, но не нужно. |
|||
7
Serg_1960
07.06.18
✎
10:23
|
(3) Фишка в том, что GUIDы разработчик не используют. И это правильное решение. Это не РИБ.
|
|||
8
Cyberhawk
07.06.18
✎
10:23
|
Скорее всего виноват прикладной код, который очищает ссылки ("партии"), т.е. в приемнике прикладной код ориентирован на то, что объект в БД должен быть
|
|||
9
Ёпрст
07.06.18
✎
10:25
|
(0) ну выложи свои правила на посмотреть
|
|||
10
Serg_1960
07.06.18
✎
10:26
|
(8) Угу. Партии легко изменяются в базе-приёмнике (например при перепроведении документов). И при обмене, ориентироваться на партии, созжвнные в базе-источнике - нонсенс.
|
|||
11
Serg_1960
07.06.18
✎
10:27
|
"созжвнные" = "созданные"
|
|||
12
НеПапоКарло
07.06.18
✎
10:29
|
||||
13
НеПапоКарло
07.06.18
✎
10:30
|
(12) в правилах вместо Партий используются Серии.
|
|||
14
aleks_default
07.06.18
✎
10:54
|
(8) такой код не должен срабатывать в режиме обмен данными загрузка - это залет
|
|||
15
Cyberhawk
07.06.18
✎
11:20
|
(14) Документ может проводиться в приемнике _сразу_ (а не отложенно), тогда никакого режима загрузки не будет.
В общем случае залет может быть на трех сторонах: у автора правил конвертации (например, принудительно записывает объект в обработчике ПослеЗагрузки), у автора конфигурации (например, не учитывает запись объекта в режиме загрузки), у автора обработки обмена (типовая, которая универсальная-внешняя, например, не делает никакое отложенное проведение) |
|||
16
Ёпрст
07.06.18
✎
11:21
|
(12) какой документ смотреть ?
Че-то в правилах явно не хватает |
|||
17
Ёпрст
07.06.18
✎
11:21
|
В послеЗагрузки у ТС есть код для поиска "партий"
|
|||
18
НеПапоКарло
07.06.18
✎
11:24
|
(16) CorrespondentExchangeRules.xml
|
|||
19
НеПапоКарло
07.06.18
✎
11:26
|
(17) Есть:
СерияНоменклатурыУС = СтрокаПараметров.СерияНоменклатуры; Если ЗначениеЗаполнено(СерияНоменклатурыУС) Тогда ТЧДок.ДатаВыработкиНачало = СерияНоменклатурыУС.ДатаИзготовления; ТЧДок.СпособЗаданияДатыВыработки = Перечисления.СпособыЗаданияДаты.Дата; ТЧДок.ДатаОкончанияСрокаГодностиНачало = СерияНоменклатурыУС.СрокГодности; ТЧДок.СпособЗаданияДатыСроковГодности = Перечисления.СпособыЗаданияДаты.Дата; НомерПартии = Справочники.НомераПроизводственныхПартий.НайтиПоНаименованию(СокрЛП(СерияНоменклатурыУС.СерийныйНомер), Истина); |
|||
20
Ёпрст
07.06.18
✎
11:27
|
(18) в этих правилах, вообще ничего нет :))
|
|||
21
НеПапоКарло
07.06.18
✎
11:28
|
(19)
Обработка пытается найти "СерияНоменклатурыУС", но Серии ещё не создан в приемнике. |
|||
22
Ёпрст
07.06.18
✎
11:29
|
Если смотреть эти правила, то для начала, сыми галки во всех правилах - Не создавать новый объект в приемнике, если он НЕ найден
|
|||
23
НеПапоКарло
07.06.18
✎
11:31
|
(22) Это делал не помогло
|
|||
24
Ёпрст
07.06.18
✎
11:35
|
Для начала, По каким правилам выгружаешь ?
По CorrespondentExchangeRules или по ExchangeRules ? |
|||
25
Ёпрст
07.06.18
✎
11:35
|
Или, тебе их "объединить нужно" ?
|
|||
26
Ёпрст
07.06.18
✎
11:35
|
ПВД конечно, кривовато написано.. цикл в цикле..
|
|||
27
НеПапоКарло
07.06.18
✎
11:38
|
(24) ExchangeRules
|
|||
28
Ёпрст
07.06.18
✎
11:44
|
(27) уверен ? Зачем тогда CorrespondentExchangeRules ?
Их потом для регистра сведений выгружаешь, или что ? |
|||
29
Ёпрст
07.06.18
✎
11:46
|
Понял, ты туда-сюда грузишь..
Так какие не работают ? из бп3 в ветеринарку ? |
|||
30
НеПапоКарло
07.06.18
✎
11:48
|
(29) Да, из БП в ветеринарку
|
|||
31
hhhh
07.06.18
✎
11:51
|
(28) CorrespondentExchangeRules это правила из второй базы.
|
|||
32
Ёпрст
07.06.18
✎
12:36
|
(30) должно всё и так выгружаться. Максимум, попробуй сдвинуть номенклатуру вниз в ПКО справочник Номенклатура.
|
|||
33
Ёпрст
07.06.18
✎
12:39
|
Ну и все твои серии заполняются тут:
ТЧПродукция = ПараметрыОбъекта["ТаблицаПродукцииТабличнаяЧасть"]; Объект.ТаблицаПродукции.Очистить(); Для каждого СтрокаПараметров Из ТЧПродукция Цикл НоменклатураУС = СтрокаПараметров.Номенклатура; Если ЗначениеЗаполнено(НоменклатураУС) Тогда ТЧДок = Объект.ТаблицаПродукции.Добавить(); Запрос = Новый Запрос("ВЫБРАТЬ | СоответствиеПродукцииНоменклатуреУчетнойСистемы.Продукция |ИЗ | РегистрСведений.СоответствиеПродукцииНоменклатуреУчетнойСистемы КАК СоответствиеПродукцииНоменклатуреУчетнойСистемы |ГДЕ | СоответствиеПродукцииНоменклатуреУчетнойСистемы.НоменклатураУчетнойСистемы = &НоменклатураУС"); Запрос.УстановитьПараметр("НоменклатураУС",НоменклатураУС); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ТчДок.Продукция = Выборка.Продукция; ТчДок.НоменклатураУчетнойСистемы = НоменклатураУС; ТЧДок.ПодвидПродукции = ТчДок.Продукция.Владелец; ТЧДок.ВидПродукции = ТЧДок.ПодвидПродукции.Владелец; ТЧДок.ТипПродукции = ТЧДок.ВидПродукции.Владелец; КонецЕсли; ЕдиницаИзмеренияУС = СтрокаПараметров.ЕдиницаИзмерения; Если ЗначениеЗаполнено(ЕдиницаИзмеренияУС) Тогда Запрос = Новый Запрос("ВЫБРАТЬ | КлассификаторЕдиницИзмерения.Ссылка |ИЗ | Справочник.КлассификаторЕдиницИзмерения КАК КлассификаторЕдиницИзмерения |ГДЕ | КлассификаторЕдиницИзмерения.ЕдиницаИзмеренияУчетнойСистемы = &ЕдиницаИзмеренияУчетнойСистемы"); Запрос.УстановитьПараметр("ЕдиницаИзмеренияУчетнойСистемы",ЕдиницаИзмеренияУС); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ТчДок.ЕдиницаИзмерения = Выборка.Ссылка; КонецЕсли; ТчДок.Количество = СтрокаПараметров.Количество; Конецесли; СерияНоменклатурыУС = СтрокаПараметров.СерияНоменклатуры; Если ЗначениеЗаполнено(СерияНоменклатурыУС) Тогда ТЧДок.ДатаВыработкиНачало = СерияНоменклатурыУС.ДатаИзготовления; ТЧДок.СпособЗаданияДатыВыработки = Перечисления.СпособыЗаданияДаты.Дата; ТЧДок.ДатаОкончанияСрокаГодностиНачало = СерияНоменклатурыУС.СрокГодности; ТЧДок.СпособЗаданияДатыСроковГодности = Перечисления.СпособыЗаданияДаты.Дата; //ТЧДок.Маркировка = СерияНоменклатурыУС.Наименование; НомерПартии = Справочники.НомераПроизводственныхПартий.НайтиПоНаименованию(СокрЛП(СерияНоменклатурыУС.СерийныйНомер), Истина); Если НомерПартии = Неопределено ИЛИ НомерПартии = Справочники.НомераПроизводственныхПартий.ПустаяСсылка() Тогда ПроизвПартия = Справочники.НомераПроизводственныхПартий.СоздатьЭлемент(); ПроизвПартия.Наименование = СокрЛП(СерияНоменклатурыУС.СерийныйНомер); ПроизвПартия.Записать(); ТЧДок.НомерПартии = ПроизвПартия.Ссылка; Иначе ТЧДок.НомерПартии = НомерПартии; КонецЕсли; Конецесли; ТЧДок.ПроводиласьВетсанэкспертиза = Справочники.РезультатыЛабораторногоИсследования.ПодвергнутоСырье; ТЧДок.ФорматЗаданияДат = Перечисления.СпособыЗаданияДаты.Дата; КонецЕсли; КонецЦикла; |
|||
34
Ёпрст
07.06.18
✎
12:41
|
И.. нафига было вот так писать, неясно:
НомерПартии = Справочники.НомераПроизводственныхПартий.НайтиПоНаименованию(СокрЛП(СерияНоменклатурыУС.СерийныйНомер), Истина); Если НомерПартии = Неопределено ИЛИ НомерПартии = Справочники.НомераПроизводственныхПартий.ПустаяСсылка() Тогда ПроизвПартия = Справочники.НомераПроизводственныхПартий.СоздатьЭлемент(); ПроизвПартия.Наименование = СокрЛП(СерияНоменклатурыУС.СерийныйНомер); ПроизвПартия.Записать(); ТЧДок.НомерПартии = ПроизвПартия.Ссылка; Иначе ТЧДок.НомерПартии = НомерПартии; КонецЕсли; Когда проще сразу сделать это в ПКО |
|||
35
Ёпрст
07.06.18
✎
12:42
|
Т.е выгружать серию в реквизит Партия.
|
|||
36
aleks_default
07.06.18
✎
12:53
|
(34) это все хорошо но проблема видимо не в этом
|
|||
37
hhhh
07.06.18
✎
13:19
|
может действительно CorrespondentExchangeRules правила из второй базы надо поправить?
|
|||
38
НеПапоКарло
07.06.18
✎
13:40
|
(33) В том то и дело, что серий на момент загрузки документа в приёмнике нет.
|
|||
39
НеПапоКарло
07.06.18
✎
13:45
|
Может дело в том, что в блоке "ИнформациияОТипахДанных" в файле данных обмена "Message_БП_УВ" данные по документу стоят раньше?
<ИнформацияОТипахДанных> <ТипДанных Имя="ДокументСсылка.ПроизводственныеОперации"> <Дата>Дата</Дата> <Проведен>Булево</Проведен> <НезавершенноеПроизводство>Булево</НезавершенноеПроизводство> <Номер>Строка</Номер> <ПометкаУдаления>Булево</ПометкаУдаления> <ЗавершитьПроизводство>Булево</ЗавершитьПроизводство> <ИдентификаторТранзакции>СправочникСсылка.ИдентификаторыПроизводственныхТранзакций</ИдентификаторТранзакции> </ТипДанных> <ТипДанных Имя="СправочникСсылка.СерииНоменклатурыУчетнойСистемы"> <Код>Строка</Код> <СрокГодности>Дата</СрокГодности> <ПометкаУдаления>Булево</ПометкаУдаления> <Владелец>СправочникСсылка.НоменклатураУчетнойСистемы</Владелец> <СерийныйНомер>Строка</СерийныйНомер> <Наименование>Строка</Наименование> <ДатаИзготовления>Дата</ДатаИзготовления> </ТипДанных> </ИнформацияОТипахДанных> |
|||
40
Cyberhawk
07.06.18
✎
13:49
|
Что-то никто из отписавшихся верно про CorrespondentExchangeRules не написал, ибо не знают походу.
Не знают, что загрузка в приемник идет по этим правилам (хранящимся в приемнике), а на те правила что в файле выгрузки прилетают подсистеме обмена из БСП уже пох ) |
|||
41
Cyberhawk
07.06.18
✎
13:49
|
Добро пожаловать в мир типовых на БСП
|
|||
42
НеПапоКарло
07.06.18
✎
14:07
|
Перенес блок с данными Серий выше блока с данными Документа в файле "Message_БП_УВ" и всё залетело с первого раза. Значит необходимо при выгрузке выставить порядок записи данных в "Message_БП_УВ". А где выставить этот порядок никак не вижу.
|
|||
43
НеПапоКарло
07.06.18
✎
14:08
|
(32) Не помогло
|
|||
44
craxx
07.06.18
✎
14:10
|
(0) а ты там кем будешь?
|
|||
45
НеПапоКарло
07.06.18
✎
14:13
|
(44) В смысле? Когда настрою обмен?)
|
|||
46
Ёпрст
07.06.18
✎
14:18
|
(40) это как ? :)
правила при загрузке берутся всегда из прилетевшего файла обмена и никак иначе. |
|||
47
Ёпрст
07.06.18
✎
14:22
|
А у автора вся фигня, только из-за когда в ПослеЗагрузки, где он сам лепит по-новой всю ТЧ документа.
Тут только ставить галку - режим отладки обработчиков и в пофигураторе посмотреть в отладке, как идёт загрузка в этом коде. |
|||
48
Ёпрст
07.06.18
✎
14:24
|
Ну и ... у него реально за 2 раза, ибо первый раз он лепит сами серии, а второй раз, они уже "находятся в его рег соответствий".
Зачем так сделано - к автору правил. Проще было не писать этот код в ПослеЗагрузки , а сразу выгрузить как надо, т.е как в (35) |
|||
49
Cyberhawk
07.06.18
✎
14:34
|
(46) Терретик? Не тупи, вроде Я все понятно написал, откуда там берется.
|
|||
50
Ёпрст
07.06.18
✎
14:36
|
(49) Спорим на пузырь конины, что в кд1 правила при загрузки всегда берутся из прилетевшего файла обмена и никак иначе ?
|
|||
51
Ёпрст
07.06.18
✎
14:36
|
в кд2.1
|
|||
52
Cyberhawk
07.06.18
✎
14:36
|
Прежде чем спорить, нужно договориться о понятиях.
Что значит твое "всегда"? |
|||
53
Cyberhawk
07.06.18
✎
14:37
|
Ты на (41) посмотри. Тебе назвать конфу и релиз что ли, где правила (формата КД 2) и где выполняется озвученное мною?
|
|||
54
Ёпрст
07.06.18
✎
14:41
|
(53) Так спорить будешь, или нет ?
|
|||
55
Cyberhawk
07.06.18
✎
14:42
|
Ясно, теоретик и не читатель
|
|||
56
Ёпрст
07.06.18
✎
14:42
|
(55) Слился ?
|
|||
57
Ёпрст
07.06.18
✎
14:44
|
Обработка ОбменДаннымиXML, если что, во всех конфах типовых, одинаковая, как и УниверсальныйОбменXML..
|
|||
58
Ёпрст
07.06.18
✎
14:44
|
и пофик там, на твою бсп, она только для кд3 нужна.
|
|||
59
Ёпрст
07.06.18
✎
14:44
|
и в кд2.1 нет отдельных правил для загрузки в базе приёмнике
|
|||
60
Cyberhawk
07.06.18
✎
14:46
|
Почему слился - вроде Я все понятно написал выше
|
|||
61
Ёпрст
07.06.18
✎
14:50
|
(60) Слился - не стал спорить.
|
|||
62
aleks_default
07.06.18
✎
14:53
|
(60) У тебя есть эта конфа? Ветеринарка или как там?
|
|||
63
Cyberhawk
07.06.18
✎
15:08
|
(62) Типовые от 1С
|
|||
64
Cyberhawk
07.06.18
✎
15:09
|
(61) Так смысл с тобой спорить, если ты даже предмет спора внятно огласить не можешь
|
|||
65
hhhh
07.06.18
✎
15:26
|
(61) у меня реальный случай был. Действительно при загрузке правила берутся не из файла выгрузки. А находятся в самой базе приемнике и берутся оттуда. Я полдня потерял на этом, что такое, меняю правила, а ничего не происходит.
Это обусловлено политикой безопасности - не передавать программный код через файлы. |
|||
66
Ёпрст
07.06.18
✎
15:31
|
(64) в типовых конфах, при загрузке что обработкой по планам обмена с галкой "обмен по правилам" (через обменДаннымиXML которая), что через обработку УниверсальныйОбменXML, при загрузке файла обмена в базе приёмника загрузка всегда идёт по правилам, прилетевшим вместе с файлом обмена.
Ты утверждаешь обратное, что правила берутся из базы приёмника. |
|||
67
Cyberhawk
07.06.18
✎
15:35
|
(66) Ты что-то напутал и добавил моим словам отсебятины
|
|||
68
Ёпрст
07.06.18
✎
15:36
|
(67) Да ? А в (40) как-то по-другому написано разве ?
|
|||
69
Cyberhawk
07.06.18
✎
15:45
|
Конечно - ни о какой "загрузке обработкой" с какими-то там галками речь не идет
|
|||
70
Cyberhawk
07.06.18
✎
16:00
|
Но - справедливости ради - все зависит не столько от конфигурации (типовая или не типовая), а от правил конвертации - конкретно от свойства "Режим совместимости". Если он в значении "БСП 2.0 и ниже", то все будет работать как мы привыкли.
Если же он в значении "БСП 2.1 и выше" (= "Не использовать") и обработка обмена в приемнике поддерживает этот режим, то правила для загрузки будут браться из соответствующего регистра сведений приемника. Для интересующихся - типовой обмен между УНФ и БП (из сведего по памяти - приемником была инфобаза БП). Ну и (65) тоже, вон, подтверждает мои слова. С чем там собирался спорить ник "Епрст" (и что за галки / обработки обмена, если это все скрыто в пользовательском режиме в подсистеме БСП) - не ясно, но это и не важно: совершенно понятно, что утвержать (50) было явной дичью ) |
|||
71
НеПапоКарло
07.06.18
✎
16:56
|
(70) "то правила для загрузки будут браться из соответствующего регистра сведений приемника. "
В каком регистре сведений может хранится? |
|||
72
Cyberhawk
07.06.18
✎
17:08
|
(71) Это неправильный вопрос
|
|||
73
Cyberhawk
07.06.18
✎
17:10
|
Ибо ответ на твой вопрос тебе вряд ли что-то даст.
Куда лучше интересоваться, а что сделать, чтобы посмотреть / скачать / изменить / загрузить обратно эти правила. И здесь тебе даст ответ документация на ИТС по подсистеме БСП "Обмен данными". |
|||
74
Cyberhawk
07.06.18
✎
17:12
|
Также отбор по соответствующей подсистеме в дереве метаданных тебе тоже даст ответ на твой вопрос.
В УНФ этот регистр, например, называется "ПравилаДляОбменаДанными". |
|||
75
Cyberhawk
07.06.18
✎
17:13
|
(ну и в других конфах на БСП он должен называться так же)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |