Имя: Пароль:
1C
1С v8
ПланыОбмена.УдалитьРегистрациюИзменений
,
0 Csar
 
14.08.13
10:46
Всем привет. Мозг что то совсем взорвался. Проследите, пожалуйста, цепочку размышленияи подскажите, почему не удаляется регистрация изменений в плане обмена?
Обработка, вызываемая регл. заданием. Тут частичный код.
Объявляем узелок:
    УзелОбмена = ПланыОбмена.ОбменЛогистика8_БИБ82.НайтиПоНаименованию("центр");
Далее смотрим все ли файлы выгрузок загружены во вторую базу (т.е. нет ли оставшихся файлов выгрузок в конкретной папке)? Если нету файлов, значит в узел записываем НомерПринятого такой же как и НомерОтправленного. Если же есть не загруженные файлы выгрузок, но в качестве НомерПринятого записываем минимальный номер из невыгруженных файлов выгрузки (у меня номер файла-наименование совпадает с НомерПринятого).
    Если МассивФайлов.Количество() > 0 Тогда
        НомерПоследнегоПолученного = ПолучитьНомерПакета(МассивФайлов[0].Имя) - 1;
        НомерПоследнегоОтправленного = ПолучитьНомерПакета(МассивФайлов[МассивФайлов.ВГраница()].Имя);
    Иначе
        НомерПоследнегоПолученного = УзелОбмена.НомерОтправленного;
        НомерПоследнегоОтправленного = УзелОбмена.НомерОтправленного;
    КонецЕсли;

    ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена, НомерПоследнегоПолученного);
    ОбъектУзелОбмена = УзелОбмена.ПолучитьОбъект();
    ОбъектУзелОбмена.НомерПринятого = НомерПоследнегоПолученного;
    ОбъектУзелОбмена.Записать();

Мы рассмотрим, когда все файлы загружены и удалены. Тогда перед очередной выгрузкой я удаляю регистрацию изменений до последнего выгруженного НомерОтправленного, т.е. все, вплоть до того, что выгрузилось в последний раз. При этом я умышленно изменил 1 документ, что бы сейчас выгрузить всего 1 документ, согласно регистрации документов. А на деле получается, что выгружается все, что и ранее выгружалось плюс этот документ, т.е. регистрация всего до последней выгрузки из плана обмена не удалилась. Почему?
1 Csar
 
14.08.13
10:48
(0) Да, обмен односторонний - выгрузка, но с затиранием регистрации уже выгруженных документов и загруженных оных в другую базу.
2 Csar
 
14.08.13
10:54
Когда я допобработкой стираю все регистрации документов, то ничгео не выгружается (понятное дело), и при изменении/добавлении соответвующих документов опять не происходит очистка регистрации узла и регистрация идет накопительным путем и файл выгрузки все больше становится, хотя у меня в условии стоит очистка регистрации от документов, которые уже ушли базу-приемник.
3 Csar
 
14.08.13
11:06
Я не понятно объяснил или просто не понятно почему не не удаляется регистрация?
4 hhhh
 
14.08.13
11:12
(3) может узел не тот? Точно узел "центр" - это у вас вторая база?
5 Csar
 
14.08.13
12:08
(4) узел тот, через него выгружается и у него удаляю регистрацию. Другого узла нигде не объявляю. Вообще да, там два узла - один с зеленой точкой, другой "центр" без зеленой точки
6 Maxus43
 
14.08.13
12:13
запросом к таблице изменений - увидищь наверняка, что зарегистрировано, и какой номер
7 Csar
 
14.08.13
12:14
(6) а как увидеть эту таблицу? Я могу запросом увидеть лишь НомерОтправленного и НомерПринятого
8 Maxus43
 
14.08.13
12:15
запросом к таблице ИЗМЕНЕНИЙ конкретного документа. нажми в конструкторе запросов кнопочку зелёную, над списком объектов конфы
9 Mitriy
 
14.08.13
12:16
на ИТС есть обработка РегистрацияИзмененийДляОбмена... все придумано за тебя...
10 Maxus43
 
14.08.13
12:17
(9) там номера нет
11 Csar
 
14.08.13
12:19
(8) Там действительно вместо Номера - Null
12 Maxus43
 
14.08.13
12:20
(11) значит не отправлен.
Номер проставляется при вызове метода ВыбратьИзменения
13 Maxus43
 
14.08.13
12:20
у меня такое чувство, что своим кодом ты пытаешся прописать то, что в платформу и механизхмы обмена вшито по умолчанию
14 Csar
 
14.08.13
12:26
(12) Этот метод получается надо вручную вызывать!? Видимо у меня не работает очистка регистрации по номеру именно из-за того, что номера и нету, хотя изменение есть и документы выгружаются стандартным "УниверсальныйОбменДаннымиXML" с подключенным к нему моим узлом в качестве отбора документов.
15 Рэйв
 
14.08.13
12:27
(0)При приеме ответа от базы отправленные изменения удаляются из регистрации автоматически.

Хватит турбовелосипеды изобратать:-)
16 Csar
 
14.08.13
12:28
(15) у меня односторонний ответ
17 Csar
 
14.08.13
12:28
тьфу, обмен, а не ответ)
18 Рэйв
 
14.08.13
12:29
(16)У меня тоже изменения идут только в одну стороны. Что не мешает мне формировать пустой ответ и принимать его обратно, который чистит уже отправленное
19 Рэйв
 
14.08.13
12:31
Как то так

в модуле плана обмена

Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
    Если ПараметрыСеанса.ПрефиксУзлаРаспределеннойИнформационнойБазы="ЦБУ" Тогда
            ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;    
    КонецЕсли;    
КонецПроцедуры
20 Рэйв
 
14.08.13
12:31
это будет формировать пустой ответ от базы приемника
21 Csar
 
14.08.13
12:35
(20) у меня нет РИБа. Я из одной базы выгружаю в файл документы, а другой базой подцепляю этот файлик.
Причем файлик выгружается путем вызова обработки (14).
22 Csar
 
14.08.13
12:35
А, торможу. Сейчас попробую в модуль самого плана обмена нарисовать процедурку.
23 Csar
 
14.08.13
12:43
(20) вписал код в МО плана, но без условия префикса = ничего не изменилось.
24 Рэйв
 
14.08.13
13:12
(23)Что именно не изменилось?
25 Csar
 
14.08.13
13:57
(24) номер как не проставлялся так и не проставляется в таблицах изменений