|
КД2 - Удаление Документа в Удаление ЗаписиРегистра | ☑ | ||
---|---|---|---|---|
0
pishpish
28.01.19
✎
09:16
|
Есть правила, где Источник Документ (точнее ПроизвольныйАлгоритм по документу), а Приемник РегистрСведенийЗапись.
Нужно теперь, чтобы при удалении документа записи также удалялись. Как такую логику в правилах обмена реализовать? |
|||
1
azt-yur
28.01.19
✎
09:23
|
(0) Как вариант: в параметр через ПКС передавать ПометкуНаУдаление и после загрузки очищать набор записей если Истина.
|
|||
2
pishpish
28.01.19
✎
09:30
|
(1) В источнике документ удаляется из базы полностью. По идее есть такая штука как УдалениеОбъекта.. но как ее соединить с удалением записи в регистре..
|
|||
3
Ёпрст
28.01.19
✎
11:27
|
(0)
если в источнике есть хоть один план обмена с включенной авторегистрацией, все удяляемые ссылки будут в табличке изменений, пока их явно не прибьешь и не почистишь план обмена. Тогда тупо запросом достаешь все ссылки и пихаешь в кд отдельным правилом, по которому в приёмнике удаляешь записи |
|||
4
pishpish
28.01.19
✎
15:44
|
(3) Запросом достаешь битые ссылки?
|
|||
5
pishpish
28.01.19
✎
15:49
|
А кто скажет, допустим регистрируется к обмену НаборЗаписей регистра..
И происходит удаление набора в источнике.. Как для удаленного набора делать удаление в базе приемнике? |
|||
6
pishpish
28.01.19
✎
17:32
|
апну тему
|
|||
7
Ёпрст
28.01.19
✎
17:35
|
(4) да. по ним регистрация есть в
|
|||
8
Ёпрст
28.01.19
✎
17:36
|
(5) передать должен все измерения, чтоб там сделать отбор и запись
|
|||
9
pishpish
28.01.19
✎
17:39
|
(8) Еще раз уточню.. если набор записей регистрирую и передаю, то можно также при удалении набора его удалять в приемнике?
|
|||
10
Ёпрст
28.01.19
✎
17:42
|
(9) Твой регистр, есть хоть в одном плане обмена ?
При удалении, остаются записи по измерениям этого регистра в табличке изменений этого регистра. Их вытаскиваешь запросом и пихаешь в кд. в приёмнике ловишь, ставишь отбор и удаляешь записи. |
|||
11
Ёпрст
28.01.19
✎
17:43
|
это если выгрузка/загрузка по самодельным правилам
|
|||
12
pishpish
28.01.19
✎
17:50
|
(10) Чтото я не пойму как в таблице изменений могут остаться удаленные ссылки. Ладно, надо проверить.
|
|||
13
pishpish
29.01.19
✎
10:03
|
---
Народ, еще раз вопрос измененный - Есть Документ и РегистрНакопления, документ делает запись в регистр. Хочу переносить запись регистра накопления в приемник (а в приемнике превращать в запись регистра сведений). При этом при удалении записи регистра удалять запись в приемнике. Такая схема вообще возможна? |
|||
14
Ёпрст
29.01.19
✎
10:09
|
(13) возможна и работает
|
|||
15
pishpish
29.01.19
✎
10:12
|
(14) Если взять регистр Накопления с авторегистрацией.
В таком случае в таблицу изменений будет попадать запись только по регистратору. Если регистратор удалили, то что передавать то? |
|||
16
pishpish
29.01.19
✎
10:24
|
(14) Продолжаю тестить.. чето никак не пойму как устроена регистрация по Регистрам..
Еще упростим схему - Есть регистр сведений Независимый, он регистрируется в плане обмена по набору записей. Авторегистрация. Допустим попала в ТаблицуИзменений запись по измерениям. Теперь берем и удаляем запись в регистре. В таком случае все равно таблице изменеий остается такая строка. Разве это правильно? При выгрузке она же полетит. |
|||
17
Ёпрст
29.01.19
✎
10:26
|
(15) Открой наконец консоль запросов и посмотри
|
|||
18
pishpish
29.01.19
✎
10:30
|
(17) Все открыто.
Смотри.. создаем запись в регистре, в консоли в таблице изменений видим строку с набором измерений. Затем удаляем строку из регистра. В Таблице изменений строка осталась! |
|||
19
Ёпрст
29.01.19
✎
10:32
|
(18) пилять..
|
|||
20
Ёпрст
29.01.19
✎
10:36
|
Получаешь из этого запроса все измерения, по которым записи в регистре уже нема, но в изменениях она осталась, пихаешь ЭТО в КД... далее руками делаешь удаление этих записей из таблички изменений регистра:
|
|||
21
pishpish
29.01.19
✎
11:17
|
(19) Спасибо! как такой факт получить теперь понятно.
Все еще не совсем понимаю как провернуть это через Стандартную выборку, когда на вход подается запись регистра. |
|||
22
Альбатрос
29.01.19
✎
11:25
|
(21) Сделать не стандартную?
|
|||
23
Ёпрст
29.01.19
✎
11:29
|
(21) дык делай отдельным пвд. там свой запрос на получение записей и всё.
|
|||
24
pishpish
29.01.19
✎
11:35
|
(22) Когда в рамках плана обмена выгружается, то там возможна только Стандартная выгрузка. Произвольный алгоритм игнорится.
|
|||
25
pishpish
29.01.19
✎
11:39
|
(23) Я с темы на тему прыгаю сейчас.. видимо принцип все таки не понимаю.
Может еще раз подскажете в чем у меня ошибка в рассуждениях. 1. У меня есть регистр накопления, он регается в плане обмена, в таблице изменений конечно же сидит только регистратор. 2. Далее такая запись переносится в регистр сведений в базе приемник. -- Я хочу решить следующую проблему - при удаление записи в регистре накопления в базе источника, каким то образом затирать также перенесенную запись в регистре сведений. Не понимаю как связать эти таблицы, строки, понятия. |
|||
26
Ёпрст
29.01.19
✎
12:18
|
(25) ну и получай запросм свой регистратор и удаляй все записи по нему в рег сведений в приёмнике
|
|||
27
Ёпрст
29.01.19
✎
12:19
|
записи можешь выгружать через выгрузитьПоПравилу, которое воткнуть в ПередВыгрузкой в ПКО документа, который эту запись делает
|
|||
28
pishpish
29.01.19
✎
12:22
|
(27) А в том и дело, что я документ не выгружаю. Я только набор записей регистра накопления подаю на выгрузку.
Кроме того, у меня документ может быть удален непосредственно. В таком случае в регистраторе таблицы изменений будет сидеть <Объект не найден> (28:a20400155d28b42411e923a3e95d9af8) |
|||
29
Ёпрст
29.01.19
✎
12:23
|
(28) ну и что, ссылка то всё равно есть
|
|||
30
pishpish
29.01.19
✎
12:26
|
(29) Я примерно идею понял.
Она подразумевает что на стороне приемника у меня ссылка хранится. Видимо без этого никак. Придется хранить ссылку в строковом представлении и по переданному значению битой находить и удалять записи в регистре. |
|||
31
Ёпрст
29.01.19
✎
12:28
|
(30) у тя ссылка есть всегда и в источнике. Твой <объект не найден> это просто её представление, сама ссылка никуда не делась. передавай её и усё.
|
|||
32
pishpish
29.01.19
✎
12:32
|
(31) Допустим у меня есть ссылка и по этому отбору я хочу удалить записи в регистре сведений.
Там видимо нужно использовать трюки с ВыгрузитьРегистр().. а его в УниверсальнойОбработкаЗагрузкиДанныхХМЛ нет.. или я чето туплю.. что обеспечит мне очищение набора по ссылке? |
|||
33
pishpish
29.01.19
✎
12:52
|
(30) Я просто где еще запутался.. Ведь при удалении ссылок задействуется такая штука как УдалениеОбъекта(Ссылка) и такая хрень как то может передаваться через план обмена. Тут система сама работает.
А с регистром у меня получается какое то трюкачество, фактически через битые ссылки самому понимать что к чему. |
|||
34
Ёпрст
29.01.19
✎
13:30
|
(32) чет-то у вас всё время показания меняются... то документ в регистр, то регитрв регистр, то обмен по плану обмена, теперь вот обработка универсальнаяВыгрузка..
|
|||
35
pishpish
29.01.19
✎
13:39
|
Запись регистра Накопления в запись регистра Сведений.
При этом не хочу вводить сущность документ в приемник, там придется хранить строковое представление гуида. Обмен по плану обмена, но пока тестю в УниверсальнойВыгрузкеХМЛ. Вот. |
|||
36
Ёпрст
29.01.19
✎
13:41
|
Тогда делаешь ПКО РегистрНакопления.Нужный - РегистрСведения.Запись
если через планы обмена, то при распроведении дока, будет само выгружаться сведения об удаленной записи, там тэг ПустойНабор="true" будет в файле |
|||
37
Ёпрст
29.01.19
✎
13:42
|
и оно само будет удалять записи в рег сведений при загрузке.
Вообще делать ничего спецом не нужно, и запрос тоже не нужен |
|||
38
pishpish
29.01.19
✎
13:52
|
(37) Что прям в ПВД когда в объекте выборке стоит РегистрНакаоленияЗапись и прилетает Регистратор <Объект не найден> (28:a20400155d28b42411e923a3e95d9af8).. то как то может опустеть набор в приемнике регистра сведений?
У меня каша сейчас в голове и проверить не могу. Я понимаю схему когда приезжает битая ссылка и я через ВыгрузитьРегистр задаю отбор на мой битый гуид. В таком случае предполагаю что очистится. А твоя схему чет не понял, чтоб прям автоматически. |
|||
39
Ёпрст
29.01.19
✎
13:58
|
||||
40
Ёпрст
29.01.19
✎
14:00
|
B в ПВД тоже добавь свой регистр.
Далее выгружай по плану обмена. Для проверки, проводишь документ и отменяешь проведение, выгружаешь, смотришь файло обмена. Там будет запись с пустым набором. по нему твоя запись в рег сведений сама очистится |
|||
41
pishpish
29.01.19
✎
14:01
|
(40) Звучит хорошо.. а что это за правила?
|
|||
42
Ёпрст
29.01.19
✎
14:04
|
(41) Это пример, как сделать вам
|
|||
43
pishpish
29.01.19
✎
14:08
|
(42) Хорошо, спасибо! попробую.. думал мало ли может в типовых гдето делают так
|
|||
44
Ёпрст
29.01.19
✎
14:11
|
Типовые правила не выгружают регистр накопления как есть (отдельным ПКО) ибо на стороне приёмника, что в ОбменДаннымиXML что в УниверсальнойОбработкиXML нет кода обработки регистрНакопления.запись, есть только РегистрСведений.Запись.
Хотя данные и выгружаются |
|||
45
pishpish
29.01.19
✎
14:17
|
Подожди ка.. Ты сейчас убил меня)
А как тогда то? У меня БСП нет если что.. Я планировал выкрутиться УнивесальнойОбработкойХМЛ, ну максимум ОбменДаннымиХМЛ из старых типовых.. |
|||
46
Ёпрст
29.01.19
✎
14:20
|
(45) ёёё.. ты читать то будешь ?
У тебя будет всё хорошо, ибо тебе загружать нужно Регсведений. |
|||
47
pishpish
29.01.19
✎
14:23
|
(46) ААА ок.. ок.. фуфь
|
|||
48
pishpish
29.01.19
✎
15:01
|
(46) А я вот еще подумал.. если по регистру накопления в плане обмена все равно сидит Регистратор в таблице изменений..
То смысл мне эту запись регать, может тогда сразу сам документ и регистрировать. Там уже если нужно от него и влезу в регистр. |
|||
49
pishpish
29.01.19
✎
16:00
|
(46) Кстати, я провел небольшой тест -
Создал регистр накопления с авторегистрацией. При проведении значит в план обмена он регается, далее из простейших правил РН - РС через план обмена ну чтото выгружает. Далее если удалить док из базы, то в правилах вобоще перестает выгружать. |
|||
50
pishpish
29.01.19
✎
16:01
|
(46) То есть
Для проверки, проводишь документ и отменяешь проведение, выгружаешь, смотришь файло обмена. Там будет запись с пустым набором. по нему твоя запись в рег сведений сама очистится - не прокатило |
|||
51
Ёпрст
29.01.19
✎
16:02
|
(49) а нафига ты его удаляешь ? Просто распроведи
|
|||
52
Ёпрст
29.01.19
✎
16:02
|
(50) отмени проведение<> удали документ непосредственно
|
|||
53
Ёпрст
29.01.19
✎
16:03
|
Битые ссылки, возможно, не попадают автоматом в эти правила. Тогда нужно для них писать запрос
|
|||
54
Ёпрст
29.01.19
✎
16:04
|
Если обычная отмена проведения - то летит пустой набор в выгрузке
|
|||
55
pishpish
29.01.19
✎
16:11
|
(54) К сожалению при отмене пустой набор не летит.
Не получилось. |
|||
56
Ёпрст
29.01.19
✎
16:43
|
Тока проверил - всё летит.
|
|||
57
Ёпрст
29.01.19
✎
16:44
|
НаборЗаписейРегистра Нпп="1" Тип="РегистрНакопленияЗапись.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов" ИмяПравила="ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов" ПустойНабор="true">
<Отбор> <Свойство Имя="Регистратор" Тип="ДокументСсылка.РеализацияТоваровУслуг"><Ссылка> <Свойство Имя="{КлючПоискаВИБИсточнике}"> <Значение>{"#",6709bdcb-b7c6-4f18-823d-d1b66c0ffbd0,558:94f6005056851d4111e922dece4c5983}</Значение> </Свойство> <Свойство Имя="{ИмяТипаВИБИсточнике}"> <Значение>ДокументСсылка.РеализацияТоваровУслуг</Значение> </Свойство> <Свойство Имя="{УникальныйИдентификатор}"> <Значение>ce4c5983-22de-11e9-94f6-005056851d41</Значение> </Свойство> <Свойство Имя="Дата"> <Значение>2019-01-29T12:04:16</Значение> |
|||
58
Ёпрст
29.01.19
✎
16:44
|
вот такая запись в файле обмена
|
|||
59
ам794123
29.01.19
✎
16:55
|
(0) посмотри в каких нибудь типовых правилах обработчик _ПриПолученииИнформацииОбУдалении и сделай аналогично
|
|||
60
pishpish
29.01.19
✎
22:22
|
(57) У меня все еще не получается.
Давай опять на более простом примере. Я вот сейчас тестил. Смотри, все происходит по плану обмена. РегистрСведений рассмотрим как более простой пример. Запись передалется в запись, ок. Теперь в источнике я удаляю запись, в этот момент в таблице изменений продолжают сидеть значения как в примере из (19). И допустим произвольной выборкой такой можно собрать. Но по плану обмену, по узлу, по стандартной выборке ведь он даже не войдет выборку по регистру в таком случае. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |