|
План Обмена, получение изменений порциями | ☑ | ||
---|---|---|---|---|
0
OnCheck
06.02.12
✎
09:13
|
Здравствуйте. Помогите советом. Интересует, есть ли возможность обмениваться пакетами Плана обмена ограниченным размером порций, например в 1 пакете отсылается максимум 10 объектов, остальное следующими пакетами. Спасибо!
|
|||
1
Rlogin
06.02.12
✎
09:18
|
Да
|
|||
2
Рэйв
06.02.12
✎
09:19
|
Смотри процедуры событий ПриОтправки и ПриПолучении
Там есть параметр ЭлементДанных. Считай сколько уже отправлено и ограничивай. Только кривая какая то у тебя задумка все равно. |
|||
3
OnCheck
06.02.12
✎
09:20
|
(2) Почему думаешь кривая, просто хочу на этапе внедрения подстраховаться.
|
|||
4
Maxus43
06.02.12
✎
09:22
|
(3) где подстраховка то? если с файлом чонить случится в пути - заново пошлёт, ответа о получении не будет же
|
|||
5
Рэйв
06.02.12
✎
09:22
|
(3)Попробуй.потом расскажешь:-)
|
|||
6
Поpyчик-4
06.02.12
✎
09:22
|
(0) Если обмен на БСП,
Количество элементов в транзакции выгрузки данных |
|||
7
Рэйв
06.02.12
✎
09:27
|
(6)Это просто разбиение на несколько транзакций по количеству элементов. Для скорости.Сам обмен полный будет.
|
|||
8
OnCheck
06.02.12
✎
09:30
|
(6) БСП?
Насколько я понял это параметр, пакет все равно будет содержать все измененные элементы. |
|||
9
OnCheck
06.02.12
✎
09:35
|
(2) Спасибо за наводку, пока еще не понял как, буду разбираться.
|
|||
10
OnCheck
06.02.12
✎
09:36
|
(4) ну мелкими порциями проще ладить.
|
|||
11
Рэйв
06.02.12
✎
09:39
|
(10)Не забывай что после залития каждой мелкой порции тебе надо на это мелкое нести обратный ответ. Иначе не будет подтверждения и твоя первая мелкая порция будет вечно первой.
|
|||
12
Поpyчик-4
06.02.12
✎
09:56
|
(10) Всё равно задумка ерундовая, как ни сделаешь всё криво будет.
|
|||
13
OnCheck
06.02.12
✎
10:02
|
+(10) так же, если не удалось импортировать например 99 - ый объект из 100 объектов пакета, то откатывается весь пакет целиком, поэтому если будет уходить по 10 объектов в пакете, то обломается всего 10 объектов из 100. Это снижает критичность ошибки разработчика.
|
|||
14
Maxus43
06.02.12
✎
10:06
|
(13) а при обменах не должно быть ошибок разработчика. пример такой ошибки есть? что там можно не так сделать?
|
|||
15
Feanor
06.02.12
✎
10:07
|
НЕ страдайте ерундой, почитайте классиков про обмены. Радченко, к примеру.
|
|||
16
Maxus43
06.02.12
✎
10:07
|
(14) + если у объекта зарегистрированы изменения - значит все проверки уже прошли, загрузка происходит без контроля уже (ОбменДанными = Истина), если прописать всё аналогично типовой - программных ошибок быть не должно впринципе
|
|||
17
OnCheck
06.02.12
✎
10:12
|
(16) Аналогично типовой это УнивесальныйОбменДаннымиXML?
|
|||
18
Aleksey
06.02.12
✎
10:13
|
В типовом обмене в БП при использовании правил обмена и фонового обмена можно задавать количества объектов в обмене
Хотя я не удивлюсь, если все там сделано через одно место, как обычно. Например, есть в настройках ограничения размера пакета. Так 1С если пакет получается больше заданного размера тупо не отправляет "Ответный пакет не был отправлен. Размер исходящего пакета составил: 99 553,14 (КБт) что превышает допустимое ограничение 999 (КБт)". Может и здесь так же будет |
|||
19
OnCheck
06.02.12
✎
10:18
|
(13) да может просто тупо файл битый прийти, конечно не разработчика ошибка, но все же, хотя вы правы. буду убеждать оппонента в этом.
(18) я полагаю лимитироваться количеством выгруженных объектов, но спасибо за наводку. |
|||
20
Maxus43
06.02.12
✎
10:19
|
(17) нет, обычный типовой обмен данными, по плану обмена встроенному... не представляю где вобще там можно накосячить. Обмен какой? между одинаковыми конфами?
|
|||
21
Maxus43
06.02.12
✎
10:19
|
(19) про битый файл - (4), заново пошлёт
|
|||
22
OnCheck
06.02.12
✎
10:19
|
нет между 1с и Axapta
|
|||
23
Maxus43
06.02.12
✎
10:24
|
дык тут типовые механизмы обмена не канают тогда...
двухсторонний обмен? как выгружаете? |
|||
24
Feanor
06.02.12
✎
10:28
|
(23) ну почему не канают? а вдруг программисты аксапты сделают чудо.
|
|||
25
Maxus43
06.02.12
✎
10:31
|
(24) тогда будет лепота) если они под форматы обмена данными 8.1 подстроятся... ответы о загрузке к 1с чтоб ходили и т.д.
|
|||
26
Feanor
06.02.12
✎
10:32
|
(25) но что-то мне подсказывает, что это фантастика ))))
|
|||
27
Maxus43
06.02.12
✎
10:32
|
(25) + 8.1 = 1с :)
|
|||
28
OnCheck
06.02.12
✎
11:12
|
(25) хм, поясните, а в чем проблема, если генерить из Аксапты XML ку нужного формата. или 1с генерит особые XML-ки?
|
|||
29
Maxus43
06.02.12
✎
11:14
|
(28) знаеш форматы 1с? если получится правильно сделать то норм. а сабж имхо делать не стоит, пусть выгружает-загружает всё, хмл-ки архивируются хорошо, маленький файл гоняться будет
|
|||
30
Feanor
06.02.12
✎
11:17
|
(28) когда я сапёрам обрисовал своё видение обмена, их глаза медленно приняли форму 5-ти рублевых монет, а язык уже говорил "разработка будет слишком сложной и трудоёмкой".
|
|||
31
OnCheck
06.02.12
✎
11:18
|
форматы 1с это структура XML, которые генерит 1С, верно понимаю?
|
|||
32
OnCheck
06.02.12
✎
11:20
|
(30) а в чем сложности? сгенерить XML нужной структуры, главное чтобы шапка соответствовала той, которую читает 1с, а внутри все, что хочешь, конечно исходя из того, что даст план обмена в самой 1с-ке
|
|||
33
Maxus43
06.02.12
✎
11:20
|
(31) да, в хмл 1с-ных сразу идёт представление объекта 1с, не читает она попорядку атрибуты и тэги хмл, она видит в хмл свою схему и приводит сразу преобразование в объект свой... как то так
|
|||
34
OnCheck
06.02.12
✎
11:22
|
(33) ну это если использовать XML-сериализацию, а если без нее укладывать и читать объекты?
|
|||
35
Maxus43
06.02.12
✎
11:24
|
(34) можно всё, просто в таком случае все типовые механизмы обмена выкидывай, тут получается чтение произвольных хмл, надо всё продумывать - и регистрацию изменений, и получение ответов и т.д. Если ничо не путаю
|
|||
36
Feanor
06.02.12
✎
11:26
|
(34) ну тогда ты сам выбираешь зарегистрированные изменения из плана обмена и сам формируешь файл обмена. Непонятно только, зачем тебе понадобилось спрашивать (0)
|
|||
37
Serg_1960
06.02.12
✎
11:27
|
Имхо: я бы смотрел в сторону парсинга файла обмена на принимающей стороне. Разбить "на пакеты" - не сложно. Но нужно ещё разбираться с номером сообщения, регистрацией изменений и т.д. Но всё - решаемо, без изменения типовой конфы, внешней обработкой.
|
|||
38
OnCheck
06.02.12
✎
11:27
|
регистрацию изменений, получение ответов, как раз не надо, за это и должен по задумке отвечать план обмена.
Про ПриОтправки и ПриПолучении это те что ПриОтправкеДанныхГлавному и т.д., объявляются в модуле объекта Плана обмена? |
|||
39
OnCheck
06.02.12
✎
11:29
|
(37) план обмена все равно надо делать свой, следует настроить объекты для экспорта. Как раз и не хочется заморачиваться номером сообщения и регистрацией изменений, хочется чтобы делал это план обмена.
|
|||
40
Maxus43
06.02.12
✎
11:30
|
(38) за это план обмена отвечает когда обменивается с другой конфой 1с. как ты будеш их аксапты отправлять в 1с сообщение с ответом произвольным хмл? щас тока он регистрацию сделает сам, а об удалении регистрации думай сам
|
|||
41
OnCheck
06.02.12
✎
11:32
|
(36) изначально задача так поставлена. Просчитываю возможности удовлетворения разумов оппонентов. Если все же понадобиться то скажу, что можно.
|
|||
42
OnCheck
06.02.12
✎
11:34
|
(40) Хм, в случае когда 1с с 1с номер пакета передается в элементе XML-ки, а номер последнего принятого пакета в другом элементе, что мешает сделать так же из Аксапты, извините, не могу понять.
|
|||
43
Serg_1960
06.02.12
✎
11:34
|
ммм... напомню, на всякий случай: порядок объектов в файле обмена - не установлен.
Если будете "дробить" вывод зарегистрированных изменений на "пакеты" - есть вероятность нарваться на случай, когда "взаимосвязанные" изменения будут переданы в разных пакетах, хаотично :( |
|||
44
OnCheck
06.02.12
✎
11:36
|
(43) какое хорошее напоминание :-). Я почему то наивно полагал что вывод зарегистрированных изменений на "пакеты" происходит в хронологическом порядке, по мере генерации изменений! Нет?!
|
|||
45
Serg_1960
06.02.12
✎
11:37
|
(44) Нет.
|
|||
46
OnCheck
06.02.12
✎
11:40
|
Вариант: при анализе изменений выстраивать правильную очередь и выгружать именно в таком порядке. Например, сначала должно быть выгружено физЛицо, затем сотрудник, но не иначе.
|
|||
47
Alex375
06.02.12
✎
11:42
|
(46) а как же этот порядок выстроить? Кстати а какие типы объектов собираетесь гонять: справочники, документы, регистры?
|
|||
48
OnCheck
06.02.12
✎
11:50
|
(47) пока не знаю как выстроить, может и не получится. Гонять буду все 3 вида.
Maxus43, не могу отловить где работают ПриОтправкеДанныхПодчиненному , ПриОтправкеДанныхГлавному, ПриОтправкеДанныхУзлаПодчиненному |
|||
49
OnCheck
06.02.12
✎
11:51
|
+(48) модифицирую объекты, получаю выборку, выгружаю в пакет, не заходит!
|
|||
50
Serg_1960
06.02.12
✎
11:53
|
(49) Может быть план обмена - не риб?
|
|||
51
Maxus43
06.02.12
✎
11:53
|
(49) как выгружаеш?
|
|||
52
Maxus43
06.02.12
✎
11:54
|
база должна знать что она главная и у неё есть подчинённые
|
|||
53
Alex375
06.02.12
✎
11:55
|
В плане обмена у тебя должно быть минимум 2 узла.
|
|||
54
OnCheck
06.02.12
✎
11:55
|
(50) Галку в БД-источнике поставил, сначала было не РИБ.
(51) По учебнику: Процедура ЗаписатьСообщениеСИзменениями() Экспорт Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "-------Выгрузка в узел " + Строка(ЭтотОбъект) + "----------"; Сообщение.Сообщить(); Каталог = КаталогВременныхФайлов(); //Сформировать имя временного файла. ИмяФайла = Каталог + ?(Прав(Каталог,1) = "\","","\") + "Message" + СокрЛП(ПланыОбмена.ОбменАксаптаЗУП.ЭтотУзел().Код) + "_" + СокрЛП(Ссылка.Код) + ".xml"; // Создать объект записи XML. //***ЗаписьХМL-документов ЗаписьХМL = Новый ЗаписьXML; ЗаписьХМL.ОткрытьФайл(ИмяФайла); ЗаписьХМL.ЗаписатьОбъявлениеXML(); //*** Инфраструктура сообщений ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); ЗаписьСообщения.НачатьЗапись(ЗаписьХМL, Ссылка); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Номер сообщения " + ЗаписьСообщения.НомерСообщения; Сообщение.Сообщить(); //Получить выборку изменных данных //***Механизм регистрации изменений ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель , ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл //Записать данные в сообщение XML сериализации ЗаписатьXML(ЗаписьХМL, ВыборкаИзменений.Получить()); //Прервать; КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); ЗаписьХМL.Закрыть(); Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "------Конец выгрузки --------------"; Сообщение.Сообщить(); КонецПроцедуры |
|||
55
Maxus43
06.02.12
✎
11:55
|
в данном случае я бы произвольный обмен данными писал вобще. планы обмена использовал бы для регистрации изменений и из аксапты простенькие ответы бы присылал, мол такой то док с таким уидом и номером сообщения - загружен, после чего удалял регистрацию изменеий для данного сообщения
|
|||
56
OnCheck
06.02.12
✎
11:57
|
(55) да, я так и хочу. Вопрос: можно ли из очереди регистраций изменений выдирать только нужные на данный момент, их укладывать в пакет, и в дальнейшем работать с этими изменениями как с отдельным пакетом, не теряя остальных изменений.
|
|||
57
Aleksey
06.02.12
✎
11:59
|
(55) И получил бы косяк, когда во время пути документ уже поменяли еще раз
|
|||
58
Maxus43
06.02.12
✎
12:00
|
(56) я никак не пойму что значит "нужные на данный момент". всё что изменено - выгружай, не думаю что стоит пытаться разбить на порции вобще
|
|||
59
OnCheck
06.02.12
✎
12:00
|
как сказать узлу, что он главная база? или надо соблюсти правильно создание подчиненной базы? а то я тупо скопипастил план обмена, в другую ЗУП, и отзеркалировал структуру узлов.
|
|||
60
Maxus43
06.02.12
✎
12:01
|
(57) нет, косяка ж нет в типовых обменах. удалять регистрации только по если совпадают номера сообщений
|
|||
61
Aleksey
06.02.12
✎
12:02
|
(60) Правильно, ибо юзаются номера сообщение. Но мы же про обход штатного метода говорим? Тогда еще нужно поддерживать механизм нумерации сообщений
|
|||
62
Maxus43
06.02.12
✎
12:02
|
(59) РИБ надо делать ЕМНИП
|
|||
63
OnCheck
06.02.12
✎
12:03
|
(58) я понял твою мысль, просто хочется опробовать возможность ручной резки на пакеты-сообщения.
|
|||
64
Maxus43
06.02.12
✎
12:04
|
(61) да, нумерацию надо оставить, чтоб коллизий не возникало, без этого никак
|
|||
65
OnCheck
06.02.12
✎
12:05
|
спасибо за диалог, Господа!
|
|||
66
Maxus43
06.02.12
✎
12:06
|
(63) нетривиальная задача, связанные данные должны идти вместе, например ФизЛица - к ним надо тянуть паспортные данные, контакную инфу и т.д. это с точки зрения 1с инфа связанная. в аксапте хз как, но надо чтоб одинаковые данные были и там и там же. Номенклатура с единицами измерения, Сотрудники с регистрами должностей и т.д.
|
|||
67
Feanor
06.02.12
✎
12:07
|
(66) да ладно, можно что-то универсальное написать для этого.
|
|||
68
Maxus43
06.02.12
✎
12:12
|
(67) всё вместе одним махом в одном файле - вот и универсальность) загружено всё или ничего
|
|||
69
Feanor
06.02.12
✎
12:14
|
(68) по сути да, но автор ведь хочет извращений :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |