|   |   | 
| 
 | Сравнение набора записей в регистре, нового и существующего | ☑ | ||
|---|---|---|---|---|
| 0
    
        NordMad 23.04.18✎ 15:13 | 
        Такой вопрос. при записи справочник, документа и т.д. при записи можно сравнить объект и ссылку чтобы понять что было изменено перед записью. вопрос - как провести такое же сравниение для регистра сведений. нашел только то что и ПриЗаписи и ПередЗаписью есть доступ к набору через ЭтотОбъект - где хранится новая запись. как мне сравнить с записью которую она заместит? (замещение =истина, вариант с запросом не предлагать, он очевиден, интересует есть ли возможность сделать это без запроса?)     | |||
| 1
    
        NordMad 23.04.18✎ 15:14 | 
        (0) регистр сведений если что имеется ввиду     | |||
| 2
    
        NordMad 23.04.18✎ 15:23 | 
        (0) если короче, мне просто нужно понять что меняется в записи регистра ПередЗаписью     | |||
| 3
    
        Mankubus 23.04.18✎ 15:25 | 
        (0) запрос религия запрещает? Самый лучший вариант     | |||
| 4
    
        NordMad 23.04.18✎ 15:31 | 
        (3) просто интересует есть ли вариант аналогичный при записи справочника или документа. вот и всё. альтернативны запросу     | |||
| 5
    
        Tateossian 23.04.18✎ 15:31 | 
        Для подчиненного регистратору легко - выгружаешь в таблицу значений, добавляешь колонку и заполняешь -1, читаешь методом прочитать(), добавляешь к этой же таблице, заполняя единицой, сворачиваешь по итератору - там, где -1 - это удаленные записи, там, где 1 - добавленные. Восстанавливаешь первоначальный набор.     | |||
| 6
    
        NordMad 23.04.18✎ 15:32 | 
        (5) да сорри, забыл сказать что регистр независимый и непериодический     | |||
| 7
    
        lEvGl гуру 23.04.18✎ 15:39 | 
        (4) альтернатива запросу - набор записей с нужным отбором, как в ЭтотОбъект     | |||
| 8
    
        RomanYS 23.04.18✎ 15:41 | 
        (4) У набора записей есть метод Прочитать()     | |||
| 9
    
        Tateossian 23.04.18✎ 15:41 | 
        (5) Для необъемного регистра сведений. Также, прочитать, только без установленного отбора. Записать. Еще раз прочитать. Выполнить функцию с итератором (проставленными статусами 1/-1). Сделать отбор, отбросив нули. Полученная таблица и будет результат изменений, в дополнительные свойства записать статус возврата, чтобы не дублировалась процедура записи.     | |||
| 10
    
        NordMad 23.04.18✎ 15:43 | 
        Т.е. создать наборЗаписей, пихнуть нужный объект и прочитать? правильно я вас понял?     | |||
| 11
    
        lEvGl гуру 23.04.18✎ 15:46 | 
        до того как ЭтотОбъект будет записан (завершится транзакция) набор в регистре будет еще "старый", если его прочитать в переззаписью(отбор можно взять из ЭтотОбъект), то получится старый вариант в созданном наборе и новый в ЭтотОбъект     | |||
| 12
    
        lEvGl гуру 23.04.18✎ 15:48 | 
        (10) наверно, хз что значит пихнуть нужный объект     | |||
| 13
    
        RomanYS 23.04.18✎ 15:50 | 
        (10) Если "пихнуть нужный объект" = установить отбор, то да правильно. Но это только "как альтернатива запросу", запрос лучше     | |||
| 14
    
        NordMad 23.04.18✎ 15:50 | 
        (12) ну создать набор, присвоить ему объект по которому будет сравнение и прочитать, потом сравнить с набором ЭтотОбъект     | |||
| 15
    
        NordMad 23.04.18✎ 15:51 | 
        (13) почему запрос лучше? быстрее работает чем прочитать?     | |||
| 16
    
        lEvGl гуру 23.04.18✎ 15:51 | 
        (13) вот тоже подумал, что запрос ничем не хуже, но там придется с текстом и параметрами "динамически" мутить     | |||
| 17
    
        lEvGl гуру 23.04.18✎ 15:53 | 
        отбор.загрузить(объект.отбор) что то в этом роде должно быть
 или хотя бы циклом отбор точно можно установить | |||
| 18
    
        NordMad 23.04.18✎ 15:53 | 
        (16) больше буков:) в запросе     | |||
| 19
    
        lEvGl гуру 23.04.18✎ 15:54 | 
        ну просто набор тут универсальнее по коду получается     | |||
| 20
    
        RomanYS 23.04.18✎ 15:54 | 
        (15) "почему" - по определению )), если вам нужно только прочитать данные - не ищите альтернативу запросу. 
 (18) плохой критерий | |||
| 21
    
        hhhh 23.04.18✎ 15:55 | 
        (10) в регистр сведений набор пишется в 2 этапа: удаление старой записи, потом запись новой. Поэтому ПередЗаписью надо Прочитать();  где-то запомнить, а потом когда второй раз вызовется ПередЗаписью сравнивать. Лучше поэтому не перед записью это делать, а отдельно, предварительно сравнить, перед Записать().     | |||
| 22
    
        NordMad 23.04.18✎ 15:56 | 
        (21) так что уже при начале ПередЗаписью старой записи уже нету?     | |||
| 23
    
        NordMad 23.04.18✎ 15:57 | 
        (20) да всё равно, регистр маленький по количеству записей     | |||
| 24
    
        NordMad 23.04.18✎ 15:58 | 
        текущийНабор = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();
 текущийНабор.Отбор.Объект = ЭтотОбъект.Отбор.Объект.Значение; текущийНабор.Прочитать(); так не работает | |||
| 25
    
        lEvGl гуру 23.04.18✎ 16:00 | 
        отбор коллекция вроде     | |||
| 26
    
        drei 23.04.18✎ 16:00 | 
        Это все бесполезно. Не существует метода отличить удаление - запись пустого набора, от первого этапа записи с замещением измененных данных. Даже передача чего-то через дополнительные свойства, так как экземпляры объектов будут разные.     | |||
| 27
    
        lEvGl гуру 23.04.18✎ 16:00 | 
        признак использование еще есть     | |||
| 28
    
        lEvGl гуру 23.04.18✎ 16:02 | 
        Установить() там где то должно быть     | |||
| 29
    
        lEvGl гуру 23.04.18✎ 16:03 | 
        ну а так да, лучше хтмл наверно     | |||
| 30
    
        lEvGl гуру 23.04.18✎ 16:03 | 
        29 - опс, не туда     | |||
| 31
    
        RomanYS 23.04.18✎ 16:07 | 
        (22) на момент первой записи ЭтотОбъект - пустой, из базы читается. На момент второй - наоборот     | |||
| 32
    
        NordMad 23.04.18✎ 16:11 | 
        (26) а мне надо чтобы сравнение шло с существующим, если записи нет или она удалена то и черт с ней     | |||
| 33
    
        drei 23.04.18✎ 16:51 | 
        (32) Еще раз и медленно. При записи с замещением все события набора вызываются два раза с разными объектами наборов. Первый раз - с пустым набором (есть данные в базе, нет данных в наборе) второй раз - с заполненным (нет данных в базе, есть в наборе). Эти два набора не связаны. Никак. Твои желания мирозданию похъ. На сервере глобальных переменных нет. Совсем.     | |||
| 34
    
        drei 23.04.18✎ 17:12 | 
        Можешь попробовать извратиться через модули с повторным использованием, уповая на то, что между вызовами не произойдет очистки по требованию. Хотя там один серверный вызов, может быть кэш на уровне вызова и получится.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |