|
Почему данный код удаляет изменения из плана обмена? | ☑ | ||
---|---|---|---|---|
0
DTX 4th
30.01.20
✎
18:50
|
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Группа);
Выдержка из СП: Если в качестве первого параметра указан одиночный узел, то в параметре может быть указан номер сообщения. В этом случае метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра. |
|||
1
fisher
30.01.20
✎
18:58
|
Почему метод УдалитьРегистрациюИзменений() удаляет изменения? Ну, как бы это сказать... Карма у него такая.
|
|||
2
DTX 4th
30.01.20
✎
19:01
|
(1) Чукча не читатель?
НомерСообщения БОЛЬШЕ (НомерСообщения - 1) Что противоречит описанию: "метод УдалитьРегистрациюИзменений удаляет из всех таблиц регистрации изменений все записи относящиеся к указанному узлу, у которых номер сообщения меньше или равен значению второго параметра." |
|||
3
Волшебник
модератор
30.01.20
✎
19:05
|
(2) Какие Ваши доказательства?
https://www.youtube.com/watch?time_continue=1&v=l4XTAwu668M&feature=emb_title |
|||
4
DTX 4th
30.01.20
✎
19:18
|
(3) Код:
Служебные сообщения:
|
|||
5
Волшебник
модератор
30.01.20
✎
19:48
|
Дык ты проверь после вызова метода, может регистрация осталась
|
|||
6
DTX 4th
31.01.20
✎
01:28
|
(5) Вторая и третья итерации:
НомерСообщения = 9 Во второй после ПланыОбмена.ВыбратьИзменения(Узел, 9) получаем 1 запись: "Всего: 1" Потом удаляем регистрацию: ПланыОбмена.УдалитьРегистрациюИзменений(Узел, 9 - 1 = 8); И в третьей видим, что ПланыОбмена.ВыбратьИзменения(Узел, 9) возвращает уже 0 записей |
|||
7
alkov
31.01.20
✎
06:44
|
Поставьте выборку (а лучше запрос) после удаления регистрации изменений и убедитесь, что не удаляет. Кто знает, что у Вас там между итерациями происходит
|
|||
8
hhhh
31.01.20
✎
08:30
|
(6) вообще-то 9%2 = 1, а у вас регистрируется только НомерСообщения % 2 = 0
Похоже вы нам сюда какой-то левый кусок программы постите. |
|||
9
Фрэнки
31.01.20
✎
08:47
|
Возможно, что сейчас начнут кричать, что все на самом деле работает у всех как нужно, что все исключительно надежно...
Но я сталкивался неоднократно ранее и принял для себя за истину, что строчка кода с любым значением НомерСОобщения ПланыОбмена.УдалитьРегистрациюИзменений(Узел, НомерСОобщения); Удаляет по указанному узлу регистрацию всех объектов. Просто регистрация объектов удаляется и повторная попытка прочитать зарегистристрованные изменения после этого вызова по узлу вернет пустую выборку. |
|||
10
Папа Гапа
31.01.20
✎
09:25
|
(8) Одинэс все же сделала чтобы можно было левый и правый учет вести одновременно?
(0) В правом коде посмотри, может по белой удаляет. |
|||
11
fisher
31.01.20
✎
10:23
|
Выбрать...() - всегда выбирает ВСЕ изменения. Номер сообщения, который ты туда передаешь - это просто тот номер который, при этом проставляется для изменений в таблице изменений в качестве номера пакета, с которым они отправляются.
Но если эти изменения уже числятся в отправленных (уже стоит какой-то номер пакета, с которым они выгружались и он меньше указанного), то он вероятно меняться не будет. Это было бы логично. Может, в этом дело? ЗЫ. Почему ты не пользуешься запросами для получения промежуточных данных таблиц изменений? Это самый простой путь понять, что на самом деле происходит. |
|||
12
fisher
31.01.20
✎
10:30
|
Да и изначально ты тестируешь странный сценарий. Предполагается, что в Удалить...() ты передаешь номер пакета из квитанции (подтверждения другой стороной, что пакет с этим номером она загрузила).
Если чистить изменения сразу при отправке, то нет никакого смысла играться с номерами пакетов, ибо потеря любого пакета ведет к нарушению целостности обмена. |
|||
13
fisher
31.01.20
✎
10:37
|
Стандартный сценарий обмена - сначала чистишь таблицы регистрации по номеру пакета из квитанции (так как уже есть гарантии, что эти изменения загружены), а ПОСЛЕ этого выгружаешь оставшиеся (свежие) изменения из таблиц регистрации.
|
|||
14
DTX 4th
31.01.20
✎
14:11
|
(8) Рабочий кусок кода, ничего не меня.
Я ввел НомерСообщения = 8 Нажал Выполнить. Вывелось: Регистрируем
Ввел НомерСообщения = 9, два раза нажал Выполнить. Вывелось: Номенклатура1
|
|||
15
DTX 4th
31.01.20
✎
14:19
|
(10) Ничего не понял
(11) >Номер сообщения, который ты туда передаешь - это просто тот номер который, при этом проставляется для изменений в таблице изменений в качестве номера пакета, с которым они отправляются. Это я понимаю >то он вероятно меняться не будет В этом что-то есть. Подумаю. Подумал. Нет) Регистрирую изменения, выбираю для номера 9, удаляю для 8 - удаляются все (даже для 9) Запросами тоже смотрел. Кусок кода взял из обработка обмена (12) Я понимаю. Просто после прочтения мне надо удалить регистрацию прочтенных данных. Но они удалятся все. (13) Так вроде получается, что удалятся данные, которые были зареганы после отправки сообщения. Запутался |
|||
16
Мимохожий Однако
31.01.20
✎
14:23
|
Попробуй увеличить номер сообщения. Сам же привёл СП в (0)
|
|||
17
DTX 4th
31.01.20
✎
14:45
|
(11) >Но если эти изменения уже числятся в отправленных (уже стоит какой-то номер пакета, с которым они выгружались и он меньше указанного), то он вероятно меняться не будет. Это было бы логично. Может, в этом дело?
Да, ты прав. Если я выбираю изменения, которые уже были выбраны, номер сообщения не меняется. Было бы проще, если бы в СП была об этом пометка) И да, с запросом и правда проще оказалось) ========
Процедура Кнопка1Нажатие(Элемент)
Всем спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |