Вход | Регистрация

1С:Предприятие ::

Метки: 

Как проставить номер сообщения в план обмена?

Я
   Полотенчик
 
15.04.17 - 00:02
Если в плане обмена выбираешь измененные объекты методом ВыбратьИзменения(), то у него вторым параметром как раз указывается номер сообщения, который будет проставлен у выбранных данных. Но я хочу получить измененные данные с помощью запроса к таблице изменений, т.к. помимо самих данных в запросе надо получить еще дополнительные сведения. Как в таком случае проставить у измененных данных номер сообщения чтобы потом, после подтверждения загрузки данных, я мог убрать из плана обмена данный с этим номером сообщения?
 
 
   Полотенчик
 
1 - 15.04.17 - 12:27
Ап. Неужели никто с обменами не работал?
   Фрэнки
 
2 - 15.04.17 - 12:31
в самой таблице изменений не должно быть номера сообщения обмена. Там есть просто изменения, которые сами себя перезатирают, когда изменения происходят вновь
   Фрэнки
 
3 - 15.04.17 - 12:32
узел обмена есть. А номера сообщения не должно быть
   Полотенчик
 
4 - 15.04.17 - 13:54
(2) Как это не должны быть? А как тогда понять что уже было отправлено чтобы после подтверждения удалить?

Вот таблица изменений до отправления, номер сообщения:
https://yadi.sk/i/H2XC4bdy3GzdnF

Вот выбрал изменения с помощью метода ВыбратьИзменения(), присвоил номер сообщения 1 (для примера. мне надо проставлять номер сообщения без метода ВыбратьИзменения()):
https://yadi.sk/i/H2XC4bdy3GzdnF

Далее когда удаленный сервер пришлет подтверждение, что сообщение номер 1 успешно загружено, я удалю все изменения с номером 1, и они передаваться не будут.
   Полотенчик
 
5 - 15.04.17 - 13:55
Зачем вообще тогда запросы к таблицам изменений, если проставлять номера сообщений можно только выборкой методом ВыбратьИзменения()?
   Полотенчик
 
6 - 15.04.17 - 13:57
(4) вторая ссылка: https://vk.cc/6w0B1t
   МимохожийОднако
 
7 - 15.04.17 - 14:23
(5) зачем тебе этот несчастный номер?
   Полотенчик
 
8 - 15.04.17 - 16:22
(7) затем, чтобы сначала пометить то, что было отправлено в другое место, а затем, при получении подтверждения успешной загрузки, то, что отправлено убрать из списка изменений
именно таким же образом работают планы обмена..
   Beuenj
 
9 - 15.04.17 - 16:37
>> Но я хочу получить измененные данные с помощью запроса к таблице изменений, т.к. помимо самих данных в запросе надо получить еще дополнительные сведения

Извини глупый вопрос, но непонятно, что тебе надо. Нужны дополнительные данные? Ну получи их отдельным запросом?
   Полотенчик
 
10 - 15.04.17 - 17:03
(9) Пример: есть контрагент, есть его адреса, контакты, хранящиеся в регистрах. В 1С добавляют нового контрагента или меняют адрес или еще что-то - надо передать этим данные в другое место (левая база, не 1С; формирую xml в нужном формате, и его отдаю через веб-сервис).
Для этого регистрирую в плане обмена изменение контрагента, затем когда сторонняя база делает запрос на веб-сервис "ДайНовыхКонтрагентов()" я в 1С делаю запрос:
    "ВЫБРАТЬ
    |    КонтрагентыИзменения.Ссылка,
    |    КонтрагентыИзменения.Ссылка.Наименование КАК Наименование,
    |    КонтрагентыИзменения.Ссылка.ИНН КАК ИНН,
    |    КонтрагентыИзменения.Ссылка.ОсновнойБанковскийСчет.Банк.Нименование КАК БанкНаименование,
    |    КонтрагентыИзменения.Ссылка.ОсновнойБанковскийСчет.НомерСчета КАК НомерСчета,
    |КонтактнаяИнформация.Представление  КАК Адрес
    |ИЗ
    |    Справочник.Контрагенты.Изменения КАК КонтрагентыИзменения
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |        ПО КонтрагентыИзменения.Ссылка = КонтактнаяИнформация.Объект";

В результате у меня есть и измененные элементы, и все доп. данные, которые необходимы.
Осталось перебрать результат запроса, сформировать xml и сказать плану обмена: установи у такого-то узла у элемента Выборка.Ссылка номер сообщения "1". Но такого, видимо, нет...
Надо отдельно делать выборку изменений:
    ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(МойУзел, МойУзел.НомерОтправленного + 1);
    Пока ВыборкаИзменений.Следующий() Цикл
        ....
    КонецЦикла; 

Но здесь же в цикле я не буду получать доп. данные, т.к. запросы в цикле - бред.. Получается единственный вариант - выгрузить результат предыдущего запроса в таблицу значений, а в этом цикле искать строку с измененными данными в этой таблице, и уже тогда формировать xml, которую передавать на сторонний сервер.

Но зачем делать две выборки изменений когда в запросе уже все получено?
Понятно?
 
  Рекламное место пустует
   Полотенчик
 
11 - 15.04.17 - 17:07
Зачем вообще нужен запрос к таблице изменений, если потом это никак нельзя состыковать с регистрацией изменений и отправкой сообщений в удаленную базу?
   Фрэнки
 
12 - 15.04.17 - 19:34
(11) возьми старую версию какого-нибудь Бит-Финанс (для примера) и увидишь там весь этот ужас, который тебе сейчас покоя не дает. Если сравнишь это с текущей версией, то там это видно через регистры сведений с префиксом Удалить...

А подробно обсуждать лень. Но я бы с такой трактовкой обмена не заморачивался.


Список тем форума
  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует