Имя: Пароль:
1C
1С v8
Настройка порядок выгрузки объектов в КД 2.1
, ,
0 Demetres
 
19.05.14
13:53
Добрый день! Подскажите как настроить порядок выгрузки объектов в КД 2.1?
Мне нужно чтобы документы всегда выгружались в определенном порядке Док1, Док2, ...., ДокПоследний, а не как сейчас ДокПоследний, ДокN, ...., Док2. В ПВД настроил приоритет выгрузки с учетом нужного порядка, но выгрузка идет совсем не по нему.
1 Demetres
 
19.05.14
14:08
Причем порядок в котором идет выгрузка всегда постоянный и не зависит от группировки в ПВД и выставленных приоритетов. Буду пока код смотреть обработки выгрузки. Может там найду ответ :(
2 SleepyHead
 
гуру
19.05.14
14:09
В таком случае, используй произвольный алгоритм, грузи документы в коллекцию ВыборкаДанных и сортируй ее так как тебе надо, а потом используй ВыгрузитьПоПравилу()
3 SleepyHead
 
гуру
19.05.14
14:10
Не понял, что называешь приоритетом. Приоритет у ПВД - это очередность срабатывания самого ПВД, приоритет у ПКО - это очередность применения ПКО, но никак не конкретного экземпляра выгружаемого объекта.
4 Demetres
 
19.05.14
14:13
(3) Пардон, а очередность срабатывания это разве не одно и тоже с порядком выгрузки?
Приоритет у ПВД это имелось ввиду "Порядок выполнения".
5 Demetres
 
19.05.14
14:17
Я понял. Нужно грузить не объекты по какой-то очереди а типы объектов. Сначала док-ты "ПриемНаРаботуВОрганизацию", потом док-ты "КадровоеПеремещениеОрганизаций", далее док-ты "УвольнениеИзОрганизаций"
6 Demetres
 
19.05.14
14:18
Извините что не понятно написал.
ТипДок-ов1, ТипДок-ов2, ...., ТипДок-овПоследний
7 SleepyHead
 
гуру
19.05.14
14:19
(5) Ну таки да, в первом приближении.
8 Demetres
 
19.05.14
14:21
(7) так как настроить этот порядок???
ТипДок-ов1, ТипДок-ов2, ...., ТипДок-овПоследний
9 SleepyHead
 
гуру
19.05.14
14:25
(8) настроить приоритет. Подвигать ПВД вверх/вниз при настройке правил. Сам не пробовал, не уверен что поможет

Если не поможет, то при выгрузке пометить первый вид документа, остальные пометки снять, выгрузить

Следующая итерация - второй вид документа, и так далее. Это грустный и унылый метод, конечно. Но сработает.
10 Demetres
 
19.05.14
14:33
(9) Про стрелки и "Порядок выполнения" почему-то не срабатывает, а выгружать сначала один тип документов потом другой не вариант. Но все равно спасибо за участие :)
11 SleepyHead
 
гуру
19.05.14
14:37
(10) открываем ПВД, на закладке "Дополнительно" ставим нужный приоритет - и потом в обработке обмена правила не так сортируются, как расставлены приоритеты? Так?
12 Demetres
 
19.05.14
14:41
(11) Да. Только в ПВД он называется "Порядок выполнения".
Сейчас по коду посмотрю что происходит.
13 SleepyHead
 
гуру
19.05.14
14:49
(12) напоминаю про вариант, озвученный в (2), что-то мне подсказывает, что он может сработать. Имя правила же указывается явно, в зависимости от вида документа.

Собрать все нужные документы в одну коллекцию, отсортировать в нужном порядке, потом обойти и применить метод ВыгрузитьПоПравилу()
14 SleepyHead
 
гуру
19.05.14
14:50
Плюс к этому в ПКО отключить флажок "Запоминать выгруженные объекты", чтобы все корректно сработало.
15 Demetres
 
19.05.14
15:00
В коде обработки "MD82Exp.epf" для получения изменений для узла обмена используется "ПланыОбмена.ВыбратьИзменения" он то и не понимает порядка который мы задаем в правилах конвертации. Тут нужно будет дописать что-то что бы сооблюдался порядок из правил.
(13) Тут много кодить нужно будет, и не понятно где хранить эту коллекцию.
16 Demetres
 
19.05.14
15:29
Вместо конструкции:
ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, МассивВыгружаемыхМетаданных);

используем:

        Для Каждого ЭлемМетаданных Из МассивВыгружаемыхМетаданных Цикл
        
            //ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, МассивВыгружаемыхМетаданных);
            ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения, ЭлемМетаданных);
            ...
        КонецЦикла;

и будет вам счастье и обход по порядку настроенном в правилах обмена для обработки "MD82Exp.epf" !-)
17 Demetres
 
19.05.14
15:53
Это кстати работает и для обработки ОбменДаннымиXML. Надеюсь будет кому-нибудь полезно.