| 
    
        
     
     | 
    
  | 
КД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). И допустим произвольной выборкой такой можно собрать. Но по плану обмену, по узлу, по стандартной выборке ведь он даже не войдет выборку по регистру в таком случае.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |