Имя: Пароль:
1C
1С v8
где посмотреть в типовых обмен с досылкой непринятых пакетов?
,
0 Demetres
 
14.02.18
09:06
Добрый день.
Описание ситуации:
Есть две базы БД_Источник и БД_приемник, обмен через xml, изменения регистрируются на ПланОбмена. Из БД_Источник отправляем документы (в фалйе xml) для БД_приемник. База БД_приемник их обрабатывает допустим 9 из 10.
Нужно чтобы при следующем обмене из БД_Источник отправился только 1 (тот что не обработался раньше), плюс новые документы зарегистрированные на обмен.
Подскажите где можно посмотреть и есть ли вообще такое в типовых конфигурациях?
1 vde69
 
14.02.18
09:10
вообще это на автомате выполняется за счет тикетов о получении пакета.

посмотреть можно
план-обмена/состав-отправляемых-данных
2 Фрэнки
 
14.02.18
09:11
для большего понимания нужно не просто просить про Типовые, но указывать насколько "старые" или "новые" интересны.
Т.е. версию БСП желательно указывать.
3 Остап Сулейманович
 
14.02.18
09:12
(0) "Нужно чтобы при следующем обмене из БД_Источник отправился только 1 (тот что не обработался раньше)"

Оно так не работает. Источник (пока не получит выгрузку из приемника) не может знать, что принялось, а что нет. И выгружает все. После получения ответа от приемника то что уже обработано снимается с регистрации. Остаются только изменения с номером сообщения выше уже обработанного.
4 Фрэнки
 
14.02.18
09:15
(0) Пакет либо отработан целиком, либо не отработан целиком. Если в передаваемых Пакетах содержатся слишком громоздкие пакеты, которые долго обрабатываются, сбоят, требуют повторной выгрузки, то на уровне типовых такого механизма замечено не было.

Я бы написал свою процедуру выгрузки в обработке, которая формировала бы очередной пакет только с ограниченной порцией данных. Но это превратить весь обмен в окончательно асинхронный процесс - задолбаются передавать.
Поскольку это будет очередь на отправку, в которой следующий пакет в отправку пускать нельзя, пока не придет ответка от получателя по предыдущему пакету.
5 Serg_1960
 
14.02.18
09:19
(0) Ключевой вопрос: почему обрабатывается 9 из 10? Так запланирована и это не ошибка? Если так запланирована - то это плохое планирование :)

Впрочем это можно реализовать, если не отправлять то, что не будет обрабатывается на стороне. В типовых такое можно реализовать на стороне базы-источника за счет правил регистрации.

А если говорить в общем случае, то в типовых конфигурациях, в типовых планах обмена используется принцип "всё или ничего"- по умолчанию обмен идёт в транзакции. Если база-источник не получит подтверждение - то все объекты вновь будут отправлены в обмен.
6 Фрэнки
 
14.02.18
09:20
Там еще проблема не только на стороне Отправителя, но и на стороне Получателя, в котором ВЕСЬ пакет в приемке идет как _1_ транзакция.
7 Demetres
 
14.02.18
09:21
(4) В обмене отправляются не связанные друг с другом документы. И поэтому если 1 из 10 не пришел то ничего страшного, его можно передать при следующем обмене вместе с другими документами.
8 Фрэнки
 
14.02.18
09:21
(7) не может прийти только 1 из 10, если все 10 были в одном пакете.
9 Demetres
 
14.02.18
09:22
(6) причем обмен в котором мы загрузили 9 из 10 нужно считать успещным и для узла менять номер полученного пакета.
10 Serg_1960
 
14.02.18
09:23
(7) Ничего "страшного" - Вы так считаете? А если подумать?

Есть такая фишка у типовых: поддержка целостности и не противоречивости данных. Легче отвергнуть всё, чем принять часть информации.
11 Serg_1960
 
14.02.18
09:26
PS: теоретически можно такое реализовать, это не сложно. В подтверждении получения пакета можно отправить игнорирование регистрации изменений для таких объектов и на стороне базы-источника этот случай можно поймать и обработать за счёт повторной регистрации изменений.
12 Demetres
 
14.02.18
09:27
(10) в моём случае, если один документ из 10000 не загрузился, то ничего страшного нет, страшно что документы будут накапливаться и обмен загнется.
13 Фрэнки
 
14.02.18
09:27
(9) Увы, если это типовая и не испорченное поведение Обмена на стороне Получателя (не было шаловливых ручек программиста), то не примется 9 объектов из 10 , если все 10 объектов были отправлены в одном пакете (хмл-файл  обмена).
14 Demetres
 
14.02.18
09:28
(11) в принципе как реализовать есть идеи. Хотелось бы посмотреть пример из типовых как там реализовано (если есть конечно такое).
15 Фрэнки
 
14.02.18
09:31
(14) Если подобное где-то есть, то это будет "ручная" регистрация объектов на выгрузку. Именно на выгрузку.
На стороне Получателя в типовых - только Транзакция, только Хардкор.
16 Demetres
 
14.02.18
09:38
(15) Понятно.
17 bolder
 
14.02.18
09:39
(0) Никогда ещё такое не поддерживалось в 1С.
18 bolder
 
14.02.18
09:42
(15) При ручной установке легко получить нецелостность базы.
19 Serg_1960
 
14.02.18
09:51
(15) Просто алгоритм и ничего более, просто типовая УПП:

Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
    
    Если ТипЗнч(ЭлементДанных) = мТипСправочникРегОтчеты Тогда
        
        ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
        
    КонецЕсли;
    
КонецПроцедуры

мТипСправочникРегОтчеты = Тип("СправочникОбъект.РегламентированныеОтчеты");
20 Serg_1960
 
14.02.18
10:07
*(19) В типовой конфигурации УПП к этому справочнику регламентированных отчетов свои особенные отношения.

Кстати, рекомендую в своих конфигурациях глобальным поиском поискать ".Игнорировать". Некоторые будут удивлены :)
21 Demetres
 
14.02.18
16:37
Всем спасибо)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший