Добрый день. Используется УТ 10.3 и довольно старая версия модуля обмена (4.0.5.1), было замечено, что если во время выгрузки (выгрузка только изменений) сделать изменения, то регистрация этих изменений теряется, если в текущую выгрузку попал этот же объект.
Посмотрел по коду, в том числе и более новых версий, вплоть до 6.5, везде используется одна и та же модель:
1. Выборка изменений в регистр пакетов.
2. Выборка из регистр пакетов и отправка на сайт.
3. Очистка изменений (методом УдалитьРегистрациюИзменений с указанием объектов) и регистра пакетов.
Если между 1 и 3 произошли повторные изменения, то мы теряем регистрацию этих изменений, что не есть гуд.
В типовой выгрузке в составе конфигурации используются методы
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, ПараметрыОбмена.Ссылка);
Выборка = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);
и
ПланыОбмена.УдалитьРегистрациюИзменений(ПараметрыОбмена.Ссылка, ЗаписьСообщения.НомерСообщения);
то есть удаление регистрации происходит по номеру сообщения, и в таком случае этот момент отрабатывает корректно.
Ну и вопрос: как с этим бороться? Если это запланированное поведение, то странно, что о нем не написано в описании к модулю обмена, т.к., я уверен, для некоторых пользователей эта особенность могла бы являться существенной причиной их неиспользования и возврат к типовому обмену из состава конфигурации.
Посмотрел по коду, в том числе и более новых версий, вплоть до 6.5, везде используется одна и та же модель:
1. Выборка изменений в регистр пакетов.
2. Выборка из регистр пакетов и отправка на сайт.
3. Очистка изменений (методом УдалитьРегистрациюИзменений с указанием объектов) и регистра пакетов.
Если между 1 и 3 произошли повторные изменения, то мы теряем регистрацию этих изменений, что не есть гуд.
В типовой выгрузке в составе конфигурации используются методы
ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения();
ЗаписьСообщения.НачатьЗапись(ЗаписьXML, ПараметрыОбмена.Ссылка);
Выборка = ПланыОбмена.ВыбратьИзменения(ЗаписьСообщения.Получатель, ЗаписьСообщения.НомерСообщения);
и
ПланыОбмена.УдалитьРегистрациюИзменений(ПараметрыОбмена.Ссылка, ЗаписьСообщения.НомерСообщения);
то есть удаление регистрации происходит по номеру сообщения, и в таком случае этот момент отрабатывает корректно.
Ну и вопрос: как с этим бороться? Если это запланированное поведение, то странно, что о нем не написано в описании к модулю обмена, т.к., я уверен, для некоторых пользователей эта особенность могла бы являться существенной причиной их неиспользования и возврат к типовому обмену из состава конфигурации.