|
v8: Как зарегистрировать в обмене удаленный объект | ☑ | ||
---|---|---|---|---|
0
Naivety_Friend
01.08.14
✎
18:13
|
Ситуация такая: один документ чек удаляют из базы (при этом регистрируются его изменения в плане обмена), затем очищается регистр изменений объектов в плане обмена. Затем необходимо заново зарегестрировать этот объект. Как это сделать?
Использую код ниже, но никакой реакции: УИД = "72604200-8048-a256-292b-bf8d11452e42"; Узел = ПланыОбмена.КБД.НайтиПоКоду("01"); Ссылка=Документы.Чек.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД)); Удаление = Новый УдалениеОбъекта(Ссылка); Удаление.Записать(); ПланыОбмена.ЗарегистрироватьИзменения(Узел, Удаление); |
|||
1
acsent
01.08.14
✎
18:16
|
А зачем записать? ведь это же само удаление
|
|||
2
Kupogun
01.08.14
✎
18:24
|
Удаление.Записать(); попробуй убрать.
после этой строчки уже нечего регистрировать |
|||
3
Naivety_Friend
01.08.14
✎
18:33
|
(1) (2) Убрал, не помогло.
|
|||
4
Naivety_Friend
01.08.14
✎
18:34
|
(2) В том и суть, что регистрировать уже как бы и "нечего", т.к. документ удалили вчера, а зарегестрировать это удаление мне нужно сегодня.
|
|||
5
Rlogin
01.08.14
✎
19:22
|
Зарегистрируй его в переферийной базе, он придет к тебе. ПОметишь его на удалени и он разойдется по базам.
|
|||
6
Naivety_Friend
01.08.14
✎
19:36
|
(5) Как-то бессмысленно! Мне же не нужен помеченный на удаление объект. Мне нужно, чтобы при обмене он удалился из перифирийной базы, т.к. он удален в главной.
|
|||
7
alle68
01.08.14
✎
21:39
|
(6) Свойство "ОбменДанными" объекта "Удаление" не поможет?
|
|||
8
Naivety_Friend
02.08.14
✎
02:33
|
(7) а что вы предлогаете там задать? Узел в свойстве "получатель"?
|
|||
9
alle68
02.08.14
✎
03:37
|
(8) Да, получателей заполнить.
|
|||
10
Defender aka LINN
02.08.14
✎
05:12
|
(0) Ссылку регистрируй
|
|||
11
Rlogin
02.08.14
✎
07:32
|
(6) Этот способ и позволит удалить обмен а не плясать с бубном.
|
|||
12
Naivety_Friend
02.08.14
✎
11:10
|
(10) битую?! Пробовал. Увы, не сработало...
|
|||
13
Defender aka LINN
02.08.14
✎
12:15
|
(12) Тогда самое время откинуться на кушетку и спросить - а в чем выражается это самое "не сработало"? Зарегистрировать удаление и выгрузить удаление куда-нибудь - это какбе разные вещи.
|
|||
14
Naivety_Friend
02.08.14
✎
17:37
|
(13) и в чем разница?!
Итовая цель: удалить в перифирийной базе тот объект, который удален в основной при помощи планов обмена. Логично, что для этого нужно зарегестрировать этот объект. Теперь что значит "не регистрируется": при удалении документа в регистр изменений попадает битая ссылка, т.е. если я по регистру Документ.Чек.Изменения сделаю запрос - получу такую строку. А когда пройдут обмены - документ удалится и в перифирийной базе. В моем случае документ удален и в регистре изменений нет записи - ее очистил другой код, который очищает полностью регистр изменений (сразу скажу, учитывая специфику задачи, я не могу в этой части что-то менять). И мне нужно добавить ее обратно неосоедственно перед тем, как запустятся обмены: т.е. у меня есть уид этого объекта и, соответсвенно, битая ссылка, которая должна попасть в регистр изменений перед обменами. Надеюсь достаточно разжевал... Есть решение, которое пока не реализовал, но придумал - создавать такой объект заново, записывать его и удалять тут же. Слишком криво и долго и потому надеюсь, что кто-то подскажет более простой способ! |
|||
15
Naivety_Friend
02.08.14
✎
19:26
|
(9) Глянул в синтаксис-помощнике - свойство Обмен Данными - только чтение. При этом в отладке его значение вообще почему-то нельзя прочитать - пишет "ошибка чтения значения".
|
|||
16
NcSteel
02.08.14
✎
19:43
|
На крайняк вручную в пакет добавь узел удаления, там пару строк....
Либо создай объект по ГУИДУ и удали его. |
|||
17
NcSteel
02.08.14
✎
19:44
|
(15) Так как он доступен у объекта.
|
|||
18
Лефмихалыч
02.08.14
✎
21:35
|
Я не понял, чего автор добивается. Зачем удалять, очищать регистрацию и регистрировать удаление отдельно?
|
|||
19
Naivety_Friend
02.08.14
✎
22:18
|
(18) "Зачем удалять, очищать регистрацию и регистрировать удаление отдельно".
Ну я ж не буду вам рассказывать весь проект! :) 1. "Зачем удалять, очищать регистрацию" - это один бизнес-процесс. 2. "регистрировать удаление отдельно" - это бизнес-процесс, который нужно реализовать мне. Вопрос - как мне сделать второй пункт. Складывается ощущение, что 1с просто не предусмотрели возможность зарегестрировать к изменению удаленный объект. PS Возможно (не проверял, т.к. не мой случай, но все же, возможно для вас это станет понятней) и даже скорей всего такая ситуация возникнет, если отключить автоматическую регистрацию объектов и удалить объект: регистрации удаления нет, а из перифирийной базы объект также нужно удалить - но тогда тем более странно, что 1с не предусмотрело такой случай. |
|||
20
Naivety_Friend
02.08.14
✎
22:23
|
(16) Вы имеете ввидду вносить изменения в XML? Возможно, хотя и не удобно.
Как раз пока так и решил - создаю объект по ГУИДу и удаляю его. Но как-то криво и, что хуже всего, долго. Долго потому что нельзя просто создать объект - нужно заполнить обязательные для заполнения реквизиты и только потом записать и удалить. Если потом надо будет переносить этот механизм на другой документ - нужно будет опять прописывать всен обязательные реквизиты. А если потом добавятся новые обязательные?! Ну в общем - как временное решение подошло, но, мне кажется, должен быть более адекватный способ. |
|||
21
Naivety_Friend
02.08.14
✎
22:23
|
(17) К сожалению не понял Вашей мысли.
|
|||
22
RomanYS
02.08.14
✎
22:24
|
(0) узел то какой указываешь?
|
|||
23
RomanYS
02.08.14
✎
22:27
|
Что показывает обработка регистрация изменений (или запрос по изменениям) после выполнения (0)?
|
|||
24
Лефмихалыч
02.08.14
✎
22:44
|
а какая полосатая религия мешает автору и чего именно добиться, я так и не допер. Регистрация удаления объекта работает - проверено многократно, какие могут быть с жтим проболемы, не догоняю
|
|||
25
ilya_i
02.08.14
✎
23:00
|
по удалению не подскажу, но при создании указать ОбменДанными.Загрузка=Истина, и глядишь скорость создания повыситься и обязательные реквизиты не обязательны. а вообще правильный вопрос уже прозвучал "что значит не срабатывает?"
|
|||
26
Defender aka LINN
03.08.14
✎
05:53
|
(14) Большая разница. Может у тебя в базе тупо код в модуле плана обмена имеется, который УдалениеОбъекта не выгружает. И хоть обрегистрируйся.
При выгрузке платформа проверяет наличие объекта по ссылке, и если он есть - выгружается объект, если его нет - выгружается УдалениеОбъекта, все просто как мычание. |
|||
27
Naivety_Friend
03.08.14
✎
11:36
|
(23) В том и вся суть проблемы, что запрос по регистру изменений показывает...ничего! Он просто пустой после выполнения кода в (0)
|
|||
28
Naivety_Friend
03.08.14
✎
11:37
|
(22) Перифирийный
|
|||
29
Naivety_Friend
03.08.14
✎
11:38
|
(24) Ну так если у вас работает, почему бы мне не написать код по которому у вас работает регистрация удаленного объекта?
|
|||
30
Naivety_Friend
03.08.14
✎
11:40
|
(26) У меня проблемы именно с регистрацией (что кстати еще в теме описано). В модулях планов обмена в принципе пусто, но это не имеет никакого отношения к вопросу, т.к. нужно именно ЗАРЕГЕСТРИРОВАТЬ - дальше все норм отрабатывает.
|
|||
31
Лефмихалыч
03.08.14
✎
11:43
|
(27) подозреваю, что где-то есть код, который мешает стандартному проведению платформы. Изучай подписки и прочие приЗаписи
|
|||
32
Лефмихалыч
03.08.14
✎
11:44
|
самое простое - включить замер производительности в отладчике, выполнить код (0) и потом просто посмотреть, что выполнялось, выключи замер
|
|||
33
Defender aka LINN
03.08.14
✎
14:32
|
(30) Пруф или GTFO. Помешать зарегистрировать объект не способно практически ничего.
|
|||
34
Naivety_Friend
03.08.14
✎
15:45
|
(31) При чем здесь проведение?
|
|||
35
Naivety_Friend
03.08.14
✎
16:26
|
(33) Вот вам пруф: https://www.dropbox.com/s/4jc8lbvulkoqtfw/1Cv8_пример_регистации_битой_ссылки.dt
Спецом написал на чистой конфигурации. Версия 8.3.4.408. |
|||
36
Naivety_Friend
03.08.14
✎
16:29
|
(35) Кнопки в обработке жмакать в порядке нумерации - при каждом нажатии в таблицу выгружается из запроса по регистру изменений.
|
|||
37
Лефмихалыч
03.08.14
✎
18:21
|
(34) а пРоведение-то и правда ни при чем. У вас там все такие наблюдательные или только вы?
(35) ваш пруф - фуфло: http://i.imgur.com/GEGpU6t.png |
|||
38
alle68
03.08.14
✎
22:59
|
(36) 8.2.19.106. Оба способа регистрируют.
Узел Номер сообщения Ссылка 2 <Объект не найден> (9:86d5000c2907253711e41b087fc88423) М.б., глюк движка? |
|||
39
Naivety_Friend
03.08.14
✎
23:58
|
(37) Я смотрю, вы такой умный - наверняка знаете решение.
По существу: А вы в какую версию 1с базу грузите? Точно полностью файл докачали? Я скачал и загрузил в базу - проблем не возникло. ЗЫ Возьмите еще и cf до кучи: https://www.dropbox.com/s/czpb9vwah45wzr4/1Cv8_registracia_ssylki.cf Но для cf-ки надо будет добавить узел с кодом 2. |
|||
40
Naivety_Friend
04.08.14
✎
00:00
|
(38) Вот это да... Может, в принципе и глюк движка... На всякий случай уточню: вы вначале нажали на кнопку 2 (очистили регистр) и тут же нажали на 3.1??? И после этого у вас отобразилась строка в таблице?
|
|||
41
Naivety_Friend
04.08.14
✎
00:05
|
(38) Проверил, действительно. На 8.2.18.109 отрабатывает регистрация.
На 8.2.19.83 и на 8.3.4.408 - нет. И у Вас вот отработало на 8.2.19.106 (у меня нет этой версии, потому сам проверить не могу). Через раз, что называется! (((( Что могу сказать, 1с "рулит", а вопрос закрыт... Всем спасибо... PS dt и cf еще некоторое время оставлю в дропбоксе, вдруг кому захочется убедиться - через пару дней грохну. |
|||
42
Bober
04.08.14
✎
10:23
|
(41) не смог скачать базу, но всё всегда работает есть сделать так:
УИД = "72604200-8048-a256-292b-bf8d11452e42"; Узел = ПланыОбмена.КБД.НайтиПоКоду("01"); Ссылка=Документы.Чек.ПолучитьСсылку(Новый УникальныйИдентификатор(УИД)); ПланыОбмена.ЗарегистрироватьИзменения(Узел, Ссылка); УдалениеОбъекта он немного для других целей. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |